<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ rustamdocstranslator - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ Browse thousands of programming tutorials written by experts. Learn Web Development, Data Science, DevOps, Security, and get developer career advice. ]]>
        </description>
        <link>https://www.freecodecamp.org/ukrainian/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ rustamdocstranslator - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/ukrainian/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Fri, 26 Jun 2026 20:03:35 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/ukrainian/news/author/rustamdocstranslator/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ Команда Linux LS: як вивести список файлів в каталозі + прапорці опції ]]>
                </title>
                <description>
                    <![CDATA[ З моменту створення Unix у 1970-х роках багато операційних систем використовували його як основу. Багато з цих операційних систем зазнали невдачі, тоді як інші досягли успіху. Linux є однією з найпопулярніших операційних систем на основі Unix. Вона має відкритий код та використовується в усьому світі в багатьох галузях. Однією з ]]>
                </description>
                <link>https://www.freecodecamp.org/ukrainian/news/komanda-linux-ls-yak-vyvesty-spysok-fayliv-v-katalozi-praportsi-optsiyi/</link>
                <guid isPermaLink="false">6477a97fa2cd4006419d61e6</guid>
                
                    <category>
                        <![CDATA[ linux ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ rustamdocstranslator ]]>
                </dc:creator>
                <pubDate>Tue, 09 Jan 2024 03:26:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/ukrainian/news/content/images/2024/01/article-banner-7.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Оригінальна публікація:</strong> <a href="https://www.freecodecamp.org/news/the-linux-ls-command-how-to-list-files-in-a-directory-with-options/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">The Linux LS Command – How to List Files in a Directory + Option Flags</a>
      </p><p>З моменту створення Unix у 1970-х роках багато операційних систем використовували його як основу. Багато з цих операційних систем зазнали невдачі, тоді як інші досягли успіху.</p><p>Linux є однією з найпопулярніших операційних систем на основі Unix. Вона має відкритий код та використовується в усьому світі в багатьох галузях.</p><p>Однією з дивовижних особливостей операційної системи Linux є інтерфейс командного рядка (CLI), який дозволяє користувачам взаємодіяти зі своїм комп’ютером з оболонки. Оболонка Linux — це середовище REPL (<strong>R</strong>ead, <strong>E</strong>valuate, <strong>P</strong>rint, <strong>L</strong>oop), де користувачі можуть ввести команду, а оболонка виконає її та поверне результат.</p><p>Команда <code>ls</code> є однією з багатьох команд Linux, які дозволяють користувачеві вивести список файлів або каталогів з CLI.</p><p>У цій статті ми детально розглянемо команду <code>ls</code> і деякі з найважливіших прапорців, які вам знадобляться.</p><h2 id="-"><strong>Передумови</strong></h2><ul><li>Комп’ютер з каталогами та файлами</li><li>Мати встановленим один із дистрибутивів Linux</li><li>Базові знання навігації командного рядка</li><li>Посмішка на обличчі :)</li></ul><h2 id="-ls-linux"><strong>Команда ls в Linux</strong></h2><p>Команду <code>ls</code> використовують, щоб вивести список файлів або каталогів у Linux та інших операційних системах на основі Unix.</p><p>Подібно до того, як ви переміщуєтеся у <em><em>File explorer</em></em> або <em>Finder</em> з графічного інтерфейсу користувача, команда <code>ls</code> дозволяє вивести список всіх файлів або каталогів в поточному каталозі за замовчуванням та далі взаємодіяти з ними за допомогою командного рядка.</p><p>Запустіть свій термінал та введіть <code>ls</code>, щоб побачити це в дії:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/news/content/images/2020/08/Screenshot-2020-08-20-at-9.40.29-PM.png" class="kg-image" alt="Screenshot-2020-08-20-at-9.40.29-PM" width="600" height="400" loading="lazy"></figure><h2 id="--1"><strong>Як вивести список файлів в каталозі, використовуючи опції</strong></h2><p>Команда <code>ls</code> приймає деякі прапорці (також відомі як опції), які є додатковою інформацією, яка змінює спосіб переліку файлів або каталогів у терміналі.</p><p>Іншими словами, прапорці змінюють те, як працює команда <code>ls</code>:</p><pre><code> ls [прапорці] [каталог]</code></pre><blockquote>Важливо: слово «<strong>вміст»</strong>, яке використовується по всій статті, стосується <strong>файлів та каталогів</strong> зі списку, а не фактичного вмісту файлів/каталогів.</blockquote><h3 id="--2"><strong>Виведіть список файлів у поточному робочому каталозі</strong></h3><p>Введіть команду <code>ls</code>, щоб вивести вміст поточного робочого каталогу:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/news/content/images/2020/08/Screenshot-2020-08-20-at-9.40.29-PM.png" class="kg-image" alt="Screenshot-2020-08-20-at-9.40.29-PM" width="600" height="400" loading="lazy"></figure><h3 id="--3"><strong>Виведіть список файлів у іншому каталозі</strong></h3><p>Введіть команду <code>ls [тут шлях до каталогу]</code>, щоб вивести вміст іншого каталогу:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/news/content/images/2020/08/Screenshot-2020-08-20-at-10.32.52-PM.png" class="kg-image" alt="Screenshot-2020-08-20-at-10.32.52-PM" width="600" height="400" loading="lazy"></figure><h3 id="--4"><strong>Виведіть список файлів в кореневому каталозі</strong></h3><p>Введіть команду <code>ls /</code>, щоб вивести вміст кореневого каталогу:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/news/content/images/2020/08/Screenshot-2020-08-20-at-10.46.10-PM.png" class="kg-image" alt="Screenshot-2020-08-20-at-10.46.10-PM" width="600" height="400" loading="lazy"></figure><h3 id="--5"><strong>Виведіть список файлів в батьківському каталозі</strong></h3><p>Введіть команду <code>ls ..</code>, щоб вивести вміст батьківського каталогу одним рівнем вище. Використайте <code>ls ../..</code> для вмісту двома рівнями вище:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/news/content/images/2020/08/Screenshot-2020-08-20-at-10.48.22-PM.png" class="kg-image" alt="Screenshot-2020-08-20-at-10.48.22-PM" width="600" height="400" loading="lazy"></figure><h3 id="-home-user-"><strong>Виведіть список файлів в домашньому каталозі користувача (/home/user)</strong></h3><p>Введіть команду <code>ls ~</code>, щоб вивести вміст в домашньому каталозі користувача:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/news/content/images/2020/08/Screenshot-2020-08-20-at-10.51.19-PM.png" class="kg-image" alt="Screenshot-2020-08-20-at-10.51.19-PM" width="600" height="400" loading="lazy"></figure><h3 id="--6"><strong>Виведіть список лише каталогів</strong></h3><p>Введіть команду <code>ls -d */</code>, щоб вивести лише каталоги:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/news/content/images/2020/08/Screenshot-2020-08-21-at-12.53.05-PM.png" class="kg-image" alt="Screenshot-2020-08-21-at-12.53.05-PM" width="600" height="400" loading="lazy"></figure><h3 id="--7"><strong>Виведіть список файлів з вкладеними каталогами</strong></h3><p>Введіть команду <code>ls *</code>, щоб вивести вміст каталогу з його вкладеними каталогами:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/news/content/images/2020/08/Screenshot-2020-08-21-at-1.07.54-PM.png" class="kg-image" alt="Screenshot-2020-08-21-at-1.07.54-PM" width="600" height="400" loading="lazy"></figure><h3 id="--8"><strong>Виведіть список рекурсивно</strong></h3><p>Введіть команду <code>ls -R</code>, щоб вивести усі файли та каталоги з відповідними вкладеними каталогами до останнього файлу:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/news/content/images/2020/09/Screenshot-2020-09-01-at-9.04.56-AM.png" class="kg-image" alt="Screenshot-2020-09-01-at-9.04.56-AM" width="600" height="400" loading="lazy"></figure><blockquote>Якщо у вас велика кількість файлів, це може зайняти багато часу, оскільки буде виведено кожен файл у кожному каталозі. Натомість ви можете вказати, у якому каталозі провести команду: <code>ls Downloads -R</code></blockquote><h3 id="--9"><strong>Виведіть список файлів з їхніми розмірами</strong></h3><p>Введіть команду <code>ls -s</code> (<strong>s</strong> у нижньому регістрі), щоб вивести файли або каталоги з їхніми розмірами:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/news/content/images/2020/08/Screenshot-2020-08-21-at-12.30.19-PM.png" class="kg-image" alt="Screenshot-2020-08-21-at-12.30.19-PM" width="600" height="400" loading="lazy"></figure><h3 id="--10"><strong>Виведіть список файлів у довгому форматі</strong></h3><p>Введіть команду <code>ls -l</code>, щоб вивести вміст каталогу у форматі таблиці зі стовпцями, яка містить:</p><ul><li>дозволи вмісту</li><li>кількість посилань на контент</li><li>власник вмісту</li><li>група власника вмісту</li><li>розмір вмісту в байтах</li><li>дата/час останньої зміни вмісту</li><li>назва файлу або каталогу</li></ul><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/news/content/images/2020/08/Screenshot-2020-08-20-at-10.52.37-PM.png" class="kg-image" alt="Screenshot-2020-08-20-at-10.52.37-PM" width="600" height="400" loading="lazy"></figure><h3 id="--11"><strong>Виведіть список файлів у довгому форматі з читабельними розмірами файлів</strong></h3><p>Введіть команду <code>ls -lh</code>, щоб вивести файли або каталоги у тому самому форматі таблиці, що й вище, але з іншим стовпцем, який представляє розмір кожного файлу/каталогу:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/news/content/images/2020/08/Screenshot-2020-08-21-at-12.14.33-PM.png" class="kg-image" alt="Screenshot-2020-08-21-at-12.14.33-PM" width="600" height="400" loading="lazy"></figure><p>Зауважте, що розміри вказуються в байтах (B), мегабайтах (MB), гігабайтах (GB) або терабайтах (TB), якщо розмір файлу чи каталогу перевищує 1024 байти.</p><h3 id="--12"><strong>Виведіть список файлів включно з прихованими файлами</strong></h3><p>Введіть команду <code>ls -a</code>, щоб вивести файли або каталоги, включно з прихованими файлами або каталогами. Все, що починається з <code>.</code> у Linux вважається прихованим файлом:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/news/content/images/2020/08/Screenshot-2020-08-21-at-11.12.26-AM.png" class="kg-image" alt="Screenshot-2020-08-21-at-11.12.26-AM" width="600" height="400" loading="lazy"></figure><h3 id="--13"><strong>Виведіть список файлів у довгому форматі, включно з прихованими файлами</strong></h3><p>Введіть команду <code>ls -l -a</code>, або <code>ls -a -l</code>, або <code>ls -la</code>, або <code>ls -al</code>, щоб вивести файли або каталоги у форматі таблиці з додатковою інформацією, включно з прихованими файлами або каталогами:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/news/content/images/2020/08/Screenshot-2020-08-21-at-12.17.01-PM.png" class="kg-image" alt="Screenshot-2020-08-21-at-12.17.01-PM" width="600" height="400" loading="lazy"></figure><h3 id="--14"><strong>Виведіть список файлів та відсортуйте їх за датою і часом</strong></h3><p>Введіть команду <code>ls -t</code>, щоб вивести файли або каталоги та відсортувати їх за датою останньої зміни в порядку спадання (від найбільшого до найменшого).</p><p>Ви можете додати прапорець <code>-r</code>, щоб змінити порядок сортування (<code>ls -tr</code>):</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/news/content/images/2020/08/Screenshot-2020-08-21-at-12.20.09-PM.png" class="kg-image" alt="Screenshot-2020-08-21-at-12.20.09-PM" width="600" height="400" loading="lazy"></figure><h3 id="--15"><strong>Виведіть список файлів та відсортуйте їх за розміром файлу</strong></h3><p>Введіть команду <code>ls -S</code> (<strong>S</strong> у верхньому регістрі), щоб вивести файли або каталоги та відсортувати їх за розміром в порядку спадання (від найбільшого до найменшого).</p><p>Ви можете додати прапорець <code>-r</code>, щоб змінити порядок сортування (<code>ls -Sr</code>):</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/news/content/images/2020/08/Screenshot-2020-08-21-at-12.20.38-PM.png" class="kg-image" alt="Screenshot-2020-08-21-at-12.20.38-PM" width="600" height="400" loading="lazy"></figure><h3 id="--16"><strong>Виведіть список файлів і виведіть результат у файл</strong></h3><p>Введіть команду <code>ls &gt; output.txt</code>, щоб вивести вихідні дані попередньої команди у файл <code>output.txt</code>. Ви можете використати будь-який з прапорців, які обговорювалися раніше (наприклад, <code>-la</code>). Ключовим моментом є те, що результат буде виведено у файл та не буде записано в командний рядок.</p><p>Потім ви можете використати файл або вивести вміст файлу за допомогою <code>cat output.txt</code>:</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2020/09/Screenshot-2020-09-01-at-9.12.59-AM.png" class="kg-image" alt="Screenshot-2020-09-01-at-9.12.59-AM" width="600" height="400" loading="lazy"><figcaption>.</figcaption></figure><h1 id="--17"><strong>Висновок</strong></h1><p>Існує багато інших команд та комбінацій, які ви можете дослідити, щоб вивести список файлів та каталогів відповідно до своїх потреб. Єдине, про що варто пам’ятати — можливість комбінувати кілька команд одночасно.</p><p>Уявіть, що ви хочете вивести список файлів у довгому форматі, включно з прихованими файлами, та відсортувати їх за розміром. Командою буде <code>ls -alS</code>, яка є комбінацією <code>ls -l</code>, <code>ls -a</code> та <code>ls -S</code>.</p><p>Якщо ви забули команду або не знаєте, що робити, запустіть <code>ls --help</code> або <code>man ls</code>, які відобразять посібник з усіма можливими опціями для команди <code>ls</code>:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/news/content/images/2020/09/Screenshot-2020-09-01-at-9.57.37-AM.png" class="kg-image" alt="Screenshot-2020-09-01-at-9.57.37-AM" width="600" height="400" loading="lazy"></figure><p>Дякую, що прочитали!</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Команда Linux cp: як копіювати файли в Linux ]]>
                </title>
                <description>
                    <![CDATA[ Існує декілька різних способів скопіювати та вставити вміст під час роботи за комп’ютером. Якщо ви проводите більше часу в інтерфейсі користувача свого пристрою, ви, ймовірно, використовуватимете мишу. Ви можете скопіювати файли, натиснувши на файл правою кнопкою миші та обравши «Копіювати», а потім перейти в інший каталог та обрати «Вставити». Якщо ]]>
                </description>
                <link>https://www.freecodecamp.org/ukrainian/news/komanda-linux-cp-yak-kopiyuvaty-fayly-v-linux/</link>
                <guid isPermaLink="false">6582d8fec7a3d203fb2b6858</guid>
                
                    <category>
                        <![CDATA[ linux ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ rustamdocstranslator ]]>
                </dc:creator>
                <pubDate>Sun, 07 Jan 2024 05:32:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/ukrainian/news/content/images/2024/01/linux-cp-command.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Оригінальна публікація:</strong> <a href="https://www.freecodecamp.org/news/the-linux-cp-command-how-to-copy-files-in-linux/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">The Linux cp Command – How to Copy Files in Linux</a>
      </p><p>Існує декілька різних способів скопіювати та вставити вміст під час роботи за комп’ютером.</p><p>Якщо ви проводите більше часу в інтерфейсі користувача свого пристрою, ви, ймовірно, використовуватимете мишу. Ви можете скопіювати файли, натиснувши на файл правою кнопкою миші та обравши «Копіювати», а потім перейти в інший каталог та обрати «Вставити».</p><p>Якщо ж ви використовуєте термінал, то ви також можете виконувати операції копіювання-вставлення файлів, не виходячи з термінала. У терміналі на базі Linux для цього використовують команду <code>cp</code>.</p><p>У цій статті я поясню, що таке команда <code>cp</code> та покажу, як копіювати та вставляти файли й каталоги в Linux за допомогою терміналу.</p><h2 id="-cp"><strong>Що таке команда <code>cp</code>?</strong></h2><p>Команду <code>cp</code> використовують, щоб копіювати файли з одного місця в інше. Ця команда також може копіювати каталоги (папки).</p><p>Синтаксис цієї команди:</p><pre><code class="language-bash">cp [...file/directory-sources] [destination]</code></pre><p><code>[file/directory-sources]</code> позначає джерела файлів або каталогів, які потрібно скопіювати. А аргумент <code>[destination]</code> позначає місце, куди потрібно скопіювати файл.</p><p>Щоб зрозуміти решту статті, я використаю цю структуру папки як приклад. Нехай каталог під назвою <strong><strong>DirectoryA</strong></strong> містить два каталоги: <strong><strong>DirectoryA_1</strong></strong> та <strong><strong>DirectoryA_2</strong></strong>. Ці вкладені каталоги містять багато файлів та інших вкладених каталогів.</p><p>Я також припускаю, що зараз ви перебуваєте в терміналі на <strong><strong>DirectoryA</strong></strong>, а якщо ні, то перейдіть до нього:</p><pre><code class="language-bash">cd DirectoryA</code></pre><h2 id="-cp-1"><strong>Як копіювати файли за допомогою команди <code>cp</code></strong></h2><p>Якщо ви хочете скопіювати файл, скажімо, <strong><strong>README.txt</strong></strong> з <strong><strong>DirectoryA_1</strong></strong> до <strong><strong>DirectoryA_2</strong></strong>, то використайте команду <code>cp</code> ось так:</p><pre><code class="language-bash">cp ./DirectoryA_1/README.txt ./DirectoryA_2
# ./DirectoryA_1/README.txt є вихідним файлом
# ./DirectoryA_2 є місцем призначення</code></pre><p>Якщо ви хочете скопіювати більше файлів з <strong><strong>DirectoryA_1</strong></strong> до <strong><strong>DirectoryA_2</strong></strong>, то використайте команду <code>cp</code> ось так:</p><pre><code class="language-bash">cp ./DirectoryA_1/README.txt ./DirectoryA_1/ANOTHER_FILE.txt ./DirectoryA_2</code></pre><p>Як бачите, спочатку ви розміщуєте всі вихідні файли, а останній аргумент є місцем призначення.</p><h2 id="-cp-2"><strong>Як копіювати каталоги за допомогою команди <code>cp</code></strong></h2><p>За замовчуванням команда <code>cp</code> працює з файлами. Отже, якщо ви спробуєте скопіювати каталог ось так:</p><pre><code class="language-bash">cp ./DirectoryA_1/Folder/ ./DirectoryA_2</code></pre><p>Ви отримаєте помилку:</p><p><strong><strong>./DirectoryA_1/Folder/ is a directory</strong></strong></p><p>Щоб скопіювати каталоги, потрібно передати прапорець <code>-r</code>. Цей прапорець інформує команду <code>cp</code> рекурсивно копіювати каталог та його вміст (яким можуть бути файли чи інші вкладені каталоги). Тому до попередньої команди ви можете додати прапорець перед джерелами каталогу, ось так:</p><pre><code class="language-bash">cp -r ./DirectoryA_1/Folder/ ./DirectoryA_2</code></pre><p>Ця команда рекурсивно скопіює каталог <strong><strong>Folder</strong></strong> до <strong><strong>./DirectoryA_1/</strong></strong>, а також усі файли та каталоги в каталозі <strong><strong>Folder</strong></strong>.</p><h2 id="-glob"><strong>Як копіювати файли, які відповідають шаблону glob</strong></h2><p>Шаблон glob подібний до регулярного виразу, який дозволяє зіставити декілька файлів з назвами, які відповідають певному шаблону. Дізнайтеся більше про різницю тут: <a href="https://dillionmegida.com/p/regex-vs-glob-patterns/">Regex vs шаблони Glob</a>.</p><p>Наприклад, якщо ви хочете скопіювати всі файли з <strong><strong>DirectoryA_1</strong></strong> з розширенням <strong>.txt</strong>, то виконайте цю команду:</p><pre><code class="language-bash">cp ./DirectoryA_1/*.txt ./DirectoryA_2</code></pre><p><code>./DirectoryA_1/*.txt</code> відповідає файлам з розширенням <code>.txt</code> у їхніх назвах, а команда <code>cp</code> може скопіювати всі ці файли до місця призначення.</p><p>Ви можете переглянути <a href="https://linux.die.net/man/7/glob">документацію glob</a>, щоб дізнатися більше про шаблони glob та символи, які можна використовувати.</p><p>Тепер ви знаєте, як копіювати файли (та каталоги) прямо з командного рядка. Дякую, що прочитали!</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Як відкрити Visual Studio Code зі свого термінала ]]>
                </title>
                <description>
                    <![CDATA[ У цьому посібнику ми розглянемо, як відкрити текстовий редактор VS Code (Visual Studio Code) із термінала Mac. Відкриття текстового редактора з термінала — це швидкий та простий спосіб відкрити нові проєкти та швидше почати кодувати. Як завантажити та відкрити VS Code Перше, що вам потрібно зробити — відкрити VS Code. ]]>
                </description>
                <link>https://www.freecodecamp.org/ukrainian/news/yak-vidkryty-visual-studio-code-zi-svoho-terminala/</link>
                <guid isPermaLink="false">647748a0a2cd4006419d6110</guid>
                
                    <category>
                        <![CDATA[ vscode ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ rustamdocstranslator ]]>
                </dc:creator>
                <pubDate>Wed, 07 Jun 2023 12:58:50 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/ukrainian/news/content/images/2023/06/code.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Оригінальна публікація:</strong> <a href="https://www.freecodecamp.org/news/how-to-open-visual-studio-code-from-your-terminal/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">How to Open Visual Studio Code From Your Terminal</a>
      </p><p>У цьому посібнику ми розглянемо, як відкрити текстовий редактор VS Code (Visual Studio Code) із термінала Mac.</p><p>Відкриття текстового редактора з термінала — це швидкий та простий спосіб відкрити нові проєкти та швидше почати кодувати.</p><h2 id="-vs-code"><strong>Як завантажити та відкрити VS Code</strong></h2><p>Перше, що вам потрібно зробити — відкрити VS Code. Якщо у вас ще немає VS Code, ви можете завантажити його <a href="https://code.visualstudio.com/">тут</a>. VS Code — це популярний текстовий редактор, створений Microsoft.</p><p>Коли ви відкриєте VS Code, він має виглядати так:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2022/01/image.png" class="kg-image" alt="image" width="600" height="400" loading="lazy"></figure><p>Потім запустіть <code>Command + Shift + P</code>.</p><p>Тепер ви повинні побачити це:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2022/01/image-1.png" class="kg-image" alt="image-1" width="600" height="400" loading="lazy"></figure><p>Ми відкрили палітру команд VS Code. Вона дозволить налаштувати параметри VS Code та багато іншого.</p><p>Потім в палітрі команд введіть <code>shell</code> та натисніть <code>Enter</code>. Коли ви вводите <code>shell</code>, ваш редактор має виглядати ось так:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2022/01/image-2.png" class="kg-image" alt="image-2" width="600" height="400" loading="lazy"></figure><p>Щойно ви натиснете enter, вуаля! Ви все зробили. Тепер ви повинні побачити повідомлення про успіх:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2022/01/image-3.png" class="kg-image" alt="image-3" width="600" height="400" loading="lazy"></figure><p>Тепер ви можете відкрити VS Code зі свого термінала. Зробимо це зараз.</p><h2 id="-vs-code-"><strong>Як відкрити VS Code з термінала</strong></h2><p>Спочатку відкрийте свій термінал. Ви можете відкрити свій термінал кількома способами. Один з них — одночасно натиснути кнопку <code>command</code> та <code>пробіл</code>. Це відкриває пошук Spotlight, де ви можете ввести «terminal».</p><p>Коли ваш термінал відкрито, ви можете відкрити з нього VS Code, ввівши <code>$ code .</code> Потім натисніть <code>enter</code>.</p><p>Це має виглядати ось так:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2022/01/image-4.png" class="kg-image" alt="image-4" width="600" height="400" loading="lazy"></figure><p>Після натискання <code>enter</code> відкриється VS Code.</p><p>Це все! Щасливого програмування. :)</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Приклад JSON stringify: як парсити об’єкт JSON за допомогою JS ]]>
                </title>
                <description>
                    <![CDATA[ JSON, або JavaScript Object Notation (укр. запис об’єктів JavaScript), оточує нас всюди. Якщо ви коли-небудь користувалися вебзастосунком, є велика ймовірність, що він використовував JSON для структурування, зберігання та передачі даних між своїми серверами та вашим пристроєм. У цій публікації ми коротко розглянемо відмінності між JSON та JavaScript, а потім перейдемо ]]>
                </description>
                <link>https://www.freecodecamp.org/ukrainian/news/pryklad-json-stringify-yak-parsyty-ob-yekt-json-za-dopomohoyu-js/</link>
                <guid isPermaLink="false">63ba9c12a65c1b06d972e684</guid>
                
                    <category>
                        <![CDATA[ JavaScript ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ rustamdocstranslator ]]>
                </dc:creator>
                <pubDate>Sun, 08 Jan 2023 17:33:56 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/ukrainian/news/content/images/2023/01/602358380a2838549dcc2554.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Оригінальна публікація:</strong> <a href="https://www.freecodecamp.org/news/json-stringify-example-how-to-parse-a-json-object-with-javascript/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">JSON Stringify Example – How to Parse a JSON Object with JS</a>
      </p><p>JSON, або JavaScript Object Notation (укр. <em>запис об’єктів JavaScript)</em>, оточує нас всюди. Якщо ви коли-небудь користувалися вебзастосунком, є велика ймовірність, що він використовував JSON для структурування, зберігання та передачі даних між своїми серверами та вашим пристроєм.</p><p>У цій публікації ми коротко розглянемо відмінності між JSON та JavaScript, а потім перейдемо до різних способів парсингу JSON за допомогою JavaScript у браузері та проєктах Node.js.</p><h2 id="-json-javascript">Відмінності між JSON та JavaScript</h2><p>Хоча JSON і виглядає як звичайний JavaScript, його краще вважати форматом даних, подібним до текстового файлу. Так сталося, що JSON надихається синтаксисом JavaScript, тому вони схожі.</p><p>Розглянемо об’єкти JSON і масиви JSON та порівняємо їх з відповідниками JavaScript.</p><h3 id="-json-vs-javascript">Об’єкти JSON vs літерали об’єктів JavaScript</h3><p>По-перше, ось об’єкт JSON:</p><figure class="kg-card kg-code-card"><pre><code class="language-json">{
  "name": "Jane Doe",
  "favorite-game": "Stardew Valley",
  "subscriber": false
}
</code></pre><figcaption>jane-profile.json</figcaption></figure><p>Основна відмінність між об’єктом JSON та звичайним об’єктом JavaScript, який також називають літералом об’єкта, полягає у лапках. Всі ключі та значення рядків в об’єкті JSON повинні бути в лапках (<code>"</code>).</p><p>Літерали об’єктів JavaScript трохи гнучкіші. В об’єктних літералах вам не потрібно брати ключі та рядки в лапки. Замість цього ви можете використати одинарні лапки (<code>'</code>) або взагалі не використовувати лапки для ключів.</p><p>Наведений вище код міг би виглядати ось так, якби був літералом об’єкта JavaScript:</p><pre><code class="language-js">const profile = {
  name: 'Jane Doe',
  'favorite-game': 'Stardew Valley',
  subscriber: false
}
</code></pre><p>Зверніть увагу, що ключ <code>'favorite-game'</code> в одинарних лапках. Для об’єктних літералів потрібно брати в лапки ключі, де слова розділені тире (<code>-</code>).</p><p>Якщо ви хочете уникнути лапок, ви можете переписати ключ, використавши верблюдячий регістр (<code>favoriteGame</code>) або розділивши слова підкресленням (<code>favorite_game</code>).</p><h3 id="-json-vs-javascript-1">Масиви JSON vs масиви JavaScript</h3><p>Масиви JSON працюють майже так само, як масиви в JavaScript, і можуть містити рядки, булеві значення, числа та інші об’єкти JSON. Наприклад:</p><figure class="kg-card kg-code-card"><pre><code class="language-json">[
  {
    "name": "Jane Doe",
    "favorite-game": "Stardew Valley",
    "subscriber": false
  },
  {
    "name": "John Doe",
    "favorite-game": "Dragon Quest XI",
    "subscriber": true
  }
]
</code></pre><figcaption>profiles.json</figcaption></figure><p>У звичайному JavaScript це може виглядати так:</p><pre><code class="language-js">const profiles = [
  {
    name: 'Jane Doe',
    'favorite-game': 'Stardew Valley',
    subscriber: false
  },
  {
    name: 'John Doe',
    'favorite-game': 'Dragon Quest XI',
    subscriber: true
  }
];</code></pre><h2 id="json-">JSON як рядок</h2><p>Може виникнути запитання: якщо існують об’єкти й масиви JSON, чи не можна було б використовувати їх у своїй програмі як звичайний літерал об’єкта чи масив JavaScript?</p><p>Так не можна зробити, оскільки насправді JSON — це простий рядок.</p><p>Наприклад, коли ви пишете JSON в окремому файлі, як-от згадані вище <code>jane-profile.json</code> чи <code>profiles.json</code>, цей файл насправді містить текст у формі об’єкта JSON або масиву, який виглядає як JavaScript.</p><p>І якщо виконати запит до API, повернеться щось схоже:</p><pre><code>{"name":"Jane Doe","favorite-game":"Stardew Valley","subscriber":false}</code></pre><p>Так само як і з текстовими файлами, якщо ви хочете використати JSON у своєму проєкті, вам потрібно буде проаналізувати або змінити його на щось, зрозуміле вашій мові програмування. Наприклад, парсинг об’єкта JSON в Python створить словник.</p><p>З цими знаннями розглянемо різні способи парсингу JSON в JavaScript.</p><h2 id="-json-">Як парсити JSON у браузері</h2><p>Якщо ви працюєте з JSON у браузері, ймовірно, ви отримуєте або надсилаєте дані через API.</p><p>Розглянемо декілька прикладів.</p><h3 id="-json-fetch">Як парсити JSON за допомогою <code>fetch</code></h3><p>Найпростіший спосіб отримати дані з API — використати <code>fetch</code>, який містить метод <code>.json()</code> для автомагічного парсингу відповідей JSON у придатний для використання літерал об’єкта або масив JavaScript.</p><p>Ось деякий код, який використовує <code>fetch</code>, щоб виконати запит <code>GET</code> для жарту з безоплатного <a href="https://api.chucknorris.io/">Chuck Norris Jokes API</a>:</p><pre><code class="language-js">fetch('https://api.chucknorris.io/jokes/random?category=dev')
  .then(res =&gt; res.json()) // метод .json() парсить відповідь JSON у літерал об’єкта JS
  .then(data =&gt; console.log(data));</code></pre><p>Якщо ви запустите цей код у браузері, то побачите щось схоже на консолі:</p><pre><code class="language-js">{
    "categories": ["dev"],
    "created_at": "2020-01-05 13:42:19.324003",
    "icon_url": "https://assets.chucknorris.host/img/avatar/chuck-norris.png",
    "id": "elgv2wkvt8ioag6xywykbq",
    "updated_at": "2020-01-05 13:42:19.324003",
    "url": "https://api.chucknorris.io/jokes/elgv2wkvt8ioag6xywykbq",
    "value": "Chuck Norris's keyboard doesn't have a Ctrl key because nothing controls Chuck Norris."
}</code></pre><p>Хоча це виглядає як об’єкт JSON, насправді це літерал об’єкта JavaScript, і ви можете вільно використовувати його у своїй програмі.</p><h3 id="-json-json-stringify-">Як перетворити JSON у рядок за допомогою <code>JSON.stringify()</code></h3><p>А якщо ви хочете надсилати дані до API?</p><p>Скажімо, ви хочете надіслати жарт про Чака Норріса до Chuck Norris Jokes API, щоб інші люди могли прочитати його пізніше.</p><p>Спочатку ви повинні написати свій жарт як літерал об’єкта JS:</p><pre><code class="language-js">const newJoke = {
  categories: ['dev'],
  value: "Chuck Norris's keyboard is made up entirely of Cmd keys because Chuck Norris is always in command."
};</code></pre><p>Тоді, оскільки ви надсилаєте дані до API, вам потрібно буде перетворити літерал об’єкта <code>newJoke</code> у рядок JSON.</p><p>На щастя, JavaScript містить надзвичайно корисний метод для цього — <code>JSON.stringify()</code>:</p><pre><code class="language-js">const newJoke = {
  categories: ['dev'],
  value: "Chuck Norris's keyboard is made up entirely of Cmd keys because Chuck Norris is always in command."
};

console.log(JSON.stringify(newJoke)); // {"categories":["dev"],"value":"Chuck Norris's keyboard is made up entirely of Cmd keys because Chuck Norris is always in command."}

console.log(typeof JSON.stringify(newJoke)); // string</code></pre><p>Хоча в цьому прикладі ми перетворюємо літерал об’єкта у рядок JSON, <code>JSON.stringify()</code> також працює з масивами.</p><p>Вкінці вам просто потрібно буде надіслати свій жарт-рядок JSON назад до API із запитом <code>POST</code>.</p><p>Зауважте, що Chuck Norris Jokes API насправді не має цієї функції. Але якби ця функція була, код був би схожим:</p><pre><code class="language-js">const newJoke = {
  categories: ['dev'],
  value: "Chuck Norris's keyboard is made up entirely of Cmd keys because Chuck Norris is always in command."
};

fetch('https://api.chucknorris.io/jokes/submit', { // fake API endpoint
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify(newJoke), // turn the JS object literal into a JSON string
})
  .then(res =&gt; res.json())
  .then(data =&gt; console.log(data))
  .catch(err =&gt; {
    console.error(err);
  });</code></pre><p>Таким чином ви проаналізували вхідний JSON із <code>fetch</code> та використали <code>JSON.stringify()</code> для перетворення літералу об’єкта JS у рядок JSON.</p><h3 id="-json--1">Як працювати з локальними файлами JSON у браузері</h3><p>На жаль, неможливо (або небажано) завантажити локальний файл JSON у браузер.</p><p><code>fetch</code> викине помилку, якщо ви спробуєте завантажити локальний файл. Скажімо, у вас є файл JSON з парою жартів:</p><figure class="kg-card kg-code-card"><pre><code class="language-json">[
  {
    "categories": ["dev"],
    "created_at": "2020-01-05 13:42:19.324003",
    "icon_url": "https://assets.chucknorris.host/img/avatar/chuck-norris.png",
    "id": "elgv2wkvt8ioag6xywykbq",
    "updated_at": "2020-01-05 13:42:19.324003",
    "url": "https://api.chucknorris.io/jokes/elgv2wkvt8ioag6xywykbq",
    "value": "Chuck Norris's keyboard doesn't have a Ctrl key because nothing controls Chuck Norris."
  },
  {
    "categories": ["dev"],
    "created_at": "2020-01-05 13:42:19.324003",
    "icon_url": "https://assets.chucknorris.host/img/avatar/chuck-norris.png",
    "id": "ae-78cogr-cb6x9hluwqtw",
    "updated_at": "2020-01-05 13:42:19.324003",
    "url": "https://api.chucknorris.io/jokes/ae-78cogr-cb6x9hluwqtw",
    "value": "There is no Esc key on Chuck Norris' keyboard, because no one escapes Chuck Norris."
  }
]
</code></pre><figcaption>jokes.json</figcaption></figure><p>Ви хочете проаналізувати його та створити список жартів на звичайній сторінці HTML.</p><p>Якщо ви створите сторінку з наступним кодом і відкриєте її у своєму браузері:</p><figure class="kg-card kg-code-card"><pre><code class="language-html">&lt;!DOCTYPE html&gt;
&lt;html&gt;
  &lt;head&gt;
    &lt;meta charset="utf-8" /&gt;
    &lt;meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /&gt;
    &lt;meta name="viewport" content="width=device-width" /&gt;
    &lt;title&gt;Fetch Local JSON&lt;/title&gt;
  &lt;/head&gt;
  &lt;script&gt;
    fetch("./jokes.json", { mode: "no-cors" }) // disable CORS because path does not contain http(s)
      .then((res) =&gt; res.json())
      .then((data) =&gt; console.log(data));
  &lt;/script&gt;
&lt;/html&gt;
</code></pre><figcaption>index.html</figcaption></figure><p>На консолі ви побачите:</p><pre><code>Fetch API cannot load file://&lt;path&gt;/jokes.json. URL scheme "file" is not supported
</code></pre><p>Браузери не дозволяють доступ до локальних файлів за замовчуванням з міркувань безпеки. Це добре, і вам не варто намагатися обійти цю поведінку.</p><p>Натомість можна перетворити локальний файл JSON у JavaScript. На щастя, це досить легко, оскільки синтаксис JSON дуже схожий на JavaScript.</p><p>Все, що вам потрібно зробити, це створити новий файл і оголосити свій JSON як змінну:</p><figure class="kg-card kg-code-card"><pre><code class="language-js">const jokes = [
  {
    "categories": ["dev"],
    "created_at": "2020-01-05 13:42:19.324003",
    "icon_url": "https://assets.chucknorris.host/img/avatar/chuck-norris.png",
    "id": "elgv2wkvt8ioag6xywykbq",
    "updated_at": "2020-01-05 13:42:19.324003",
    "url": "https://api.chucknorris.io/jokes/elgv2wkvt8ioag6xywykbq",
    "value": "Chuck Norris's keyboard doesn't have a Ctrl key because nothing controls Chuck Norris."
  },
  {
    "categories": ["dev"],
    "created_at": "2020-01-05 13:42:19.324003",
    "icon_url": "https://assets.chucknorris.host/img/avatar/chuck-norris.png",
    "id": "ae-78cogr-cb6x9hluwqtw",
    "updated_at": "2020-01-05 13:42:19.324003",
    "url": "https://api.chucknorris.io/jokes/ae-78cogr-cb6x9hluwqtw",
    "value": "There is no Esc key on Chuck Norris' keyboard, because no one escapes Chuck Norris."
  }
]</code></pre><figcaption>jokes.js</figcaption></figure><p>І додати його на свою сторінку як окремий скрипт:</p><pre><code class="language-html">&lt;!DOCTYPE html&gt;
&lt;html&gt;
  &lt;head&gt;
    &lt;meta charset="utf-8" /&gt;
    &lt;meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /&gt;
    &lt;meta name="viewport" content="width=device-width" /&gt;
    &lt;title&gt;Fetch Local JSON&lt;/title&gt;
  &lt;/head&gt;
  &lt;script src="jokes.js"&gt;&lt;/script&gt;
  &lt;script&gt;
    console.log(jokes);
  &lt;/script&gt;
&lt;/html&gt;</code></pre><p>Ви зможете вільно використовувати масив <code>jokes</code> у своєму коді.</p><p>Ви також можете використовувати <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules"><code>модулі</code></a> JavaScript, щоб зробити те саме, але це виходить за межі публікації.</p><p>А якщо ви хочете працювати з локальними файлами JSON і маєте встановлений Node.js? Давайте розглянемо, як це зробити.</p><h2 id="-json-node-js">Як парсити JSON у Node.js</h2><p>Node.js — це середовище виконання JavaScript, яке дозволяє запустити JavaScript поза браузером. Ви можете прочитати все про <a href="https://www.freecodecamp.org/news/the-definitive-node-js-handbook-6912378afc6e/">Node.js тут</a>.</p><p>Незалежно від того, чи ви використовуєте Node.js для запуску коду локально на своєму комп’ютері чи для запуску цілих вебзастосунків на сервері, корисно знати, як працювати з JSON.</p><p>Для наступних прикладів ми використовуватимемо той самий файл <code>jokes.json</code>:</p><figure class="kg-card kg-code-card"><pre><code class="language-json">[
  {
    "categories": ["dev"],
    "created_at": "2020-01-05 13:42:19.324003",
    "icon_url": "https://assets.chucknorris.host/img/avatar/chuck-norris.png",
    "id": "elgv2wkvt8ioag6xywykbq",
    "updated_at": "2020-01-05 13:42:19.324003",
    "url": "https://api.chucknorris.io/jokes/elgv2wkvt8ioag6xywykbq",
    "value": "Chuck Norris's keyboard doesn't have a Ctrl key because nothing controls Chuck Norris."
  },
  {
    "categories": ["dev"],
    "created_at": "2020-01-05 13:42:19.324003",
    "icon_url": "https://assets.chucknorris.host/img/avatar/chuck-norris.png",
    "id": "ae-78cogr-cb6x9hluwqtw",
    "updated_at": "2020-01-05 13:42:19.324003",
    "url": "https://api.chucknorris.io/jokes/ae-78cogr-cb6x9hluwqtw",
    "value": "There is no Esc key on Chuck Norris' keyboard, because no one escapes Chuck Norris."
  }
]</code></pre><figcaption>jokes.json</figcaption></figure><h3 id="-json-require-">Як парсити файл JSON за допомогою <code>require()</code></h3><p>Почнемо з найпростішого методу.</p><p>Якщо у вас є локальний файл JSON, вам потрібно лише використати <code>require()</code>, щоб завантажити його, як і будь-який інший модуль Node.js:</p><pre><code class="language-js">const jokes = require('./jokes.json');</code></pre><p>Файл JSON буде автоматично аналізований, і ви зможете використовувати його у своєму проєкті:</p><pre><code class="language-js">const jokes = require('./jokes.json');

console.log(jokes[0].value); // "Chuck Norris's keyboard doesn't have a Ctrl key because nothing controls Chuck Norris."</code></pre><p>Зверніть увагу, що це синхронно, тобто ваша програма зупиниться, доки весь файл не буде проаналізований. Дійсно великі файли JSON можуть спричинити сповільнення вашої програми, тому будьте обережні з цим.</p><p>Також, оскільки парсинг JSON таким чином завантажує все в пам’ять, краще використовувати цей метод для статичних файлів JSON. Якщо файл JSON зміниться під час роботи програми, ви не матимете доступу до цих змін, доки не перезапустите програму та не проаналізуєте оновлений файл JSON.</p><h3 id="-json-fs-readfilesync-json-parse-">Як парсити файл JSON за допомогою <code>fs.readFileSync()</code> та <code>JSON.parse()</code></h3><p>Традиційніший спосіб (через відсутність кращого терміну) парсингу файлів JSON у проєктах Node.js — прочитати файл за допомогою <code>fs</code> (файлова система), а потім проаналізувати за допомогою <code>JSON.parse()</code>.</p><p>Подивимося, як це зробити з методом <code>fs.readFileSync()</code>. Спочатку додайте модуль <code>fs</code> до свого проєкту:</p><pre><code class="language-js">const fs = require('fs');
</code></pre><p>Потім створіть нову змінну для зберігання виводу файлу <code>jokes.json</code> та встановіть для неї значення <code>fs.readFileSync()</code>:</p><pre><code class="language-js">const fs = require('fs');
const jokesFile = fs.readFileSync();</code></pre><p><code>fs.readFileSync()</code> приймає декілька аргументів. Першим є шлях до файлу, який ви хочете прочитати:</p><pre><code class="language-js">const fs = require('fs');
const jokesFile = fs.readFileSync('./jokes.json');</code></pre><p>Але якщо зараз ви введете <code>jokesFile</code> на консолі, то побачите щось подібне:</p><pre><code>&lt;Buffer 5b 0a 20 20 7b 0a 20 20 20 20 22 63 61 74 65 67 6f 72 69 65 73 22 3a 20 5b 22 64 65 76 22 5d 2c 0a 20 20 20 20 22 63 72 65 61 74 65 64 5f 61 74 22 3a ... 788 more bytes&gt;</code></pre><p>Це означає, що модуль <code>fs</code> читає файл, але він не знає кодування чи формат файлу. <code>fs</code> можна використовувати для завантаження майже будь-якого файлу, а не лише текстових, як-от JSON, тому нам потрібно сказати, як файл закодовано.</p><p>Для текстових файлів зазвичай використовують <code>utf8</code>:</p><pre><code class="language-js">const fs = require('fs');
const jokesFile = fs.readFileSync('./jokes.json', 'utf8');</code></pre><p>Якщо зараз ввести <code>jokesFile</code> на консолі, ви побачите вміст файлу.</p><p>Але поки що ми просто читаємо файл, і він досі є рядком. Нам знадобиться використати інший метод, щоб розібрати <code>jokesFile</code> у придатний для використання об’єкт або масив JavaScript.</p><p>Для цього ми використаємо <code>JSON.parse()</code>:</p><pre><code class="language-js">const fs = require('fs');
const jokesFile = fs.readFileSync('./jokes.json', 'utf8');
const jokes = JSON.parse(jokesFile);

console.log(jokes[0].value); // "Chuck Norris's keyboard doesn't have a Ctrl key because nothing controls Chuck Norris."</code></pre><p>Як випливає з назви, <code>JSON.parse()</code> бере рядок JSON та аналізує його в літерал об’єкта або масив JavaScript.</p><p>Подібно до наведеного вище методу <code>require</code>, <code>fs.readFileSync()</code> також синхронний метод, а це означає що він може призвести до сповільнення вашої програми, якщо вона читає великий файл (JSON чи інший).</p><p>Крім того, він читає файл лише один раз та завантажує його в пам’ять. Якщо файл змінюється, вам потрібно буде прочитати файл знову. Для полегшення ви можете створити функцію для читання файлів.</p><p>Ось як це може виглядати:</p><pre><code class="language-js">const fs = require('fs');
const readFile = path =&gt; fs.readFileSync(path, 'utf8');

const jokesFile1 = readFile('./jokes.json');
const jokes1 = JSON.parse(jokesFile1);

console.log(jokes1[0].value); // "Chuck Norris's keyboard doesn't have a Ctrl key because nothing controls Chuck Norris."

// the jokes.json file changes at some point

const jokesFile2 = readFile('./jokes.json');
const jokes2 = JSON.parse(jokesFile2);

console.log(jokes2[0].value); // "Chuck Norris's keyboard is made up entirely of Cmd keys because Chuck Norris is always in command."</code></pre><h3 id="-json-fs-readfile-json-parse-">Як парсити JSON за допомогою <code>fs.readFile()</code> та <code>JSON.parse()</code></h3><p>Метод <code>fs.readFile()</code> дуже схожий на <code>fs.readFileSync()</code>, але він працює асинхронно. Це чудово, якщо у вас є великий файл для читання, і ви не хочете, щоб він затримував решту вашого коду.</p><p>Ось базовий приклад:</p><pre><code class="language-js">const fs = require('fs');

fs.readFile('./jokes.json', 'utf8');</code></pre><p>Поки що це виглядає подібно до того, що ми робили з <code>fs.readFileSync()</code>, за винятком того, що ми не призначаємо його змінній, як-от <code>jokesFile</code>. Оскільки цей метод асинхронний, будь-який код після <code>fs.readFile()</code> буде виконано до завершення читання файлу.</p><p>Замість цього ми використаємо функцію зворотного виклику та проаналізуємо JSON у ній:</p><pre><code class="language-js">const fs = require('fs');

fs.readFile('./jokes.json', 'utf8', (err, data) =&gt; {
  if (err) console.error(err);
  const jokes = JSON.parse(data);

  console.log(jokes[0].value);
});

console.log("This will run first!");</code></pre><p>На консолі буде виведено наступне:</p><pre><code>This will run first!
Chuck Norris's keyboard doesn't have a Ctrl key because nothing controls Chuck Norris.</code></pre><p>Подібно до <code>fs.readFileSync()</code>, <code>fs.readFile()</code> завантажує файл у пам’ять, а це означає, що вам доведеться прочитати файл знову, якщо він зміниться.</p><p>Крім того, всупереч тому, що <code>fs.readFile()</code> є асинхронним, він завантажує весь файл, який читає, у пам’ять. Якщо у вас масивний файл, можливо, краще переглянути <a href="https://www.freecodecamp.org/news/node-js-streams-everything-you-need-to-know-c9141306be93/">потоки Node.js</a>.</p><h3 id="-json-json-stringify-node-js">Як перетворити JSON у рядок за допомогою <code>JSON.stringify()</code> у Node.js</h3><p>Зрештою, якщо ви аналізуєте JSON за допомогою Node.js, є великі шанси, що колись вам доведеться повернути JSON як відповідь API.</p><p>На щастя, це працює так само, як і в браузері: просто використайте <code>JSON.stringify()</code>, щоб перетворити літерали об’єктів або масивів JavaScript &nbsp;у рядок JSON:</p><pre><code class="language-js">const newJoke = {
  categories: ['dev'],
  value: "Chuck Norris's keyboard is made up entirely of Cmd keys because Chuck Norris is always in command."
};

console.log(JSON.stringify(newJoke)); // {"categories":["dev"],"value":"Chuck Norris's keyboard is made up entirely of Cmd keys because Chuck Norris is always in command."}</code></pre><p>Це все! Ми розглянули практично все, що вам потрібно знати про роботу з JSON у браузері та проєктах Node.js.</p><p>А тепер вирушайте та перетворюйте JSON в рядки чи аналізуйте їх скільки душі завгодно.</p><p>Я щось пропустив? Як ви аналізуєте JSON у своїх проєктах? Дайте мені знати у <a href="https://twitter.com/kriskoishigawa">твіттері</a>.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ forEach у JavaScript: як циклічно переглянути масив у JS ]]>
                </title>
                <description>
                    <![CDATA[ Метод forEach у JavaScript — це один із декількох способів пройти масив циклічно. Кожен метод має свої особливості, і вам, залежно від того, що ви робите, вирішувати, який з них використовувати. У цій публікації ми докладніше розглянемо метод forEach у JavaScript. Враховуючи, що ми маємо наступний масив: const числа = ]]>
                </description>
                <link>https://www.freecodecamp.org/ukrainian/news/foreach-u-javascript-yak-tsyklichno-perehlyanuty-masyv-u-js/</link>
                <guid isPermaLink="false">63023f551176440771bf45cc</guid>
                
                    <category>
                        <![CDATA[ JavaScript ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ rustamdocstranslator ]]>
                </dc:creator>
                <pubDate>Fri, 25 Nov 2022 06:03:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/ukrainian/news/content/images/2022/08/4FF9B0F5-83C5-44E4-9C89-BAC78F00FD3E.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Оригінальна публікація:</strong> <a href="https://www.freecodecamp.org/news/javascript-foreach-how-to-loop-through-an-array-in-js/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">JavaScript forEach – How to Loop Through an Array in JS</a>
      </p><p>Метод forEach у JavaScript — це один із декількох способів пройти масив циклічно. Кожен метод має свої особливості, і вам, залежно від того, що ви робите, вирішувати, який з них використовувати.</p><p>У цій публікації ми докладніше розглянемо метод forEach у JavaScript.</p><p>Враховуючи, що ми маємо наступний масив:</p><pre><code class="language-javascript">const числа = [1, 2, 3, 4, 5];</code></pre><p>Використання традиційного циклу for для проходження масиву буде таким:</p><pre><code class="language-javascript">for (i = 0; i &lt; числа.length; i++) {
  console.log(числа[i]);
}</code></pre><h2 id="-foreach-">Чим особливий метод forEach( )?</h2><p>Метод forEach також використовується для циклічного проходження масивів, але у порівнянні із циклом for він використовує функцію по-іншому.</p><p>Метод forEach передає <a href="https://www.freecodecamp.org/news/javascript-callback-functions-what-are-callbacks-in-js-and-how-to-use-them/">функцію зворотного виклику</a> для кожного елемента масиву разом з такими параметрами:</p><ul><li>Поточне значення (обов’язково) — значення поточного елемента масиву</li><li>Індекс (необов’язково) — номер індексу поточного елемента</li><li>Масив (необов’язково) — об’єкт масиву, до якого належить поточний елемент</li></ul><p>Поясню ці параметри покроково.</p><p>По-перше, щоб пройти масив за допомогою методу forEach, вам потрібна функція зворотного виклику (або анонімна функція):</p><pre><code class="language-javascript">числа.forEach(function() {
    // код
});</code></pre><p>Функція буде виконана для кожного окремого елемента масиву. Вона повинна приймати принаймні один параметр, який представляє елементи масиву:</p><pre><code class="language-javascript">числа.forEach(function(число) {
    console.log(число);
});</code></pre><p>Це все, що нам потрібно зробити для циклічного проходження масиву:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2020/06/Ads-z-2.png" class="kg-image" alt="Ads-z-2" width="600" height="400" loading="lazy"></figure><p>Альтернативно, ви можете використати представлення стрілкової функції ES6, щоб спростити код:</p><figure class="kg-card kg-code-card"><pre><code class="language-javascript">числа.forEach(число =&gt; console.log(число));</code></pre><figcaption>Представлення стрілкової функції</figcaption></figure><h2 id="-">Додаткові параметри</h2><h3 id="--1">Індекс</h3><p>Зараз продовжимо із додатковими параметрами. Першим є параметр «індекс», який представляє номер індексу кожного елемента.</p><p>По суті, ми можемо побачити номер індексу елемента, якщо додамо його як другий параметр:</p><pre><code class="language-javascript">числа.forEach((число, індекс) =&gt; {
    console.log('Індекс: ' + індекс + ' Значення: ' + число);
});</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/ukrainian/news/content/images/2022/08/screenshot-4.png" class="kg-image" alt="screenshot-4" srcset="https://www.freecodecamp.org/ukrainian/news/content/images/size/w600/2022/08/screenshot-4.png 600w, https://www.freecodecamp.org/ukrainian/news/content/images/2022/08/screenshot-4.png 720w" sizes="(min-width: 720px) 720px" width="720" height="149" loading="lazy"></figure><h3 id="--2">Масив</h3><p>Параметр «масив» — це сам масив. Він також необов’язковий і може використовуватися при необхідності в різних операціях. В іншому випадку, якщо ми викличемо його, він просто буде надрукований стільки разів, скільки елементів в масиві:</p><pre><code class="language-javascript">числа.forEach((число, індекс, масив) =&gt; {
    console.log(масив);
});</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2020/07/Ads-z.png" class="kg-image" alt="Ads-z" width="600" height="400" loading="lazy"></figure><h2 id="--3">Підтримка браузера</h2><p>Метод Array.forEach підтримується в усіх браузерах, окрім Internet Explorer 8 або ранішого:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2020/06/Ads-z.png" class="kg-image" alt="Ads-z" width="600" height="400" loading="lazy"><figcaption><a href="https://caniuse.com">caniuse.com</a></figcaption></figure><p>Дякую, що прочитали!</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ HTML vs Body: як встановити ширину та висоту для повного розміру сторінки ]]>
                </title>
                <description>
                    <![CDATA[ CSS складний, але на це можна закрити очі. Саме ця поблажливість дозволяє нам додавати стилі до CSS абияк. Наша сторінка досі завантажується. Немає ніякого «краху». Якщо мова йде про ширину та висоту сторінки, чи знаєте ви, що потрібно встановити для елемента HTML? А для елемента body? Ви просто накидуєте стилі ]]>
                </description>
                <link>https://www.freecodecamp.org/ukrainian/news/html-vs-body-yak-vstanovyty-shyrynu-ta-vysotu-dlya-povnoho-rozmiru-storinky/</link>
                <guid isPermaLink="false">63190aa8e16faf078a4c3f9a</guid>
                
                    <category>
                        <![CDATA[ програмування ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ rustamdocstranslator ]]>
                </dc:creator>
                <pubDate>Tue, 04 Oct 2022 11:56:18 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/ukrainian/news/content/images/2022/09/1F8831BD-7EEA-4FF7-91D5-637FD330BB80.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Оригінальна публікація:</strong> <a href="https://www.freecodecamp.org/news/html-page-width-height/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">HTML vs Body: How to Set Width and Height for Full Page Size</a>
      </p><p>CSS складний, але на це можна закрити очі. Саме ця поблажливість дозволяє нам додавати стилі до CSS абияк.</p><p>Наша сторінка досі завантажується. Немає ніякого «краху».</p><p>Якщо мова йде про ширину та висоту сторінки, чи знаєте ви, що потрібно встановити для елемента HTML? А для елемента body?</p><p>Ви просто накидуєте стилі на обидва елементи і сподіваєтесь на краще?</p><p>Якщо так, ви не один.</p><p>Зазвичай над відповіддю навіть не задумуються.</p><p>Я визнаю свою провину в застосуванні стилів до обох елементів у минулому, не врахувавши, яку саме властивість потрібно застосувати до них. 🤦‍♂️</p><p>Нерідко можна побачити властивості CSS, застосовані до HTML та body, у такий спосіб:</p><pre><code>html, body {
     min-height: 100%;
}
</code></pre><h2 id="-">Це важливо?</h2><p>Так, важливо.</p><p>Наведене вище визначення створює проблему:</p><p>Встановлення min-height на 100% для обох елементів не дозволяє елементу body заповнювати сторінку так, як ви очікували. Якщо ви перевірите обчислені значення в інструментах, побачите, що висота елемента body дорівнює нулю.</p><p>При цьому елемент HTML має висоту, що дорівнює видимій частині сторінки в браузері.</p><p>Подивіться на наступний знімок екрана з Chrome Dev Tools:</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2021/02/empty_body.png" class="kg-image" alt="empty_body" width="600" height="400" loading="lazy"><figcaption>Елемент body має поле за замовчуванням у 8 пікселів, позначене смугою вгорі. Значення висоти дорівнює 0.</figcaption></figure><h2 id="--1">Чому це відбувається?</h2><p>Використання відсотка як значення розміру вимагає, щоб елемент посилався на батьківського елемента, щоб базувати цей відсоток на ньому.</p><p>Елемент HTML посилається на вікно перегляду, значення висоти якого дорівнює висоті видимого вікна перегляду. Однак для елемента HTML ми встановлюємо лише min-height... НЕ значення властивості висоти.</p><p>Таким чином, елемент body не має батьківського значення висоти, на яке можна посилатися під час визначення, чому дорівнюють 100%.</p><h2 id="--2">Проблема може бути прихованою</h2><p>Якщо ви почали з достатньою кількістю вмісту для заповнення тіла сторінки, ви могли не помітити цю проблему.</p><p>Це ще важче помітити, якщо ви встановите background-color для обох елементів, або навіть лише для одного з них, і вікно перегляду буде заповнене цим кольором. Це створює враження, що елемент body такий же високий, як вікно перегляду.</p><p>Але він досі на нулі.</p><p>Зображення вище взято зі сторінки з таким CSS:</p><pre><code>html, body {
    min-height: 100%;
}
body { background-color: dodgerblue; }
</code></pre><h3 id="--3">Зворотне успадкування?</h3><p>Дивним чином елемент HTML припускає background-color елемента body, якщо ви не встановите окремий background-color для елемента html.</p><h2 id="--4">Яке ідеальне налаштування висоти для повністю адаптивної сторінки?</h2><p>Роками відповідь була така:</p><pre><code>html {
    height: 100%;
}
body {
    min-height: 100%;
}
</code></pre><p>Це дозволяє елементу HTML посилатися на батьківське вікно перегляду та мати значення висоти, що дорівнює 100% значення вікна перегляду.</p><p>Коли елемент HTML отримує значення висоти, то значення min-height, призначене елементу body, дає йому початкову висоту, яка відповідає елементу HTML.</p><p>Це також дозволяє body рости вище, якщо вміст переростає видиму сторінку.</p><p>Єдиним недоліком є те, що елемент HTML не виростає за висоту видимого вікна перегляду. Однак дозволити елементу body переростати елемент HTML визнали прийнятним.</p><h2 id="--5">Сучасне спрощене рішення</h2><pre><code>body { min-height: 100vh; }
</code></pre><p>У цьому прикладі використовуються одиниці <code>vh</code> (viewport height; висота вікна перегляду), щоб дозволити тілу встановити мінімальне значення висоти на основі повної висоти вікна перегляду.</p><p>Подібно до обговорюваного раніше background-color, якщо ми не встановимо значення висоти для елемента HTML, він прийме те саме значення для висоти, що надано елементу body.</p><p>Тому це рішення уникає переповнення елемента HTML, присутнього в попередньому рішенні, і обидва елементи ростуть разом із вашим вмістом!</p><p>Раніше використання одиниць <code>vh</code> справді спричиняло деякі проблеми в мобільних браузерах, але зараз Chrome і Safari сумісні з ними.</p><h2 id="--6">Висота сторінки може спричинити горизонтальну смугу прокрутки</h2><p>Зачекайте, що?</p><p>Хіба тут не має писати «Ширина сторінки»?</p><p>Ні.</p><p>В іншому дивному випадку висота вашої сторінки може активувати горизонтальну смугу прокрутки у вашому браузері.</p><p>Коли вміст вашої сторінки стає вищим за висоту вікна перегляду, активується вертикальна смуга прокручування праворуч. Це може призвести до того, що ваша сторінка моментально матиме ще горизонтальну смугу прокрутки.</p><h2 id="--7">Що з цим робити?</h2><p>Ви будете спати краще, знаючи, що це починається з налаштування ширини сторінки.</p><p>Ця проблема виникає, коли будь-який елемент — а не лише елемент HTML або body — встановлено на 100vw.</p><p>Одиниці вікна перегляду не враховують приблизно 10 пікселів, які займає вертикальна смуга прокручування.</p><p>Таким чином, коли активується вертикальна смуга прокручування, ви також отримуєте горизонтальну смугу.</p><h2 id="--8">Як встановити сторінку на повну ширину</h2><p>Можливо, просто не варто цього робити.</p><p>Якщо не встановити ширину для елементів HTML та body, то за замовчуванням буде використовуватися повний розмір екрана. Якщо ви встановили значення ширини, відмінне від auto, подумайте про скидання CSS.</p><p>Пам’ятайте, що елемент body має поле 8px з усіх боків за замовчуванням.</p><p>Скидання CSS видаляє їх. В іншому випадку встановлення ширини на 100% перед видаленням полів призведе до переповнення елемента body. Ось скидання CSS, яке я використовую:</p><pre><code>* { 
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}
</code></pre><h2 id="--9">Як встановити ширину на свій вибір</h2><p>Хоча не завжди потрібно встановлювати ширину, я зазвичай це роблю.</p><p>Це може бути проста звичка.</p><p>Якщо ви встановите ширину на 100% для елемента body, ви матимете ширину повної сторінки. По суті, це еквівалентно невстановленню значення ширини та дозволу за замовчуванням.</p><p>Якщо ви хочете використовувати елемент body як менший контейнер і дозволити елементу HTML заповнити сторінку, ви можете встановити значення max-width для body.</p><p>Ось приклад:</p><pre><code>html { background-color: #000; } 
body {
    min-height: 100vh;
    max-width: 400px;
    background-color: papayawhip; 
    margin: 0 auto;
}</code></pre><h2 id="--10">Висновок</h2><p>Якщо для елемента HTML не надано значення висоти, то встановлення висоти та/або min-height елемента body на 100% призведе до відсутності висоти (перед додаванням вмісту).</p><p>Однак, якщо для елемента HTML не надано значення ширини, то встановлення ширини елемента body на 100% призведе до ширини повної сторінки.</p><p>Це може бути суперечливим і заплутаним.</p><p>Для адаптивної висоти повної сторінки встановіть min-height елемента body на 100vh.</p><p>Якщо ви встановлюєте ширину сторінки, виберіть 100% замість 100vw, щоб уникнути несподіваних горизонтальних смуг прокрутки.</p><p>Чи є у вас інший спосіб налаштування CSS ширини та висоти, якому ви віддаєте перевагу?</p><p>Поділіться своїм методом!</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Як перевірити, чи масив JavaScript порожній (за допомогою .length) ]]>
                </title>
                <description>
                    <![CDATA[ Коли ви програмуєте в JavaScript, вам, можливо, знадобиться перевірити, чи порожній масив. Щоб перевірити, порожній масив чи ні, ви можете скористатися властивістю .length. Властивість length встановлює або повертає кількість елементів в масиві. Знаючи кількість елементів в масиві, можна визначити, порожній він чи ні. Порожній масив матиме 0 елементів всередині. Пробіжимося ]]>
                </description>
                <link>https://www.freecodecamp.org/ukrainian/news/yak-pereviryty-chy-masyv-javascript-porozhniy-za-dopomohoyu-length/</link>
                <guid isPermaLink="false">6302948ca402f907381bf726</guid>
                
                    <category>
                        <![CDATA[ JavaScript ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ rustamdocstranslator ]]>
                </dc:creator>
                <pubDate>Mon, 19 Sep 2022 17:57:10 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/ukrainian/news/content/images/2022/08/8A19E3C4-9FD7-493F-9EFF-5C819ECF1781.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Оригінальна публікація:</strong> <a href="https://www.freecodecamp.org/news/check-if-javascript-array-is-empty-or-not-with-length/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">How to Check if a JavaScript Array is Empty or Not with .length</a>
      </p><p>Коли ви програмуєте в JavaScript, вам, можливо, знадобиться перевірити, чи порожній масив.</p><p>Щоб перевірити, порожній масив чи ні, ви можете скористатися властивістю .length.</p><p>Властивість length встановлює або повертає кількість елементів в масиві. Знаючи кількість елементів в масиві, можна визначити, порожній він чи ні. Порожній масив матиме <code>0</code> елементів всередині.</p><p>Пробіжимося по прикладах.</p><h2 id="-length">Приклад синтаксису .length</h2><pre><code class="language-javascript">Const myArray = [‘Horses’, ‘Dogs’, ‘Cats’];</code></pre><p>Тут ми створюємо змінну, яка вказує на масив.</p><p>Використовуючи властивість length, ми можемо перевірити довжину масиву:</p><pre><code class="language-javascript">myArray.length</code></pre><p>Це поверне 3, оскільки в масиві 3 елементи.</p><p>Існує три способи перевірити, порожній масив чи ні, за допомогою .length.</p><h3 id="-"><strong>Перший приклад</strong></h3><p>Спочатку створимо новий масив без елементів.</p><pre><code class="language-javascript">const arr = []</code></pre><p>Тепер ми можемо перевірити, чи масив порожній, використовуючи <code>.length</code>.</p><pre><code class="language-javascript">arr.length</code></pre><p>Це поверне 0, оскільки в масиві 0 елементів.</p><h3 id="--1"><strong>Другий приклад</strong></h3><p>Ми також можемо прямо перевірити, порожній масив чи ні.</p><p><code>if (arr.length === 0) { console.log("Array is empty!") }</code></p><p>Якщо наш масив порожній, буде надруковано повідомлення вище. Якщо в масиві є елементи, код в блоці <code>if</code> не виконуватиметься.</p><h3 id="--2"><strong>Третій приклад</strong></h3><p>Поєднуючи властивість length та логічний оператор «не» в JavaScript — символ «!» — ми можемо перевірити, порожній масив чи ні.</p><p>Оператор <code>!</code> заперечує вираз. Його можна використати для повернення <code>true</code>, якщо масив порожній.</p><p>Для цього прикладу відкриємо нашу консоль JavaScript. </p><p>Спочатку створимо масив без елементів у ньому.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2020/10/image.png" class="kg-image" alt="image" width="600" height="400" loading="lazy"></figure><p>Далі використаємо логічний оператор «не» разом із нашою властивістю .length, щоб протестувати, порожній масив чи ні.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2020/10/Screen-Shot-2020-09-30-at-5.29.35-PM.png" class="kg-image" alt="Screen-Shot-2020-09-30-at-5.29.35-PM" width="600" height="400" loading="lazy"></figure><p>Якби ми не використали оператор «не», <code>arr.length</code> повернув би <code>0</code>. З доданим оператором він поверне <code>true</code>, якщо його операнд <code>false</code>. Оскільки arr.length дорівнює <code>0</code>, або false, він повертає <code>true</code>.</p><p>Використаємо твердження <code>if</code> та надрукуємо повідомлення, якщо наш масив порожній.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2020/10/image-2.png" class="kg-image" alt="image-2" width="600" height="400" loading="lazy"></figure><p>Коли перевіряєте, порожній масив чи ні, варто перевірити, чи справді масив є масивом.</p><p>Чому?</p><p>Тому що ви могли очікувати перевірити довжину масиву, але натомість у вас інший тип даних, наприклад, рядок:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2020/10/image-7.png" class="kg-image" alt="image-7" width="600" height="400" loading="lazy"></figure><p>Оскільки властивість <code>length</code> можна використовувати на інших типах даних, краще перевірити, чи ваш масив справді є масивом.</p><p>Я рекомендую використовувати метод <code>Array.isArray()</code>, щоб підтвердити, що масив є масивом. Цей метод визначає, чи передане є масивом. Якщо передане є масивом, цей метод поверне <code>true</code>.</p><p>Додамо цей метод до нашого прикладу.</p><h3 id="-array-isarray-">Як використовувати метод Array.isArray()</h3><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2020/10/image-3.png" class="kg-image" alt="image-3" width="600" height="400" loading="lazy"></figure><h2 id="--3">Підіб’ємо підсумки</h2><p>У цій публікації ми дізналися, що ви можете використовувати властивість <code>length</code> в JavaScript різними способами, щоб перевірити, чи масив порожній, чи ні. Властивість <code>length</code> повертає кількість елементів в масиві.</p><p>Ми також дізналися, що найкраще використовувати <code>Array.isArray</code> під час використання властивості <code>.length</code>, щоб перевірити, чи передане значення справді є масивом.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Як видалити образи та контейнери в Docker ]]>
                </title>
                <description>
                    <![CDATA[ Docker rmi docker rmi видаляє образи за їхнім ID. Щоб видалити образ, спочатку потрібно вивести список всіх образів, щоб отримати їхні ID, назву та інші деталі. Для цього виконайте команду docker images -a або  docker images. Потім переконайтеся, який образ ви хочете видалити: для цього виконайте команду  docker ]]>
                </description>
                <link>https://www.freecodecamp.org/ukrainian/news/yak-vydalyty-obrazy-ta-konteynery-v-docker/</link>
                <guid isPermaLink="false">630054081176440771bf44ab</guid>
                
                    <category>
                        <![CDATA[ Docker ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ rustamdocstranslator ]]>
                </dc:creator>
                <pubDate>Mon, 19 Sep 2022 17:56:43 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/ukrainian/news/content/images/2022/08/E5737C2A-D35F-4B66-8A3B-0926A0C51826.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Оригінальна публікація:</strong> <a href="https://www.freecodecamp.org/news/how-to-remove-images-in-docker/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">How to Remove Images and Containers in Docker</a>
      </p><h2 id="docker-rmi"><strong>Docker rmi</strong></h2><p><code>docker rmi</code> видаляє образи за їхнім ID.</p><p>Щоб видалити образ, спочатку потрібно вивести список всіх образів, щоб отримати їхні ID, назву та інші деталі. Для цього виконайте команду <code>docker images -a</code> або <code>docker images</code>.</p><p>Потім переконайтеся, який образ ви хочете видалити: для цього виконайте команду <code>docker rmi &lt;your-image-id&gt;</code>. Після цього ви можете підтвердити, чи був образ видалений, вивівши список всіх образів.</p><h3 id="-">Видалити декілька образів</h3><p>Існує спосіб видалити декілька певних образів одночасно. Щоб зробити це, спочатку отримайте ID образів, вивівши список, а потім виконайте наступну команду.</p><p><code>docker rmi &lt;your-image-id&gt; &lt;your-image-id&gt; ...</code></p><p>Напишіть ID образів в команді і не забудьте пробіли між ними.</p><h3 id="--1">Видалити всі образи відразу</h3><p>Щоб видалити всі образи, є проста команда: <code>docker rmi $(docker images -q)</code></p><p>У наведеній вище команді є дві команди: перша виконується в <code>$()</code>, який є синтаксисом оболонки та повертає результат, який виконується в цьому синтаксисі. Отже, опція <code>-q-</code> використовується для повернення унікальних ID, $() повертає ID образів як результат, а потім <code>docker rmi</code> видаляє всі ці образи.</p><h2 id="docker-rm"><strong>Docker rm</strong></h2><p><code>docker rm</code> видаляє контейнери за їхньою назвою або ID.</p><p>Перед видаленням потрібно зупинити контейнери Docker, якщо вони запущені.</p><ul><li>Зупинити всі запущені контейнери: <code>docker stop $(docker ps -a -q)</code></li><li>Видалити всі зупинені контейнери: <code>docker rm $(docker ps -a -q)</code></li></ul><h3 id="--2">Видалити декілька контейнерів</h3><p>Ви можете зупинити та видалити декілька контейнерів, передавши командам список контейнерів, які ви хочете видалити. Синтаксис оболонки <code>$()</code> повертає результат будь-якого виконання всередині дужок. Таким чином, всередині дужок ви можете створити свій список контейнерів, який буде передано командам <code>stop</code> та <code>rm</code>.</p><h3 id="-docker-ps-a-q">Аналіз docker ps -a -q</h3><ul><li><code>docker ps</code> виводить список контейнерів</li><li><code>-a</code> — опція для виведення списку всіх контейнерів, навіть зупинених. Без неї за замовчуванням виводиться список лише запущених контейнерів</li><li><code>-q</code> — тиха опція для надання лише числових ID контейнерів, а не повної інформації про контейнери</li></ul> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Java String в Int: як конвертувати рядок в ціле число ]]>
                </title>
                <description>
                    <![CDATA[ Рядкові об’єкти представлені у вигляді рядка символів. Якщо ви знайомі з Java Swing, то у ньому є такі компоненти, як JTextField та JTextArea, які ми використовуємо для отримання вхідних даних із графічного інтерфейсу користувача. Він приймає вхідні дані як рядок. Якщо ми хочемо створити простий калькулятор за допомогою Swing, нам ]]>
                </description>
                <link>https://www.freecodecamp.org/ukrainian/news/java-string-v-int-yak-konvertuvaty-ryadok-v-tsile-chyslo/</link>
                <guid isPermaLink="false">6317a4e7e16faf078a4c377e</guid>
                
                    <category>
                        <![CDATA[ Java ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ rustamdocstranslator ]]>
                </dc:creator>
                <pubDate>Mon, 19 Sep 2022 17:56:24 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/ukrainian/news/content/images/2022/09/C9369D0B-A86A-4BFC-846A-7AE164554815.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Оригінальна публікація:</strong> <a href="https://www.freecodecamp.org/news/java-string-to-int-how-to-convert-a-string-to-an-integer/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Java String to Int – How to Convert a String to an Integer</a>
      </p><p>Рядкові об’єкти представлені у вигляді рядка символів.</p><p>Якщо ви знайомі з Java Swing, то у ньому є такі компоненти, як JTextField та JTextArea, які ми використовуємо для отримання вхідних даних із графічного інтерфейсу користувача. Він приймає вхідні дані як рядок.</p><p>Якщо ми хочемо створити простий калькулятор за допомогою Swing, нам потрібно зрозуміти, як конвертувати рядок в ціле число. Це призводить до питання: як можна конвертувати рядок в число?</p><p>В Java ми можемо використати <code>Integer.valueOf()</code> та <code>Integer.parseInt()</code>, щоб конвертувати рядок в ціле число.</p><h2 id="1-integer-parseint-">1. Використайте Integer.parseInt(), щоб конвертувати рядок в ціле число</h2><p>Цей метод повертає рядок як <strong>примітивний тип int</strong>. Якщо рядок не містить дійсного цілого числа, він кине <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/NumberFormatException.html">NumberFormatException</a>.</p><p>Кожного разу, коли ми конвертуємо рядок в число, потрібно подбати про цей виняток, помістивши код в блок try-catch.</p><p>Розглянемо приклад перетворення рядка в число за допомогою <code>Integer.parseInt()</code>:</p><pre><code class="language-java">        String str = "25";
        try{
            int number = Integer.parseInt(str);
            System.out.println(number); // вивід = 25
        }
        catch (NumberFormatException ex){
            ex.printStackTrace();
        }</code></pre><p>Спробуємо зламати цей код, ввівши недійсне ціле число:</p><pre><code class="language-java">     	String str = "25T";
        try{
            int number = Integer.parseInt(str);
            System.out.println(number);
        }
        catch (NumberFormatException ex){
            ex.printStackTrace();
        }</code></pre><p>В коді вище ми спробували конвертувати <code>25T</code> в ціле число. Це недійсний ввід. Таким чином, він повинен кинути NumberFormatException.</p><p>Ось вивід наведеного вище коду:</p><pre><code class="language-java">java.lang.NumberFormatException: For input string: "25T"
	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
	at java.lang.Integer.parseInt(Integer.java:580)
	at java.lang.Integer.parseInt(Integer.java:615)
	at OOP.StringTest.main(StringTest.java:51)</code></pre><p>Далі ми розглянемо, як конвертувати рядок в ціле число за допомогою методу <code>Integer.valueOf()</code>.</p><h2 id="2-integer-valueof-">2. Використайте Integer.valueOf(), щоб конвертувати рядок в ціле число</h2><p>Цей метод повертає рядок як <strong>цілочисельний об’єкт</strong>. Якщо глянути на <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html#valueOf(java.lang.String)">документацію Java</a>, <code>Integer.valueOf()</code> повертає цілочисельний об’єкт, який еквівалентний <code>new Integer(Integer.parseInt(s))</code>.</p><p>Розмістимо наш код всередині блоку try-catch, коли будемо використовувати цей метод. Розглянемо приклад використання методу <code>Integer.valueOf()</code>:</p><pre><code class="language-java">        String str = "25";
        try{
            Integer number = Integer.valueOf(str);
            System.out.println(number); // вивід = 25
        }
        catch (NumberFormatException ex){
            ex.printStackTrace();
        }</code></pre><p>Тепер спробуємо зламати наведений вище код, ввівши недійсне ціле число:</p><pre><code class="language-java">        String str = "25TA";
        try{
            Integer number = Integer.valueOf(str);
            System.out.println(number); 
        }
        catch (NumberFormatException ex){
            ex.printStackTrace();
        }</code></pre><p>Подібно до попереднього прикладу, наведений вище код кине виняток.</p><p>Ось вивід наведеного вище коду:</p><pre><code class="language-java">java.lang.NumberFormatException: For input string: "25TA"
	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
	at java.lang.Integer.parseInt(Integer.java:580)
	at java.lang.Integer.valueOf(Integer.java:766)
	at OOP.StringTest.main(StringTest.java:42)</code></pre><p>Перед використанням вищезазначених методів ми також можемо створити метод для перевірки того, чи переданий рядок є числовим, чи ні.</p><p>Я створив простий метод для перевірки того, чи є переданий рядок числовим, чи ні.</p><pre><code class="language-java">public class StringTest {
    public static void main(String[] args) {
        String str = "25";
        String str1 = "25.06";
        System.out.println(isNumeric(str));
        System.out.println(isNumeric(str1));
    }

    private static boolean isNumeric(String str){
        return str != null &amp;&amp; str.matches("[0-9.]+");
    }
}</code></pre><p>Вивід:</p><pre><code class="language-java">true
true</code></pre><p>Метод <code>isNumeric()</code> приймає рядок як аргумент. Спочатку він перевіряє, чи рядок <code>null</code>. Після цього ми використовуємо метод <code>matches()</code>, щоб перевірити, чи рядок містить цифри від 0 до 9 та крапку.</p><p>Це простий спосіб перевірити числові значення. Ви можете написати або знайти в Google більш просунуті регулярні вирази для захоплення чисел, залежно від вашої мети використання.</p><p>Перед конвертуванням рядка в ціле число краще перевірити, чи переданий рядок дійсно числовий.</p><p>Дякую, що прочитали.</p><p>Зображення публікації від <a href="https://unsplash.com/@itfeelslikefilm">🇸🇮 Janko Ferlič</a> на <a href="https://unsplash.com/collections/139346/soul-care">Unsplash</a></p><p>Ви можете зв’язатися зі мною на <a href="https://mvthanoshan.medium.com/">Medium</a>.</p><p><strong>Щасливого кодування!</strong></p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Видалення гілки Git: як видалити локальну або віддалену гілку ]]>
                </title>
                <description>
                    <![CDATA[ Git — популярна система керування версіями та обов’язковий інструмент у наборі інструментів веброзробника. Гілки — це потужна та невіддільна частина роботи з Git. У цій публікації ви дізнаєтеся основи того, як видалити локальні та віддалені гілки в Git. Що таке гілки в Git? Гілка — це вказівник на коміт. Гілки ]]>
                </description>
                <link>https://www.freecodecamp.org/ukrainian/news/vydalennya-hilky-git-yak-vydalyty-lokalnu-abo-viddalenu-hilku/</link>
                <guid isPermaLink="false">6303fa94a402f907381bf9cc</guid>
                
                    <category>
                        <![CDATA[ Git ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ rustamdocstranslator ]]>
                </dc:creator>
                <pubDate>Mon, 19 Sep 2022 17:54:41 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/ukrainian/news/content/images/2022/08/7F4257E3-BEAD-438D-A9C2-A72A814D0AE4.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Оригінальна публікація:</strong> <a href="https://www.freecodecamp.org/news/git-delete-branch-how-to-remove-a-local-or-remote-branch/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Git Delete Branch – How to Remove a Local or Remote Branch</a>
      </p><p>Git — популярна система керування версіями та обов’язковий інструмент у наборі інструментів веброзробника.</p><p>Гілки — це потужна та невіддільна частина роботи з Git.</p><p>У цій публікації ви дізнаєтеся основи того, як видалити локальні та віддалені гілки в Git.</p><h2 id="-git">Що таке гілки в Git?</h2><p>Гілка — це вказівник на коміт.</p><p>Гілки Git — це снепшот проєкту та його змін із певного моменту часу.</p><p>Під час роботи над великим проєктом існує основний репозиторій з усім кодом, який часто називають <code>main</code> або <code>master</code>.</p><p>Розгалуження дозволяє створювати нові, незалежні версії основного робочого проєкту. Ви можете створити гілку, щоб редагувати її: вносити зміни, додавати нову функцію чи писати тест, коли ви намагаєтеся виправити помилку. Нова гілка дозволяє вам робити це без жодного впливу на основний код.</p><p>Отже, гілки дозволяють вам вносити зміни в кодову базу без впливу на основний код, доки ви не будете повністю готові впровадити ці зміни.</p><p>Це допомагає підтримувати кодову базу чистою та організованою.</p><h2 id="-git-1">Навіщо видаляти гілки в Git?</h2><p>Ви створили гілку, щоб тримати код подалі від зміни, яку хочете внести у свій проєкт.</p><p>Потім ви включили цю зміну або нову функцію в початкову версію проєкту.</p><p>Це означає, що вам більше не потрібно зберігати та використовувати цю гілку, тому найкраще її видалити, щоб вона не засмічувала ваш код.</p><h2 id="-git-2">Як видалити локальну гілку в Git</h2><p>Локальні гілки — це гілки на вашій локальній машині, які не впливають на віддалені гілки.</p><p>Команда для видалення локальної гілки в Git:</p><pre><code>git branch -d  local_branch_name
</code></pre><ul><li><code>git branch</code> — команда для локального видалення гілки.</li><li><code>-d</code> — прапорець, опція до команди, інша назва для &nbsp;<code>--delete</code>. Як випливає з назви, він позначає, що ви хочете видалити щось.</li><li><code>local_branch_name</code> — назва гілки, яку ви хочете видалити.</li></ul><p>Розгляньмо це трохи докладніше на прикладі.</p><p>Щоб вивести список всіх локальних гілок, скористайтеся такою командою:</p><pre><code>git branch
</code></pre><p>Я маю дві гілки: <code>master</code> та <code>test2</code>. Зараз я на гілці <code>test2</code>, як показує <code>(*)</code>:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/08/Screenshot-2021-08-25-at-4.13.14-PM.png" class="kg-image" alt="Screenshot-2021-08-25-at-4.13.14-PM" width="600" height="400" loading="lazy"></figure><p>Я хочу видалити гілку <code>test2</code>, але неможливо видалити гілку, на якій ви зараз знаходитесь та яку переглядаєте.</p><p>Якщо ви спробуєте це зробити, ви отримаєте помилку, яка виглядатиме приблизно так:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/08/Screenshot-2021-08-25-at-4.17.50-PM.png" class="kg-image" alt="Screenshot-2021-08-25-at-4.17.50-PM" width="600" height="400" loading="lazy"></figure><p>Отже, перш ніж видаляти локальну гілку, переконайтеся, що перейшли на іншу гілку, яку ви НЕ хочете видаляти. Виконайте команду <code>git checkout</code>:</p><pre><code>git checkout branch_name

#де branch_name — це назва гілки, на яку ви хочете перейти
#у моєму випадку іншою гілкою є master, тому я написала:
#git checkout master
</code></pre><p>Ось вивід:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/08/Screenshot-2021-08-25-at-4.20.40-PM.png" class="kg-image" alt="Screenshot-2021-08-25-at-4.20.40-PM" width="600" height="400" loading="lazy"></figure><p>Тепер я можу видалити гілку:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/08/Screenshot-2021-08-25-at-5.10.13-PM.png" class="kg-image" alt="Screenshot-2021-08-25-at-5.10.13-PM" width="600" height="400" loading="lazy"></figure><p>Команда для видалення локальної гілки, яку ми щойно використали, працює не у всіх випадках.</p><p>Якщо гілка містить незлиті зміни та ненадіслані коміти, прапорець <code>-d</code> не дозволить видалити локальну гілку.</p><p>Це тому що інші гілки не бачать коміти, а Git захищає вас від випадкової втрати будь-яких даних комітів.</p><p>Якщо ви спробуєте це зробити, Git покаже вам помилку:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/08/Screenshot-2021-08-25-at-5.23.46-PM.png" class="kg-image" alt="Screenshot-2021-08-25-at-5.23.46-PM" width="600" height="400" loading="lazy"></figure><p>Як пропонує помилка, натомість вам потрібно використати прапорець <code>-D</code>:</p><pre><code>git branch -D local_branch_name
</code></pre><p>Прапорець <code>-D</code>, із великою літерою D (інша назва для <code>-- delete --force</code>), примусово видаляє локальну гілку, незалежно від її статусу злиття.</p><p>Але зауважте, що <strong>ви повинні використовувати цю команду з обережністю</strong>, оскільки немає запиту на підтвердження ваших дій.</p><p>Використовуйте її лише тоді, коли ви абсолютно впевнені, що хочете видалити локальну гілку.</p><p>Якщо ви не злили її в іншу локальну гілку або не надіслали до віддаленої гілки в кодовій базі, ви ризикуєте втратити всі внесені зміни.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/08/Screenshot-2021-08-25-at-5.33.41-PM.png" class="kg-image" alt="Screenshot-2021-08-25-at-5.33.41-PM" width="600" height="400" loading="lazy"></figure><h2 id="-git-3">Як видалити віддалену гілку в Git</h2><p>Віддалені гілки відокремлені від локальних гілок.</p><p>Вони є репозиторіями, розміщеними на віддаленому сервері, до яких можна отримати доступ звідти. Це в порівнянні з локальними гілками, які є репозиторіями у вашій локальній системі.</p><p>Команда для видалення віддаленої гілки:</p><pre><code>git push remote_name -d remote_branch_name
</code></pre><ul><li>Замість команди <code>git branch</code> для локальних гілок, використайте команду <code>git push</code> для видалення віддалених гілок.</li><li>Потім вкажіть назву віддаленого сховища, переважно <code>origin</code>.</li><li><code>-d</code> — прапорець для видалення, інша назва для <code>--delete</code>.</li><li><code>remote_branch_name</code> — віддалена гілка, яку ви хочете видалити.</li></ul><p>Тепер розглянемо приклад видалення віддаленої гілки.</p><p>Щоб переглянути будь-які віддалені гілки, використайте цю команду:</p><pre><code>git branch -a
</code></pre><p>Прапорець <code>-a</code> (інша назва для <code>--all</code>) показує всі гілки: як локальні, так і віддалені.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/08/Screenshot-2021-08-25-at-7.35.31-PM.png" class="kg-image" alt="Screenshot-2021-08-25-at-7.35.31-PM" width="600" height="400" loading="lazy"></figure><p>У мене є дві локальні гілки (<code>master</code> і <code>test</code>) та дві віддалені гілки (<code>origin/master</code> і <code>origin/test</code>).</p><p><code>-r</code>, інша назва для <code>--remotes</code>, показує <em>лише</em> віддалені репозиторії.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/08/Screenshot-2021-08-25-at-7.37.12-PM.png" class="kg-image" alt="Screenshot-2021-08-25-at-7.37.12-PM" width="600" height="400" loading="lazy"></figure><p>Я хочу видалити віддалену гілку <code>origin/test</code>, тому я використовую команду:</p><pre><code>git push origin -d test
</code></pre><p>Вивід:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/08/Screenshot-2021-08-25-at-7.39.34-PM.png" class="kg-image" alt="Screenshot-2021-08-25-at-7.39.34-PM" width="600" height="400" loading="lazy"></figure><p>Це видалило гілку <code>test</code> у віддаленому репозиторії під назвою <code>origin</code>.</p><p>Віддаленого репозиторію <code>origin/test</code> більше немає:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/08/Screenshot-2021-08-25-at-7.42.01-PM.png" class="kg-image" alt="Screenshot-2021-08-25-at-7.42.01-PM" width="600" height="400" loading="lazy"></figure><h2 id="-">Висновок</h2><p>Тепер ви знаєте, як видаляти локальні та віддалені гілки в Git.</p><p>Дякую, що прочитали та щасливого навчання!</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Як клонувати масив в JavaScript ]]>
                </title>
                <description>
                    <![CDATA[ В JavaScript є багато способів зробити що завгодно. Зараз ми будемо працювати з масивами. 1. Оператор Spread (поверхнева копія) З того часу, як з’явився ES6 — це найпопулярніший метод. Це короткий синтаксис, який є неймовірно корисним під час використання таких бібліотек, як React і Redux. numbers = [1, 2, 3]; ]]>
                </description>
                <link>https://www.freecodecamp.org/ukrainian/news/yak-klonuvaty-masyv-v-javascript/</link>
                <guid isPermaLink="false">6310c8f83904ca06d72df9a5</guid>
                
                    <category>
                        <![CDATA[ JavaScript ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ rustamdocstranslator ]]>
                </dc:creator>
                <pubDate>Mon, 19 Sep 2022 17:52:43 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/ukrainian/news/content/images/2022/09/B29127B2-8E78-47DB-B634-0F800F4688F2.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Оригінальна публікація:</strong> <a href="https://www.freecodecamp.org/news/how-to-clone-an-array-in-javascript-1d3183468f6a/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">How to clone an array in JavaScript</a>
      </p><p>В JavaScript є багато способів зробити що завгодно. Зараз ми будемо працювати з масивами.</p><h3 id="1-spread-"><strong>1. Оператор Spread (поверхнева копія)</strong></h3><p>З того часу, як з’явився ES6 — це найпопулярніший метод. Це короткий синтаксис, який є неймовірно корисним під час використання таких бібліотек, як React і Redux.</p><pre><code class="language-js">numbers = [1, 2, 3];
numbersCopy = [...numbers];
</code></pre><p><strong>Примітка:</strong> ненадійно копіює багатовимірні масиви. Значення масиву/об’єкта копіюються за <em>посиланням</em>, а не за <em>значенням</em>.</p><p>Це добре:</p><pre><code class="language-js">numbersCopy.push(4);
console.log(numbers, numbersCopy);
// [1, 2, 3] та [1, 2, 3, 4]
// числа залишаються без змін
</code></pre><p>Це не добре:</p><pre><code class="language-js">nestedNumbers = [[1], [2]];
numbersCopy = [...nestedNumbers];

numbersCopy[0].push(300);
console.log(nestedNumbers, numbersCopy);
// [[1, 300], [2]]
// [[1, 300], [2]]
// Обоє були змінені, оскільки мають спільні посилання
</code></pre><h3 id="2-for-"><strong>2. Старий добрий цикл for() (поверхнева копія)</strong></h3><p>Я думаю, що цей підхід <em>найменш</em> популярний, враховуючи, наскільки трендовим стало функціональне програмування в наших колах.</p><p>Чистий чи нечистий, декларативний чи імперативний, він виконує роботу!</p><pre><code class="language-js">numbers = [1, 2, 3];
numbersCopy = [];

for (i = 0; i &lt; numbers.length; i++) {
  numbersCopy[i] = numbers[i];
}
</code></pre><p><strong>Примітка:</strong> ненадійно копіює багатовимірні масиви. Оскільки ви використовуєте оператор <code>=</code>, він призначатиме об’єкти/масиви за <em>посиланням</em>, а не за <em>значенням</em>.</p><p>Це добре:</p><pre><code class="language-js">numbersCopy.push(4);
console.log(numbers, numbersCopy);
// [1, 2, 3] та [1, 2, 3, 4]
// числа залишаються без змін
</code></pre><p>Це не добре:</p><pre><code class="language-js">nestedNumbers = [[1], [2]];
numbersCopy = [];

for (i = 0; i &lt; nestedNumbers.length; i++) {
  numbersCopy[i] = nestedNumbers[i];
}

numbersCopy[0].push(300);
console.log(nestedNumbers, numbersCopy);
// [[1, 300], [2]]
// [[1, 300], [2]]
// Обоє були змінені, оскільки мають спільні посилання</code></pre><h3 id="3-while-"><strong>3. Старий добрий цикл while() (поверхнева копія)</strong></h3><p>Такий самий, що й <code>for</code>: нечистий, імперативний, бла-бла-бла… Але працює!?</p><pre><code class="language-js">numbers = [1, 2, 3];
numbersCopy = [];
i = -1;

while (++i &lt; numbers.length) {
  numbersCopy[i] = numbers[i];
}
</code></pre><p><strong>Примітка:</strong> також призначає об’єкти/масиви за <em>посиланням</em>, а не за <em>значенням</em>.</p><p>Це добре:</p><pre><code class="language-js">numbersCopy.push(4);
console.log(numbers, numbersCopy);
// [1, 2, 3] та [1, 2, 3, 4]
// числа залишаються без змін
</code></pre><p>Це не добре:</p><pre><code class="language-js">nestedNumbers = [[1], [2]];
numbersCopy = [];

i = -1;

while (++i &lt; nestedNumbers.length) {
  numbersCopy[i] = nestedNumbers[i];
}

numbersCopy[0].push(300);
console.log(nestedNumbers, numbersCopy);
// [[1, 300], [2]]
// [[1, 300], [2]]
// Обоє були змінені, оскільки мають спільні посилання
</code></pre><h3 id="4-array-map-"><strong>4. Array.map (поверхнева копія)</strong></h3><p>На сучасній території ми знайдемо функцію <code>map</code>. <a href="https://uk.wikipedia.org/wiki/%D0%9C%D0%BE%D1%80%D1%84%D1%96%D0%B7%D0%BC">Закорінена в математиці</a> <code>map</code> — це концепція перетворення множини в множину іншого типу зі збереженням структури.</p><p>Простими словами: <code>Array.map</code> повертає масив тої самої довжини кожного разу.</p><p>Щоб подвоїти список чисел, використайте <code>map</code> із функцією <code>double</code>.</p><pre><code class="language-js">numbers = [1, 2, 3];
double = (x) =&gt; x * 2;

numbers.map(double);
</code></pre><h4 id="-">А як щодо клонування??</h4><p>Правда, ця публікація про клонування масивів. Щоб дублювати масив, просто поверніть елемент у виклику <code>map</code>.</p><pre><code class="language-js">numbers = [1, 2, 3];
numbersCopy = numbers.map((x) =&gt; x);
</code></pre><p>Якщо ви хочете побути математиками, <code>(x) =&gt; x</code> називається <a href="https://uk.wikipedia.org/wiki/%D0%A2%D0%BE%D1%82%D0%BE%D0%B6%D0%BD%D0%B5_%D0%B2%D1%96%D0%B4%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%BD%D1%8F">тотожністю</a>. Вона повертає будь-який параметр, який було надано.</p><p><code>map(identity)</code> клонує список.</p><pre><code class="language-js">identity = (x) =&gt; x;
numbers.map(identity);
// [1, 2, 3]
</code></pre><p><strong>Примітка:</strong> також призначає об’єкти/масиви за <em>посиланням</em>, а не за <em>значенням</em>.</p><h3 id="5-array-filter-"><strong>5. Array.filter (поверхнева копія)</strong></h3><p>Ця функція повертає масив, як і <code>map</code>, але не гарантовано, що він буде такої ж довжини.</p><p>А якщо відфільтрувати парні числа?</p><pre><code class="language-js">[1, 2, 3].filter((x) =&gt; x % 2 === 0);
// [2]
</code></pre><p>Довжина вхідного масиву дорівнює 3, а вихідного — 1.</p><p>Проте, якщо предикат вашого <code>filter</code> завжди повертає <code>true</code>, ви отримаєте дублікат!</p><pre><code class="language-js">numbers = [1, 2, 3];
numbersCopy = numbers.filter(() =&gt; true);
</code></pre><p>Кожен елемент проходить тест, тому він повертається.</p><p><strong>Примітка:</strong> також призначає об’єкти/масиви за <em>посиланням</em>, а не за <em>значенням</em>.</p><h3 id="6-array-reduce-"><strong>6. Array.reduce (поверхнева копія)</strong></h3><p>Мені ніяково використовувати <code>reduce</code> для клонування масиву, тому що вона набагато потужніша за це. Але раз ви просите…</p><pre><code class="language-js">numbers = [1, 2, 3];

numbersCopy = numbers.reduce((newArray, element) =&gt; {
  newArray.push(element);

  return newArray;
}, []);
</code></pre><p><code>reduce</code> перетворює початкове значення, коли воно проходить список.</p><p>В прикладі початкове значення є порожнім масивом і ми заповнюємо його кожним елементом на ходу. Цей масив повинен бути повернений з функції, щоб його використати в наступній ітерації.</p><p><strong>Примітка:</strong> також призначає об’єкти/масиви за <em>посиланням</em>, а не за <em>значенням</em>.</p><h3 id="7-array-slice-"><strong>7. Array.slice (поверхнева копія)</strong></h3><p><code>slice</code> повертає <em>поверхневу</em> копію масиву на основі наданого вами початкового/кінцевого індексу.</p><p>Якщо ми хочемо перші 3 елементи:</p><pre><code class="language-js">[1, 2, 3, 4, 5].slice(0, 3);
// [1, 2, 3]
// Починається з індексу 0, закінчується на індексі 3
</code></pre><p>Якщо ми хочемо всі елементи, не вказуємо жодних параметрів:</p><pre><code class="language-js">numbers = [1, 2, 3, 4, 5];
numbersCopy = numbers.slice();
// [1, 2, 3, 4, 5]
</code></pre><p><strong>Примітка:</strong> це <em>поверхнева</em> копія, тому вона також призначає об’єкти/масиви за <em>посиланням</em>, а не за <em>значенням</em>.</p><h3 id="8-json-parse-json-stringify-"><strong>8. JSON.parse та JSON.stringify (глибока копія)</strong></h3><p><code>JSON.stringify</code> перетворює об’єкт на рядок.</p><p><code>JSON.parse</code> перетворює рядок на об’єкт.</p><p>Якщо їх поєднати, то можна перетворити об’єкт на рядок, а потім змінити процес навпаки, щоб створити нову структуру даних.</p><p><strong>Примітка: надійно копіює глибоко вкладені об’єкти/масиви!</strong></p><pre><code class="language-js">nestedNumbers = [[1], [2]];
numbersCopy = JSON.parse(JSON.stringify(nestedNumbers));

numbersCopy[0].push(300);
console.log(nestedNumbers, numbersCopy);

// [[1], [2]]
// [[1, 300], [2]]
// Два абсолютно окремі масиви!
</code></pre><h3 id="9-array-concat-"><strong>9. Array.concat (поверхнева<em> </em>копія)</strong></h3><p><code>concat</code> поєднує масиви зі значеннями або іншими масивами.</p><pre><code class="language-js">[1, 2, 3].concat(4); // [1, 2, 3, 4]
[1, 2, 3].concat([4, 5]); // [1, 2, 3, 4, 5]
</code></pre><p>Якщо ви не надасте нічого або порожній масив, повернеться поверхнева копія.</p><pre><code class="language-js">[1, 2, 3].concat(); // [1, 2, 3]
[1, 2, 3].concat([]); // [1, 2, 3]
</code></pre><p><strong>Примітка:</strong> також призначає об’єкти/масиви за <em>посиланням</em>, а не за <em>значенням</em>.</p><h3 id="10-array-from-"><strong>10. Array.from (поверхнева копія)</strong></h3><p>Може перетворити будь-який ітерований об’єкт в масив. Надання масиву повертає поверхневу копію.</p><pre><code class="language-js">numbers = [1, 2, 3];
numbersCopy = Array.from(numbers);
// [1, 2, 3]
</code></pre><p><strong>Примітка:</strong> також призначає об’єкти/масиви за <em>посиланням</em>, а не за <em>значенням</em>.</p><h3 id="--1">Висновок</h3><p>Ну, було весело?</p><p>Я спробував клонувати, використовуючи лише 1 крок. Ви знайдете ще багато інших способів, якщо використаєте декілька методів та технік.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Git Fetch vs Pull: в чому різниця між командами Git Fetch та Git Pull? ]]>
                </title>
                <description>
                    <![CDATA[ Git pull та fetch — це дві команди, які часто використовуються користувачами Git. Розглянемо між ними різницю. Для контексту варто пам’ятати, що ми, ймовірно, працюємо в клоні репозиторію. Що таке клон? Це дублікат іншого репозиторію. По суті, це отримання власної копії чужого початкового коду. Проте, щоб ваш клон був оновлений ]]>
                </description>
                <link>https://www.freecodecamp.org/ukrainian/news/git-fetch-vs-pull-v-chomu-riznytsya-mizh-komandamy-git-fetch-ta-git-pull/</link>
                <guid isPermaLink="false">62fedabe1176440771bf426f</guid>
                
                    <category>
                        <![CDATA[ Git ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ rustamdocstranslator ]]>
                </dc:creator>
                <pubDate>Mon, 19 Sep 2022 17:50:03 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/ukrainian/news/content/images/2022/08/3EA908C2-0015-4A75-9FF3-C8741682CAB0.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Оригінальна публікація:</strong> <a href="https://www.freecodecamp.org/news/git-fetch-vs-pull/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Git Fetch vs Pull: What's the Difference Between the Git Fetch and Git Pull Commands?</a>
      </p><p>Git <code>pull</code> та <code>fetch</code> — це дві команди, які часто використовуються користувачами Git. Розглянемо між ними різницю.</p><p>Для контексту варто пам’ятати, що ми, ймовірно, працюємо в клоні репозиторію. Що таке клон? Це дублікат іншого репозиторію. По суті, це отримання власної копії чужого початкового коду.</p><p>Проте, щоб ваш клон був оновлений до всіх змін, які могли бути застосовані в оригіналі, вам потрібно переносити їх до свого клону.</p><p>Ось тут і з’являються <code>fetch</code> та <code>pull</code>.</p><p><code>git fetch</code> — це команда, яка повідомляє вашому локальному git про останню інформацію метаданих оригіналу (але не передає жодного файлу. Це більше схоже на перевірку того, чи є нові зміни).</p><p><code>git pull</code> робить це ТА переносить (копіює) ці зміни з віддаленого репозиторію.</p><p>Наприклад:</p><pre><code class="language-text">git pull origin ankur bugfix</code></pre><p>Висновок: пам’ятайте, що на вашій робочій станції зазвичай є щонайменше три копії проєкту:</p><ul><li>Перша копія — це ваш власний репозиторій з власною історією комітів (так би мовити, вже збережена).</li><li>Друга копія — це ваша робоча копія, де ви редагуєте та створюєте (ще не комічена до вашого репозиторію).</li><li>Третя копія — це ваша локальна «кешована» копія віддаленого репозиторію (ймовірно, оригінал, з якого ви клонували свій).</li></ul><p>Ви можете використовувати <code>git fetch</code>, щоб знати які зміни були зроблені у віддаленому репозиторію/гілці з моменту останнього внеску. Це корисно робити перед самим виконанням внеску, який може змінити файли у вашій поточній гілці та робочій копії (і потенційно втратити ваші зміни тощо).</p><pre><code class="language-text">git fetch    
git diff ...origin</code></pre> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ C++ String в Int: як конвертувати рядок в ціле число ]]>
                </title>
                <description>
                    <![CDATA[ При кодуванні в C++ часто потрібно перетворити один тип даних на інший. У цій публікації ви дізнаєтеся, як перетворити рядок на ціле число в C++, переглянувши два найпопулярніші способи. Розпочнімо! Типи даних в С++ Мова програмування C++ має декілька вбудованих типів даних:  * int для цілих чисел (наприклад, 10, ]]>
                </description>
                <link>https://www.freecodecamp.org/ukrainian/news/c-string-v-int-yak-konvertuvaty-ryadok-v-tsile-chyslo-2/</link>
                <guid isPermaLink="false">631b9420e16faf078a4c4326</guid>
                
                    <category>
                        <![CDATA[ C++ ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ rustamdocstranslator ]]>
                </dc:creator>
                <pubDate>Mon, 19 Sep 2022 17:47:24 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/ukrainian/news/content/images/2022/09/5A4E464C-8585-43C0-8B62-45ED4C8EE949.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Оригінальна публікація:</strong> <a href="https://www.freecodecamp.org/news/string-to-int-in-c-how-to-convert-a-string-to-an-integer-example/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">String to Int in C++ – How to Convert a String to an Integer Example</a>
      </p><p>При кодуванні в C++ часто потрібно перетворити один тип даних на інший.</p><p>У цій публікації ви дізнаєтеся, як перетворити рядок на ціле число в C++, переглянувши два найпопулярніші способи.</p><p>Розпочнімо!</p><h2 id="-">Типи даних в С++</h2><p>Мова програмування C++ має декілька вбудованих типів даних:</p><ul><li><code>int</code> для цілих чисел (наприклад, 10, 150)</li><li><code>double</code> для чисел з рухомою комою (наприклад, 5.0, 4.5)</li><li><code>char</code> для окремих символів (наприклад, 'D', '!')</li><li><code>string</code> для послідовності символів (наприклад, "Привіт")</li><li><code>bool</code> для логічних значень (true або false)</li></ul><p>C++ — <strong>строго типізована</strong> мова програмування. Це означає, що коли ви створюєте змінну, ви повинні явно оголосити, який тип значення буде зберігатися в ній.</p><h2 id="-int-c-">Як оголосити та ініціалізувати <code>int</code> в C++</h2><p>Щоб <em>оголосити</em> змінну <code>int</code> в C++, спочатку потрібно написати тип даних змінної: у цьому разі <code>int</code>. Це дозволить компілятору знати, які значення може зберігати змінна і, відповідно, які дії може виконувати.</p><p>Далі вам потрібно надати змінній назву.</p><p>Не забудьте поставити крапку з комою, щоб закінчити інструкцію!</p><pre><code class="language-cpp">#include &lt;iostream&gt;

int main() {
    int age;
}
</code></pre><p>Потім ви можете надати створеній змінній значення, наприклад:</p><pre><code class="language-cpp">#include &lt;iostream&gt;

int main() {
    int age;
    age = 28;
}
</code></pre><p>Замість того, щоб виконувати ці дії як окремі кроки, ви можете поєднати їх, <em>ініціалізувавши</em> змінну та надрукувавши результат:</p><pre><code class="language-cpp">// файл заголовка, який дозволяє використовувати функції для виведення інформації, напр. cout, або введення інформації, напр. cin
#include &lt;iostream&gt;

// інструкція namespace; вам не доведеться використовувати префікс std::
using namespace std;


int main() { // початок основної функції програми
    int age = 28; 
    // ініціалізуйте змінну.
    //Ініціалізація — це надання типу, назви та значення змінної за один раз.

    // вивід на консоль: "My age is 28", з використанням ланцюжка &lt;&lt;
    cout &lt;&lt; "My age: " &lt;&lt; age &lt;&lt; endl;
}// кінець основної функції
</code></pre><h2 id="-string-c-">Як оголосити та ініціалізувати <code>string</code> в C++</h2><p>Рядки — це набір окремих символів.</p><p>Оголошення рядків в C++ дуже подібне до оголошення та ініціалізації <code>int</code>, що ви бачили в розділі вище.</p><p>Стандартна бібліотека C++ надає клас <code>string</code>. Щоб використати рядковий тип даних, потрібно включити бібліотеку заголовків <code>&lt;string&gt;</code> у верхній частині вашого файлу після <code>#include &lt;iostream&gt;</code>.</p><p>Після включення цього файлу заголовка ви також можете додати <code>using namespace std;</code>, що ви бачили раніше.</p><p>Крім того, після додавання цього рядка вам не потрібно буде використовувати <code>std::string</code> під час створення рядкової змінної — тільки <code>string</code>.</p><pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
using namespace std;

int main() {
    //оголосіть рядкову змінну

    string greeting;
    greeting = "Hello";
    //оператор присвоєння `=` присвоює значення змінній

}
</code></pre><p>Або ви можете ініціалізувати рядкову змінну та вивести її на консоль:</p><pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
using namespace std;

int main() {
    //ініціалізуйте рядкову змінну

    string greeting = "Hello";
   
   //виведення "Hello" на консоль
   cout &lt;&lt; greeting &lt;&lt; endl;
}
</code></pre><h2 id="--1">Як конвертувати рядок в ціле число</h2><p>Як згадувалося раніше, C++ є <em>строго типізованою</em> мовою.</p><p>Якщо ви спробуєте надати значення, яке не відповідає типу даних, ви отримаєте помилку.</p><p>Крім того, конвертувати рядок в ціле число не так просто, як використати приведення типів, яке можна використовувати під час конвертації <code>double</code> в <code>int</code>.</p><p>Наприклад, ви <strong>не можете</strong> зробити так:</p><pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
using namespace std;

int main() {
   string str = "7";
   int num;

   num = (int) str;
}
</code></pre><p>Помилка після компілятора:</p><pre><code>hellp.cpp:9:10: error: no matching conversion for C-style cast from 'std::__1::string' (aka
      'basic_string&lt;char, char_traits&lt;char&gt;, allocator&lt;char&gt; &gt;') to 'int'
   num = (int) str;
         ^~~~~~~~~
/Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/string:875:5: note: candidate function
    operator __self_view() const _NOEXCEPT { return __self_view(data(), size()); }
    ^
1 error generated.
</code></pre><p>Існує декілька способів перетворити рядок в ціле число. В наступних розділах розглянемо два з них.</p><h3 id="-stoi-">Як перетворити рядок в число за допомогою функції<strong> <code>stoi()</code></strong></h3><p>Одним з ефективних способів перетворити рядковий об’єкт в число — це використати функцію <code>stoi()</code>.</p><p>Цей метод зазвичай використовується для новіших версій C++, і вводиться в C++11.</p><p>Вона приймає рядкове значення як ввід та повертає ціле число як вивід.</p><pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
using namespace std;

int main() {
   // рядкова змінна з іменем str
   string str = "7";
   // видрукування на консолі
   cout &lt;&lt; "I am a string " &lt;&lt; str &lt;&lt; endl;

   //конвертуйте рядкову змінну str так, щоб вона мала значення int
   //помістіть нове значення в нову змінну, яка тримає значення int, під назвою num
   int num = stoi(str);
   
   //видрукування на консолі
   cout &lt;&lt; "I am an int " &lt;&lt; num &lt;&lt; endl;
}
</code></pre><p>Вивід:</p><pre><code>I am a string 7
I am an int 7
</code></pre><h3 id="-stringstream">Як перетворити рядок в число за допомогою класу <code>stringstream</code></h3><p>Клас <code>stringstream</code> в основному використовують в попередніх версіях C++. Він працює, виконуючи ввід та вивід на рядках.</p><p>Щоб використати його, потрібно включити бібліотеку <code>sstream</code> у верхній частині вашої програми, додавши рядок <code>#include &lt;sstream&gt;</code>.</p><p>Потім додайте <code>stringstream</code> та створіть об’єкт <code>stringstream</code>, який буде тримати значення рядка, який ви хочете конвертувати в число, і який використовуватиметься під час процесу конвертування.</p><p>Використайте оператор <code>&lt;&lt;</code>, щоб <em>витягти</em> рядок із рядкової змінної.</p><p>Використайте оператор <code>&gt;&gt;</code> для <em>введення</em> щойно конвертованого значення в змінну.</p><pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;sstream&gt; // це дозволить вам використовувати stringstream у своїй програмі

using namespace std;

int main() {
    //створіть об’єкт stringstream для вводу/виводу рядків
   stringstream сс; 
   
   // змінна з назвою str, яка має рядковий тип даних
   string str = "7";
   
   // змінна з назвою num, яка має тип даних int
   int num;
   
   
   //вилучіть рядок зі змінної str (введіть рядок у потік)
   сс &lt;&lt; str;
   
   // помістіть конвертоване значення в змінну int
   сс &gt;&gt; num;
   
   //видрукування на консолі
   cout &lt;&lt; num &lt;&lt; endl; // друкує ціле число 7
}
</code></pre><h2 id="--2">Висновок</h2><p>Ось так! Ви побачили два простих способи перетворення рядка в ціле число в C++.</p><p>Дякую, що прочитали. Щасливого навчання 😊</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Як відкрити посилання в новій вкладці за допомогою HTML ]]>
                </title>
                <description>
                    <![CDATA[ Вкладки чудові, чи не так? Вони дозволяють виконувати багато завдань одночасно. Зараз вкладки настільки поширені, що коли ви натискаєте посилання, воно, ймовірно, відкриється в новій вкладці. Якщо ви коли-небудь вдавалися в питання, як це зробити зі своїм посиланням, то ви у правильному місці. Елемент прив’язки Щоб створити посилання на вебсторінці, ]]>
                </description>
                <link>https://www.freecodecamp.org/ukrainian/news/yak-vidkryty-posylannya-v-noviy-vkladtsi-za-dopomohoyu-html/</link>
                <guid isPermaLink="false">63181360e16faf078a4c39c2</guid>
                
                    <category>
                        <![CDATA[ HTML ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ rustamdocstranslator ]]>
                </dc:creator>
                <pubDate>Mon, 19 Sep 2022 17:44:22 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/ukrainian/news/content/images/2022/09/1C971D4C-A381-493C-B137-091CAEFD77AD.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Оригінальна публікація:</strong> <a href="https://www.freecodecamp.org/news/how-to-use-html-to-open-link-in-new-tab/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">How to Use HTML to Open a Link in a New Tab</a>
      </p><p>Вкладки чудові, чи не так? Вони дозволяють виконувати багато завдань одночасно.</p><p>Зараз вкладки настільки поширені, що коли ви натискаєте посилання, воно, ймовірно, відкриється в новій вкладці.</p><p>Якщо ви коли-небудь вдавалися в питання, як це зробити зі своїм посиланням, то ви у правильному місці.</p><h2 id="-">Елемент прив’язки</h2><p>Щоб створити посилання на вебсторінці, вам потрібно обернути елемент (текст, зображення тощо) в елемент прив’язки (<code>&lt;a&gt;</code>) та встановити його атрибут <code>href</code> як адресу, на яку ви хочете зробити посилання.</p><pre><code class="language-html">&lt;p&gt;Відвідайте &lt;a href="https://www.freecodecamp.org/ukrainian"&gt;freeCodeCamp&lt;/a&gt;.&lt;/p&gt;</code></pre><p>Відвідайте <a href="https://www.freecodecamp.org/ukrainian">freeCodeCamp</a>.</p><p>Якщо ви натиснете на посилання вище, браузер відкриє посилання в поточному вікні або вкладці. Це поведінка за замовчуванням в кожному браузері.</p><p>Щоб відкрити посилання в новій вкладці, нам потрібно буде переглянути інші атрибути елемента прив’язки.</p><h2 id="-target">Атрибут Target</h2><p>Цей атрибут каже браузеру, як відкрити посилання.</p><p>Щоб відкрити посилання в новій вкладці, просто встановіть атрибут <code>target</code> &nbsp;на <code>_blank</code>:</p><pre><code class="language-html">&lt;p&gt;Відвідайте &lt;a href="https://www.freecodecamp.org/ukrainian" target="_blank"&gt;freeCodeCamp&lt;/a&gt;.&lt;/p&gt;</code></pre><p>Тепер, коли хтось клацає на посилання, воно відкривається в новій вкладці або, можливо, у новому вікні (залежно від налаштувань браузера).</p><h2 id="-target-_blank">Проблеми безпеки через <code>target="_blank"</code></h2><p>Я наполегливо рекомендую вам додавати <code>rel="noreferrer noopener"</code> до елемента прив’язки кожного разу, коли ви використовуєте атрибут <code>target</code>:</p><pre><code class="language-html">&lt;p&gt;Відвідайте &lt;a href="https://www.freecodecamp.org/ukrainian" target="_blank" rel="noopener noreferrer"&gt;freeCodeCamp&lt;/a&gt;.&lt;/p&gt;</code></pre><p>Це призводить до наступного виводу:</p><p>Відвідайте <a href="https://www.freecodecamp.org/ukrainian">freeCodeCamp</a>.</p><p>Атрибут <code>rel</code> встановлює зв’язок між вашою сторінкою та приєднаною адресою. Значення <code>noopener noreferrer</code> запобігає типу фішингу, відомому як табнабінг (захоплення вкладки).</p><h2 id="--1">Що таке табнабінг?</h2><p>Табнабінг — це експлойт, який використовує стандартну поведінку браузера з <code>target="_blank"</code> для отримання часткового доступу до сторінки через API <code>window.object</code>.</p><p>Табнабінг може спрямувати вас на підроблену сторінку. Більшості користувачів це буде важко помітити, оскільки фокус буде на вкладці, яка щойно відкрилася, а не на початковій вкладці з вашою сторінкою.</p><p>Потім людина повертається на вкладку з вашою сторінкою, натомість бачить підроблену сторінку та може ввести свої дані для входу.</p><h2 id="--2">Підсумки</h2><p>За допомогою HTML легко відкрити посилання в новій вкладці. Вам просто потрібен елемент прив’язки (<code>&lt;a&gt;</code>) з трьома важливими атрибутами:</p><ol><li>Атрибут <code>href</code>, встановлений на потрібну адресу</li><li>Атрибут <code>target</code>, встановлений на <code>_blank</code>, що вказує браузеру відкривати посилання в новій вкладці/вікні, залежно від налаштувань браузера</li><li>Атрибут <code>rel</code>, встановлений на <code>noreferrer noopener</code>, щоб запобігти можливим зловмисним атакам </li></ol><p>Знову ж таки, ось повний робочий приклад:</p><pre><code class="language-html">&lt;p&gt;Відвідайте &lt;a href="https://www.freecodecamp.org/ukrainian" target="_blank" rel="noopener noreferrer"&gt;freeCodeCamp&lt;/a&gt;.&lt;/p&gt;</code></pre><p>Що призводить до такого виводу в браузері:</p><p>Відвідайте <a href="https://www.freecodecamp.org/ukrainian">freeCodeCamp</a>.</p><p>Ще раз дякую, що прочитали. Щасливого програмування.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Специфікатори формату в С ]]>
                </title>
                <description>
                    <![CDATA[ Специфікатори формату визначають тип даних для друку на стандартному виводі. Ви повинні використовувати специфікатори формату незалежно від того, друкуєте ви відформатований вивід з printf() чи приймаєте ввід з scanf(). Ось деякі специфікатори %, які можна використовувати в ANSI C: СпецифікаторВикористовують для%cодиничний символ%sрядок%hiкоротке (знакове)%hu коротке (беззнакове)%Lfдовге подвійне%nнічого не друкує%dдесяткове ціле число ]]>
                </description>
                <link>https://www.freecodecamp.org/ukrainian/news/spetsyfikatory-formatu-v-c/</link>
                <guid isPermaLink="false">63003f001176440771bf43e3</guid>
                
                    <category>
                        <![CDATA[ C ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ rustamdocstranslator ]]>
                </dc:creator>
                <pubDate>Mon, 19 Sep 2022 17:42:26 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/ukrainian/news/content/images/2022/08/D4DD0647-E84F-4CE6-99A3-4C3B800E57FF.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Оригінальна публікація:</strong> <a href="https://www.freecodecamp.org/news/format-specifiers-in-c/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Format Specifiers in C</a>
      </p><p>Специфікатори формату визначають тип даних для друку на стандартному виводі. Ви повинні використовувати специфікатори формату незалежно від того, друкуєте ви відформатований вивід з <code>printf()</code> чи приймаєте ввід з <code>scanf()</code>.</p><p>Ось деякі специфікатори %, які можна використовувати в ANSI C:</p><!--kg-card-begin: html--><table>
<thead>
<tr>
<th>Специфікатор</th>
<th>Використовують для</th>
</tr>
</thead>
<tbody>
<tr>
<td>%c</td>
<td>одиничний символ</td>
</tr>
<tr>
<td>%s</td>
<td>рядок</td>
</tr>
<tr>
<td>%hi</td>
<td>коротке (знакове)</td>
</tr>
<tr>
<td>%hu</td>
<td>коротке (беззнакове)</td>
</tr>
<tr>
<td>%Lf</td>
<td>довге подвійне</td>
</tr>
<tr>
<td>%n</td>
<td>нічого не друкує</td>
</tr>
<tr>
<td>%d</td>
<td>десяткове ціле число (припускає базу 10)</td>
</tr>
<tr>
<td>%i</td>
<td>десяткове ціле число (автоматично визначає базу)</td>
</tr>
<tr>
<td>%o</td>
<td>вісімкове ціле число</td>
</tr>
<tr>
<td>%x</td>
<td>шістнадцяткове ціле число</td>
</tr>
<tr>
<td>%p</td>
<td>адреса (або вказівник)</td>
</tr>
<tr>
<td>%f</td>
<td>число з рухомою комою</td>
</tr>
<tr>
<td>%u</td>
<td>десяткове ціле число (беззнакове)</td>
</tr>
<tr>
<td>%e</td>
<td>число з рухомою комою в експоненціальному записі</td>
</tr>
<tr>
<td>%E</td>
<td>число з рухомою комою в експоненціальному записі</td>
</tr>
<tr>
<td>%%</td>
<td>символ %</td>
</tr>
</tbody>
</table><!--kg-card-end: html--><h2 id="-"><strong>Приклади:</strong></h2><h3 id="-c-"><strong>Специфікатор формату одиничного символу <code>%c</code>:</strong></h3><pre><code class="language-c">#include &lt;stdio.h&gt; 

int main() { 
  char first_ch = 'f'; 
  printf("%c\n", first_ch); 
  return 0; 
} </code></pre><p><strong>Вивід<strong>:</strong></strong></p><pre><code>f</code></pre><h3 id="-s-"><strong>Специфікатор формату рядка <code>%s</code>:</strong></h3><pre><code class="language-c">#include &lt;stdio.h&gt; 

int main() { 
  char str[] = "freeCodeCamp"; 
  printf("%s\n", str); 
  return 0; 
} </code></pre><p><strong>Вивід<strong>:</strong></strong></p><pre><code>freeCodeCamp</code></pre><h3 id="-c--1"><strong>Ввід одиничного символу з специфікатором формату <code>%c</code>:</strong></h3><pre><code class="language-c">#include &lt;stdio.h&gt; 

int main() { 
  char user_ch; 
  scanf("%c", &amp;user_ch); // user inputs Y
  printf("%c\n", user_ch); 
  return 0; 
} </code></pre><p><strong>Вивід<strong>:</strong></strong></p><pre><code>Y</code></pre><h3 id="-s--1"><strong>Ввід рядка з специфікатором формату <code>%s</code>:</strong></h3><pre><code class="language-c">#include &lt;stdio.h&gt; 

int main() { 
  char user_str[20]; 
  scanf("%s", user_str); // user inputs fCC
  printf("%s\n", user_str); 
  return 0; 
} </code></pre><p><strong>Вивід<strong>:</strong></strong></p><pre><code>fCC</code></pre><h3 id="-d-i-"><strong>Специфікатори формату десяткового цілого числа <code>%d</code> та <code>%i</code>:</strong></h3><pre><code class="language-c">#include &lt;stdio.h&gt; 

int main() { 
  int found = 2015, curr = 2020; 
  printf("%d\n", found); 
  printf("%i\n", curr); 
  return 0; 
} </code></pre><p><strong>Вивід<strong>:</strong></strong></p><pre><code>2015
2020</code></pre><h3 id="-f-e-"><strong>Специфікатори формату числа з рухомою комою <code>%f</code> та <code>%e</code>:</strong></h3><pre><code class="language-c">#include &lt;stdio.h&gt;

int main() { 
  float num = 19.99; 
  printf("%f\n", num); 
  printf("%e\n", num); 
  return 0; 
}</code></pre><p><strong>Вивід<strong>:</strong></strong></p><pre><code>19.990000
1.999000e+01</code></pre><h3 id="-o-"><strong>Специфікатор формату вісімкового цілого числа <code>%o</code>:</strong></h3><pre><code>#include &lt;stdio.h&gt; 

int main() { 
  int num = 31; 
  printf("%o\n", num); 
  return 0; 
}</code></pre><p><strong>Вивід<strong>:</strong></strong></p><pre><code>37</code></pre><h3 id="-x-"><strong>Специфікатор формату шістнадцяткового цілого числа <code>%x</code>:</strong></h3><pre><code class="language-c">#include &lt;stdio.h&gt; 

int main() { 
  int c = 28; 
  printf("%x\n", c); 
  return 0; 
} </code></pre><p><strong>Вивід<strong>:</strong></strong></p><pre><code>1c</code></pre> ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
