<?xml version="1.0" encoding="utf-8" ?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:tt="http://teletype.in/" xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/"><title>DenDdeiSh Lty</title><author><name>DenDdeiSh Lty</name></author><id>https://teletype.in/atom/denddeish</id><link rel="self" type="application/atom+xml" href="https://teletype.in/atom/denddeish?offset=0"></link><link rel="alternate" type="text/html" href="https://teletype.in/@denddeish?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=denddeish"></link><link rel="next" type="application/rss+xml" href="https://teletype.in/atom/denddeish?offset=10"></link><link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></link><updated>2026-04-15T01:06:04.026Z</updated><entry><id>denddeish:vim-cheat-sheet</id><link rel="alternate" type="text/html" href="https://teletype.in/@denddeish/vim-cheat-sheet?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=denddeish"></link><title>⚡ Advanced Vim Cheat Sheet</title><published>2025-04-25T08:47:22.698Z</published><updated>2025-04-25T08:47:58.130Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img2.teletype.in/files/51/61/51618cae-e771-4e38-8300-7aed26220fd5.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img3.teletype.in/files/a8/47/a8473033-7852-401b-b71c-348622abe884.png&quot;&gt;Ця шпаргалка включає потужні і зручні у щоденному використанні команди та фічі Vim, що значно підвищують ефективність.</summary><content type="html">
  &lt;p id=&quot;aCa7&quot;&gt;Ця шпаргалка включає потужні і зручні у щоденному використанні команди та фічі Vim, що значно підвищують ефективність. &lt;/p&gt;
  &lt;p id=&quot;Q1Ph&quot;&gt;Вона орієнтована на користувачів, які впевнено володіють базовими навичками та прагнуть редагувати код ще швидше й зручніше.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;8tR0&quot;&gt;📂 Покращена навігація по файлу&lt;/h2&gt;
  &lt;ul id=&quot;C2fA&quot;&gt;
    &lt;li id=&quot;p4kt&quot;&gt;&lt;code&gt;&amp;#x27;&amp;#x27;&lt;/code&gt; — повернення до попередньої позиції курсора (наприклад, після переходу по пошуку)&lt;/li&gt;
    &lt;li id=&quot;Ymax&quot;&gt;&lt;code&gt;gi&lt;/code&gt; — переміститись у позицію, де востаннє редагувався текст у Insert режимі&lt;/li&gt;
    &lt;li id=&quot;2bRz&quot;&gt;&lt;code&gt;gd&lt;/code&gt; — перейти до визначення змінної або функції&lt;/li&gt;
    &lt;li id=&quot;3yKL&quot;&gt;&lt;code&gt;%&lt;/code&gt; — стрибок між відкриваючою і закриваючою дужкою/лапкою/фігурними дужками (&lt;code&gt;()&lt;/code&gt;, &lt;code&gt;{}&lt;/code&gt;, &lt;code&gt;[]&lt;/code&gt;).&lt;/li&gt;
    &lt;li id=&quot;WoVN&quot;&gt;&lt;code&gt;zz&lt;/code&gt; — прокрутити так, щоб поточний рядок був по центру екрану.&lt;/li&gt;
    &lt;li id=&quot;QiNh&quot;&gt;&lt;code&gt;zt&lt;/code&gt;, &lt;code&gt;zb&lt;/code&gt; — прокрутити так, щоб поточний рядок був зверху або знизу.&lt;/li&gt;
    &lt;li id=&quot;zC0K&quot;&gt;&lt;code&gt;Ctrl-d&lt;/code&gt;, &lt;code&gt;Ctrl-u&lt;/code&gt; — прокрутити на півсторінки вниз/вгору.&lt;/li&gt;
    &lt;li id=&quot;0kn2&quot;&gt;&lt;code&gt;Ctrl-e&lt;/code&gt;, &lt;code&gt;Ctrl-y&lt;/code&gt; — прокрутити екран на 1 рядок вниз/вгору без переміщення курсора.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;AKiN&quot;&gt;✂️ Робота з текстом&lt;/h2&gt;
  &lt;h3 id=&quot;WRyk&quot;&gt;усередині дужок, лапок, тегів&lt;/h3&gt;
  &lt;blockquote id=&quot;yPwE&quot;&gt;Всі ці команди працюють з: &lt;code&gt;()&lt;/code&gt;, &lt;code&gt;{}&lt;/code&gt;, &lt;code&gt;[]&lt;/code&gt;, &lt;code&gt;&amp;lt;&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;, &lt;code&gt;&amp;#x27;&amp;#x27;&lt;/code&gt;&lt;/blockquote&gt;
  &lt;ul id=&quot;o3er&quot;&gt;
    &lt;li id=&quot;HwUt&quot;&gt;&lt;code&gt;di&amp;quot;&lt;/code&gt; — видалити текст всередині подвійних лапок&lt;/li&gt;
    &lt;li id=&quot;ZqOG&quot;&gt;&lt;code&gt;ci&amp;#x27;&lt;/code&gt; — змінити текст всередині одинарних лапок&lt;/li&gt;
    &lt;li id=&quot;zgVI&quot;&gt;&lt;code&gt;da(&lt;/code&gt; — видалити дужки і все всередині&lt;/li&gt;
    &lt;li id=&quot;kNjf&quot;&gt;&lt;code&gt;yi{&lt;/code&gt; — скопіювати текст усередині фігурних дужок&lt;/li&gt;
    &lt;li id=&quot;l16v&quot;&gt;&lt;code&gt;va&amp;quot;&lt;/code&gt; — візуально виділити лапки і їх вміст&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;TpHe&quot;&gt;💡 &lt;strong&gt;Шаблон&lt;/strong&gt;:&lt;/p&gt;
  &lt;ul id=&quot;W5h3&quot;&gt;
    &lt;li id=&quot;7FGh&quot;&gt;&lt;code&gt;d&lt;/code&gt; (delete), &lt;code&gt;c&lt;/code&gt; (change), &lt;code&gt;y&lt;/code&gt; (yank) + &lt;code&gt;i&lt;/code&gt; (inside) або &lt;code&gt;a&lt;/code&gt; (around) + символ&lt;/li&gt;
  &lt;/ul&gt;
  &lt;h3 id=&quot;O9as&quot;&gt;Вставка  і візуальна робота&lt;/h3&gt;
  &lt;ul id=&quot;Ujsd&quot;&gt;
    &lt;li id=&quot;s3Ux&quot;&gt;&lt;code&gt;:sort&lt;/code&gt; — сортує виділені рядки (додайте &lt;code&gt;!&lt;/code&gt; для зворотного порядку)&lt;/li&gt;
    &lt;li id=&quot;2FYB&quot;&gt;&lt;code&gt;gU&lt;/code&gt; / &lt;code&gt;gu&lt;/code&gt; — зміна регістру тексту&lt;/li&gt;
    &lt;li id=&quot;ZHOv&quot;&gt;&lt;strong&gt;&lt;code&gt;o&lt;/code&gt; &lt;/strong&gt;/&lt;strong&gt; &lt;code&gt;O&lt;/code&gt;&lt;/strong&gt; — відкрити новий рядок для введення тексту &lt;strong&gt;o&lt;/strong&gt;після поточного / &lt;strong&gt;O&lt;/strong&gt;перед поточним&lt;/li&gt;
    &lt;li id=&quot;l97N&quot;&gt;&lt;strong&gt;&lt;code&gt;u&lt;/code&gt; &lt;/strong&gt;/ &lt;strong&gt;&lt;code&gt;Ctrl+R&lt;/code&gt;&lt;/strong&gt; — скасувати останню дію (undo) / повторити скасоване (redo). Ви можете багаторазово використовувати &lt;code&gt;u&lt;/code&gt; для відміни кількох змін поспіль, а &lt;code&gt;Ctrl+R&lt;/code&gt; – щоб повернути їх назад.&lt;/li&gt;
    &lt;li id=&quot;eGu7&quot;&gt;&lt;strong&gt;&lt;code&gt;.&lt;/code&gt;&lt;/strong&gt; (крапка) — повторити останню виконану команду редагування​. Після будь-якої дії (видалення, вставки тощо) &lt;code&gt;.&lt;/code&gt; виконає її знову. Наприклад, введіть новий рядок командою &lt;code&gt;o&lt;/code&gt; і натисніть &lt;code&gt;Esc&lt;/code&gt;, а потім &lt;code&gt;5.&lt;/code&gt; – створиться ще 5 таких самих рядків&lt;/li&gt;
  &lt;/ul&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;KMAz&quot;&gt;🔁 Макроси (автоматизація рутини)&lt;/h2&gt;
  &lt;ul id=&quot;KBGl&quot;&gt;
    &lt;li id=&quot;rTqc&quot;&gt;&lt;code&gt;qq&lt;/code&gt; → дії → &lt;code&gt;q&lt;/code&gt; — записати макрос у &lt;code&gt;q&lt;/code&gt;&lt;/li&gt;
    &lt;li id=&quot;85rM&quot;&gt;&lt;code&gt;@q&lt;/code&gt; — виконати макрос&lt;/li&gt;
    &lt;li id=&quot;FI9y&quot;&gt;&lt;code&gt;100@q&lt;/code&gt; — повторити 100 разів&lt;/li&gt;
    &lt;li id=&quot;aRtj&quot;&gt;&lt;code&gt;:&amp;#x27;&amp;lt;,&amp;#x27;&amp;gt;normal @q&lt;/code&gt; — застосувати макрос до виділених рядків&lt;/li&gt;
  &lt;/ul&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;vgWw&quot;&gt;🔎 Пошук і заміна&lt;/h2&gt;
  &lt;ul id=&quot;uNvw&quot;&gt;
    &lt;li id=&quot;GmH0&quot;&gt;&lt;code&gt;/слово&lt;/code&gt; — пошук слова&lt;/li&gt;
    &lt;li id=&quot;HF74&quot;&gt;&lt;strong&gt;&lt;code&gt;n&lt;/code&gt; &lt;/strong&gt;/&lt;strong&gt; &lt;code&gt;N&lt;/code&gt;&lt;/strong&gt; — перейти до наступного / попереднього знайденого результату пошуку&lt;/li&gt;
    &lt;li id=&quot;3j42&quot;&gt;&lt;code&gt;:noh&lt;/code&gt; — прибрати підсвітку, після пошуку&lt;/li&gt;
    &lt;li id=&quot;1aoP&quot;&gt;&lt;code&gt;:%s/old/new/g&lt;/code&gt; — заміна у всьому файлі з old (старе слово) на new (нове слово)&lt;/li&gt;
    &lt;li id=&quot;rxFt&quot;&gt;&lt;code&gt;:%s/\s\+$//e&lt;/code&gt; — прибрати пробіли в кінці рядків&lt;/li&gt;
  &lt;/ul&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;lNr6&quot;&gt;📁 Робота з файлами та буферами&lt;/h2&gt;
  &lt;ul id=&quot;Qjc9&quot;&gt;
    &lt;li id=&quot;gIbt&quot;&gt;&lt;code&gt;:Explore&lt;/code&gt; — файловий менеджер (netrw)&lt;/li&gt;
    &lt;li id=&quot;bnHz&quot;&gt;&lt;code&gt;:e!&lt;/code&gt; — скасувати всі зміни та перезавантажити файл&lt;/li&gt;
    &lt;li id=&quot;E4Dn&quot;&gt;&lt;code&gt;:split файл.cpp&lt;/code&gt; — відкрити в новому вікні&lt;/li&gt;
    &lt;li id=&quot;3FjT&quot;&gt;&lt;code&gt;Ctrl-w w&lt;/code&gt; — міжвіконна навігація&lt;/li&gt;
  &lt;/ul&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;MO5R&quot;&gt;&lt;/h2&gt;
  &lt;h2 id=&quot;re94&quot;&gt;🔌 Найкорисніші плагіни Vim&lt;/h2&gt;
  &lt;p id=&quot;RD6E&quot;&gt;&lt;/p&gt;
  &lt;ul id=&quot;5i8t&quot;&gt;
    &lt;li id=&quot;KVgu&quot;&gt;&lt;strong&gt;NERDTree&lt;/strong&gt; — популярний файловий провідник у Vim. Дає змогу виводити дерево директорій збоку редактора, відкривати файли і папки одним натисканням. Дуже зручний для навігації по проекту прямо в Vim​. &lt;em&gt;На зображенні ліворуч показано панель NERDTree, що відображає дерево файлів проекту.&lt;/em&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;figure id=&quot;5xsq&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/a8/47/a8473033-7852-401b-b71c-348622abe884.png&quot; width=&quot;1000&quot; /&gt;
  &lt;/figure&gt;
  &lt;ul id=&quot;uKcD&quot;&gt;
    &lt;li id=&quot;VLSj&quot;&gt;&lt;strong&gt;vim-surround&lt;/strong&gt; — плагін для маніпуляції &lt;em&gt;оточеннями&lt;/em&gt; символів. Дозволяє легко додавати, змінювати або видаляти парні символи навколо тексту – лапки, дужки, HTML-теги тощо однією командою​. Наприклад, команда &lt;code&gt;cs&amp;quot;&amp;#x27;&lt;/code&gt; замінить оточення з подвійних лапок на одинарні для рядка під курсором, а &lt;code&gt;ds(&lt;/code&gt; видалить круглі дужки навколо фрагмента. Це значно прискорює правки коду, пов’язані з дужками і лапками.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;ul id=&quot;506M&quot;&gt;
    &lt;li id=&quot;eyzc&quot;&gt;&lt;strong&gt;vim-fugitive&lt;/strong&gt; — потужний Git-плагін для Vim, який інтегрує команди Git прямо в редактор. Fugitive дозволяє виконувати більшість Git-операцій: перегляд статусу (&lt;code&gt;:Gstatus&lt;/code&gt;), диференцій (&lt;code&gt;:Gdiff&lt;/code&gt;), логів, blame, коміт прямо з Vim. Для розробника, що працює з Git у консолі, Fugitive швидко стане незамінним.&lt;/li&gt;
    &lt;li id=&quot;pawf&quot;&gt;&lt;strong&gt;vim-gitgutter&lt;/strong&gt; — відображає індикатори змін у полі зліва від коду для файлів під Git-контролем. Плагін показує значки поруч з номерами рядків для кожного доданого, зміненого чи видаленого рядка, порівняно з останнім комітом​&lt;a href=&quot;https://github.com/airblade/vim-gitgutter#:~:text=A%20Vim%20plugin%20which%20shows,provides%20a%20hunk%20text%20object&quot; target=&quot;_blank&quot;&gt;.&lt;/a&gt; Це дає швидкий візуальний фідбек про те, які рядки ви змінили. Крім того, vim-gitgutter надає команди для переходу між зміненими місцями та швидкого стаджинг/відміни конкретних змін (hunks) прямо з Vim. Альтернативами є &lt;em&gt;vim-signify&lt;/em&gt; і &lt;em&gt;GitSigns&lt;/em&gt; (Neovim).&lt;/li&gt;
    &lt;li id=&quot;qefR&quot;&gt;&lt;strong&gt;fzf.vim&lt;/strong&gt; — інтеграція інструменту &lt;em&gt;fzf (fuzzy finder)&lt;/em&gt; з Vim для надшвидкого пошуку файлів, буферів, історії команд тощо. Fzf – це загальне консольне засіб для нечіткого пошуку, що інтерактивно відфільтровує список елементів (файлів, рядків, команд) за поданим рядком запиту​&lt;a href=&quot;https://github.com/junegunn/fzf#:~:text=GitHub%20github,command%20history%2C%20processes%2C%20hostnames%2C&quot; target=&quot;_blank&quot;&gt;.&lt;/a&gt; Плагін додає команди &lt;code&gt;:Files&lt;/code&gt;, &lt;code&gt;:Buffers&lt;/code&gt;, &lt;code&gt;:Rg&lt;/code&gt; та інші, які відкривають плаваюче вікно пошуку. Ви можете почати вводити назву файлу чи фрагмент текста – і список миттєво звузиться до відповідних елементів. Вибраний файл або результат пошуку відкриється у Vim. &lt;em&gt;fzf.vim&lt;/em&gt; значно прискорює навігацію у великих проектах, де набагато ефективніше знайти файл по кількох літерах, ніж пам’ятати довгі шляхи.&lt;/li&gt;
    &lt;li id=&quot;f5au&quot;&gt;&lt;strong&gt;coc.nvim (Conquer of Completion)&lt;/strong&gt; — повноцінний механізм автодоповнення та мовного серверу (LSP) у Vim. Працює як хост для мовних серверів (аналог VS Code) на базі Node.js, надаючи &lt;em&gt;«інтелектуальні»&lt;/em&gt; підказки коду, автодоповнення, перейменування, перехід до визначення і т.д. у Vim8/Neovim​&lt;a href=&quot;https://vimawesome.com/plugin/coc-nvim#:~:text=coc.nvim%20,VSCode%20and%20host%20language%20servers&quot; target=&quot;_blank&quot;&gt;.&lt;/a&gt; Після встановлення &lt;em&gt;coc.nvim&lt;/em&gt; можна додати розширення (наприклад, &lt;em&gt;coc-tsserver&lt;/em&gt; для TypeScript, &lt;em&gt;coc-pyright&lt;/em&gt; для Python і т.д.), які в режимі реального часу підсвічують помилки, показують документацію по наведенням, автодоповнюють код так само, як це робить VS Code. Для досвідченого користувача Vim цей плагін відкриває можливості сучасних IDE без потреби залишати улюблений редактор.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;q6Ig&quot;&gt;&lt;em&gt;(Звісно, існує багато інших чудових плагінів – менеджери сніпетів (UltiSnips), швидка навігація (EasyMotion/vim-sneak), покращення інтерфейсу (vim-airline), але наведені вище є найбільш універсальними та корисними для щоденної роботи.)&lt;/em&gt;&lt;/p&gt;

</content></entry><entry><id>denddeish:git-cheat-sheet</id><link rel="alternate" type="text/html" href="https://teletype.in/@denddeish/git-cheat-sheet?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=denddeish"></link><title>Шпаргалка по Git</title><published>2025-04-12T08:39:11.782Z</published><updated>2025-04-12T08:46:49.364Z</updated><summary type="html">Після встановлення Git, варто зазначити ваше ім'я і email, щоб наприклад GitHub міг розуміти що зміни вносить саме ваш акаунт.

Git зберігає ім’я та email автора кожного коміту. Щоб не вводити їх щоразу, виконайте глобальну конфігурацію:</summary><content type="html">
  &lt;hr /&gt;
  &lt;h2 id=&quot;7zs5&quot;&gt;Налаштування&lt;/h2&gt;
  &lt;p id=&quot;IOVt&quot;&gt;Після встановлення Git, варто зазначити ваше ім&amp;#x27;я і email, щоб наприклад GitHub міг розуміти що зміни вносить саме ваш акаунт.&lt;br /&gt;&lt;br /&gt;Git зберігає ім’я та email автора кожного коміту. Щоб не вводити їх щоразу, виконайте глобальну конфігурацію:&lt;/p&gt;
  &lt;pre id=&quot;Snpf&quot; data-lang=&quot;bash&quot;&gt;git config --global user.name &amp;quot;Your Name&amp;quot;
git config --global user.email &amp;quot;your@email.com&amp;quot;&lt;/pre&gt;
  &lt;p id=&quot;YZjL&quot;&gt;Ці значення автоматично підставлятимуться до кожного коміту, що прискорює роботу та забезпечує правильну авторизацію.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;XI0Q&quot;&gt;Початок роботи&lt;/h2&gt;
  &lt;p id=&quot;bRyG&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;HZjj&quot;&gt;Основні команди для створення нового проєкту або клонування вже існуючого.&lt;/p&gt;
  &lt;ul id=&quot;o5oL&quot;&gt;
    &lt;li id=&quot;9oP4&quot;&gt;&lt;code&gt;git init&lt;/code&gt; — ініціалізувати новий локальний репозиторій у поточній папці&lt;/li&gt;
    &lt;li id=&quot;TRXz&quot;&gt;&lt;code&gt;git clone &amp;lt;url&amp;gt;&lt;/code&gt; — клонувати віддалений репозиторій (наприклад, з GitHub)&lt;/li&gt;
    &lt;li id=&quot;ku8S&quot;&gt;&lt;code&gt;git status&lt;/code&gt; — перевірити поточний стан: які файли змінено, додано або видалено&lt;/li&gt;
    &lt;li id=&quot;m7FK&quot;&gt;&lt;code&gt;git log --oneline --graph --all --decorate&lt;/code&gt; — побудувати зручне дерево комітів, показати гілки, теги, HEAD&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;lyRA&quot;&gt;&lt;/p&gt;
  &lt;blockquote id=&quot;BFgc&quot;&gt;💡 &lt;strong&gt;Порада:&lt;/strong&gt; Створіть аліас для зручного перегляду історії:&lt;/blockquote&gt;
  &lt;p id=&quot;cWgJ&quot;&gt;&lt;code&gt;alias gitlog=&amp;#x27;log --oneline --decorate --graph --all&amp;#x27;&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;NBMK&quot;&gt;Тепер замість довгої команди достатньо написати &lt;code&gt;gitlog&lt;/code&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;zKJL&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;Kfdj&quot;&gt;📦 Додавання/Коміти&lt;/h2&gt;
  &lt;p id=&quot;0c50&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;6Psl&quot;&gt;Додавання змін до staging-області, перегляд та створення комітів.&lt;/p&gt;
  &lt;ul id=&quot;yoEP&quot;&gt;
    &lt;li id=&quot;aYYQ&quot;&gt;&lt;code&gt;git add .&lt;/code&gt; — додати всі зміни в поточній папці та її вкладених папках.&lt;/li&gt;
    &lt;li id=&quot;2iwR&quot;&gt;&lt;code&gt;git add &amp;lt;file&amp;gt;&lt;/code&gt; — додати конкретний файл.&lt;/li&gt;
    &lt;li id=&quot;Wu2o&quot;&gt;&lt;code&gt;git add folder/&lt;/code&gt; — додати всі файли з вказаної теки.&lt;/li&gt;
    &lt;li id=&quot;Jqe1&quot;&gt;&lt;code&gt;git add -p&lt;/code&gt; — додати зміни частинами — з можливістю прийняти або пропустити кожен блок.&lt;/li&gt;
    &lt;li id=&quot;ie1Y&quot;&gt;&lt;code&gt;git reset &amp;lt;file&amp;gt;&lt;/code&gt; — вилучити файл із staging без втрати змін у файлі.&lt;/li&gt;
    &lt;li id=&quot;6Rnx&quot;&gt;&lt;code&gt;git commit -m &amp;quot;повідомлення&amp;quot;&lt;/code&gt; — створити новий коміт із вказаним повідомленням.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;JhHk&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;bRei&quot;&gt;🌿 Гілки (Branches)&lt;/h2&gt;
  &lt;p id=&quot;nWjc&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;4mib&quot;&gt;Робота з паралельними гілками: створення, перемикання та злиття.&lt;/p&gt;
  &lt;ul id=&quot;5tdl&quot;&gt;
    &lt;li id=&quot;TdOY&quot;&gt;&lt;code&gt;git branch&lt;/code&gt; — показати список усіх локальних гілок.&lt;/li&gt;
    &lt;li id=&quot;jSB7&quot;&gt;&lt;code&gt;git branch &amp;lt;name&amp;gt;&lt;/code&gt; — створити нову гілку.&lt;/li&gt;
    &lt;li id=&quot;JEmu&quot;&gt;&lt;code&gt;git checkout &amp;lt;name&amp;gt;&lt;/code&gt; — перейти до існуючої гілки.&lt;/li&gt;
    &lt;li id=&quot;f3ov&quot;&gt;&lt;code&gt;git checkout -b &amp;lt;name&amp;gt;&lt;/code&gt; — створити гілку і відразу перейти до неї.&lt;/li&gt;
    &lt;li id=&quot;4efQ&quot;&gt;&lt;code&gt;git merge &amp;lt;branch&amp;gt;&lt;/code&gt; — злити вказану гілку в поточну.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;Zy3F&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;ZqPb&quot;&gt;🌐 Remote (GitHub)&lt;/h2&gt;
  &lt;p id=&quot;XpD8&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;X4k1&quot;&gt;Команди для взаємодії з віддаленим репозиторієм: завантаження, оновлення, синхронізація.&lt;/p&gt;
  &lt;ul id=&quot;Tr2B&quot;&gt;
    &lt;li id=&quot;ZVeG&quot;&gt;&lt;code&gt;git remote -v&lt;/code&gt; — показати URL-адреси пов’язаних репозиторіїв (origin, upstream тощо).&lt;/li&gt;
    &lt;li id=&quot;CbPl&quot;&gt;&lt;code&gt;git push&lt;/code&gt; — надіслати зміни у віддалену гілку.&lt;/li&gt;
    &lt;li id=&quot;LfsN&quot;&gt;&lt;code&gt;git push -u origin &amp;lt;branch&amp;gt;&lt;/code&gt; — push + створити зв&amp;#x27;язок між локальною та віддаленою гілкою.&lt;/li&gt;
    &lt;li id=&quot;lU7X&quot;&gt;&lt;code&gt;git pull&lt;/code&gt; — отримати та об&amp;#x27;єднати зміни з віддаленого репозиторію.&lt;/li&gt;
    &lt;li id=&quot;hYOt&quot;&gt;&lt;code&gt;git fetch --prune origin&lt;/code&gt; — завантажити нові дані та видалити посилання на віддалені гілки, які більше не існують.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;1dEZ&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;vNT4&quot;&gt;🦑 Stash (&amp;quot;заначка&amp;quot;)&lt;/h2&gt;
  &lt;p id=&quot;7jT6&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;DKfa&quot;&gt;Tимчасове збереження змін, щоб можна було перемкнутися на іншу гілку без втрати роботи.&lt;/p&gt;
  &lt;ul id=&quot;Srnt&quot;&gt;
    &lt;li id=&quot;IG70&quot;&gt;&lt;code&gt;git stash&lt;/code&gt; — сховати всі поточні незакомічені зміни.&lt;/li&gt;
    &lt;li id=&quot;ZLJg&quot;&gt;&lt;code&gt;git stash list&lt;/code&gt; — переглянути список усіх схованих змін.&lt;/li&gt;
    &lt;li id=&quot;WNpY&quot;&gt;&lt;code&gt;git stash apply&lt;/code&gt; — відновити останню заначку без видалення з історії.&lt;/li&gt;
    &lt;li id=&quot;Bpk8&quot;&gt;&lt;code&gt;git stash pop&lt;/code&gt; — відновити і одразу видалити останню заначку зі списку.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;PFub&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;vfP3&quot;&gt;⚠️ Відкат і похідне&lt;/h2&gt;
  &lt;p id=&quot;u7Og&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;Iqn7&quot;&gt;Як повернутися до попередніх версій файлів або комітів.&lt;/p&gt;
  &lt;ul id=&quot;GWcO&quot;&gt;
    &lt;li id=&quot;bpJ1&quot;&gt;&lt;code&gt;git checkout &amp;lt;file&amp;gt;&lt;/code&gt; — відновити файл зі збереженого коміту.&lt;/li&gt;
    &lt;li id=&quot;6RLV&quot;&gt;&lt;code&gt;git reset --soft HEAD~1&lt;/code&gt; — відмінити останній коміт, залишивши зміни у staging.&lt;/li&gt;
    &lt;li id=&quot;tyyK&quot;&gt;&lt;code&gt;git reset --hard HEAD~1&lt;/code&gt; — повністю видалити останній коміт і всі зміни (⚠️ незворотно!).&lt;/li&gt;
    &lt;li id=&quot;U1as&quot;&gt;&lt;code&gt;git revert &amp;lt;hash&amp;gt;&lt;/code&gt; — створити коміт, що скасовує вказаний (без втрати історії).&lt;/li&gt;
    &lt;li id=&quot;H3K5&quot;&gt;&lt;code&gt;git reflog&lt;/code&gt; — переглянути історію HEAD (навіть те, що вже недоступне через звичайний log).&lt;/li&gt;
  &lt;/ul&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;zuyG&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;MQJY&quot;&gt;🔄 Rebase / Force Push&lt;/h2&gt;
  &lt;p id=&quot;jgm9&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;11eZ&quot;&gt;Команди для переписування історії комітів. Використовуються з обережністю!&lt;/p&gt;
  &lt;ul id=&quot;0wmI&quot;&gt;
    &lt;li id=&quot;9vXV&quot;&gt;&lt;code&gt;git pull --rebase&lt;/code&gt; — підтягти зміни з remote і &amp;quot;покласти&amp;quot; свої зверху.&lt;/li&gt;
    &lt;li id=&quot;y2fs&quot;&gt;&lt;code&gt;git push --force-with-lease&lt;/code&gt; — форсований push із перевіркою, що ніхто не вніс зміни.&lt;/li&gt;
    &lt;li id=&quot;efSZ&quot;&gt;&lt;code&gt;git rebase -i HEAD~3&lt;/code&gt; — інтерактивне редагування останніх 3 комітів (об’єднання, зміна опису, видалення).&lt;/li&gt;
  &lt;/ul&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;BoNT&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;oDho&quot;&gt;🧰 Інше&lt;/h2&gt;
  &lt;p id=&quot;2UMG&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;0qCN&quot;&gt;Різні корисні команди, що допоможуть під час роботи з Git.&lt;/p&gt;
  &lt;ul id=&quot;rSmm&quot;&gt;
    &lt;li id=&quot;nPem&quot;&gt;&lt;code&gt;:q&lt;/code&gt; — вийти з Vim або less-перегляду (&amp;quot;:quit&amp;quot;).&lt;/li&gt;
    &lt;li id=&quot;YXxJ&quot;&gt;&lt;code&gt;HEAD&lt;/code&gt; — поточне положення в історії комітів (вказівник).&lt;/li&gt;
    &lt;li id=&quot;U1u9&quot;&gt;&lt;code&gt;staging&lt;/code&gt; — проміжний етап перед комітом (&amp;quot;індекс&amp;quot;).&lt;/li&gt;
    &lt;li id=&quot;Kzmv&quot;&gt;&lt;code&gt;git diff&lt;/code&gt; — показати відмінності між змінами та останнім комітом.&lt;/li&gt;
    &lt;li id=&quot;kvme&quot;&gt;&lt;code&gt;git clean -fd&lt;/code&gt; — видалити всі нетрекані файли і каталоги.&lt;/li&gt;
    &lt;li id=&quot;3bjl&quot;&gt;&lt;code&gt;git shortlog -sn&lt;/code&gt; — переглянути статистику комітів по авторам (зручно для open source).&lt;/li&gt;
    &lt;li id=&quot;gONh&quot;&gt;&lt;code&gt;git show &amp;lt;hash&amp;gt;&lt;/code&gt; — показати повну інформацію про конкретний коміт.&lt;/li&gt;
    &lt;li id=&quot;P217&quot;&gt;&lt;code&gt;git blame &amp;lt;file&amp;gt;&lt;/code&gt; — побачити, хто змінював кожен рядок файлу.&lt;/li&gt;
  &lt;/ul&gt;

</content></entry><entry><id>denddeish:movesemantic</id><link rel="alternate" type="text/html" href="https://teletype.in/@denddeish/movesemantic?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=denddeish"></link><title>Шпаргалка по Move-семантиці в C++</title><published>2025-03-26T13:54:08.336Z</published><updated>2025-03-26T13:54:08.336Z</updated><summary type="html">У C++ ми часто створюємо об'єкти, які займають багато пам’яті: рядки, вектори, великі структури. При копіюванні таких об'єктів ми створюємо повну копію даних — що дорого за часом і пам’яттю.</summary><content type="html">
  &lt;hr /&gt;
  &lt;h3 id=&quot;Xvbm&quot;&gt;🔍 Навіщо потрібна move-семантика?&lt;/h3&gt;
  &lt;p id=&quot;WOCo&quot;&gt;У C++ ми часто створюємо об&amp;#x27;єкти, які займають багато пам’яті: рядки, вектори, великі структури. При копіюванні таких об&amp;#x27;єктів ми створюємо повну копію даних — що дорого за часом і пам’яттю. &lt;/p&gt;
  &lt;p id=&quot;a0Nu&quot;&gt;Це може суттєво впливати на продуктивність, особливо в великих програмах або в критичних місцях (цикли, передача параметрів, повернення результатів).&lt;/p&gt;
  &lt;h3 id=&quot;YDY5&quot;&gt;Копіювання — приклад&lt;/h3&gt;
  &lt;pre id=&quot;bPGg&quot; data-lang=&quot;cpp&quot;&gt;std::string a = &amp;quot;This is a very long string...&amp;quot;;
std::string b = a; // копіювання: створюється повна копія&lt;/pre&gt;
  &lt;p id=&quot;NxF5&quot;&gt;У цьому прикладі &lt;code&gt;b&lt;/code&gt; містить ту ж саму інформацію, але в іншій ділянці пам’яті. Пам’ять для копії виділяється, а дані копіюються по символах. Це повільно і неефективно, якщо &lt;code&gt;a&lt;/code&gt; нам більше не потрібна.&lt;/p&gt;
  &lt;p id=&quot;mvYo&quot;&gt;Згадайте ситуацію яку показував Олексій, коли копіювання відбувається мільйони разів у циклі або при роботі з великими файлами — продуктивність падає.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;HJsW&quot;&gt;Що дає move-семантика&lt;/h2&gt;
  &lt;p id=&quot;yApm&quot;&gt;Замість копіювання ми можемо &lt;strong&gt;перемістити&lt;/strong&gt; ресурс із одного об&amp;#x27;єкта в інший, звільнивши себе від зайвої алокації й копіювання. Це відбувається за допомогою:&lt;/p&gt;
  &lt;pre id=&quot;huz2&quot; data-lang=&quot;cpp&quot;&gt;std::string a = &amp;quot;This is a very long string...&amp;quot;;
std::string b = std::move(a); // переміщення, а не копіювання&lt;/pre&gt;
  &lt;p id=&quot;hQyD&quot;&gt;&lt;strong&gt;Після переміщення&lt;/strong&gt; &lt;code&gt;a&lt;/code&gt; більше не містить коректних даних, але ми отримали ті ж дані в &lt;code&gt;b&lt;/code&gt;, майже без затрат.&lt;/p&gt;
  &lt;p id=&quot;KNne&quot;&gt;Це особливо помітно в реальних сценаріях:&lt;/p&gt;
  &lt;pre id=&quot;yyFg&quot; data-lang=&quot;cpp&quot;&gt;std::vector&amp;lt;std::string&amp;gt; vec;
vec.push_back(std::string(&amp;quot;A large string&amp;quot;)); // тут буде move&lt;/pre&gt;
  &lt;p id=&quot;gijy&quot;&gt;Тут об’єкт, створений як &lt;code&gt;std::string(...)&lt;/code&gt;, є &lt;strong&gt;тимчасовим&lt;/strong&gt;, і &lt;code&gt;push_back&lt;/code&gt; може його &lt;strong&gt;перемістити&lt;/strong&gt;, не копіюючи. Уявімо, що таких рядків тисячі — move зекономить купу часу.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;p26P&quot;&gt;Побутовий приклад&lt;/h2&gt;
  &lt;p id=&quot;8WQk&quot;&gt;Уявімо, що в нас є коробка з важкими книгами. Ми можемо:&lt;/p&gt;
  &lt;ul id=&quot;DwOd&quot;&gt;
    &lt;li id=&quot;Rov7&quot;&gt;&lt;strong&gt;скопіювати&lt;/strong&gt;: купити нову коробку, придбати ті самі книги і скласти їх по одній у нову коробку — повільно, затратно.&lt;/li&gt;
    &lt;li id=&quot;r82G&quot;&gt;&lt;strong&gt;перемістити&lt;/strong&gt;: просто передати всю коробку іншій людині — швидко, легко, без витрат.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;vsZs&quot;&gt;Move-семантика — це коли ми передаємо &lt;strong&gt;коробку&lt;/strong&gt; цілком, а не переносимо &lt;strong&gt;книги&lt;/strong&gt;.&lt;/p&gt;
  &lt;p id=&quot;5SFx&quot;&gt;Ще ближче до коду: передати змінну за значенням — як скопіювати книги, передати через &lt;code&gt;std::move&lt;/code&gt; — як дати коробку.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;Cz0M&quot;&gt;📌 Чому ми не можемо користуватись оригінальним об&amp;#x27;єктом після &lt;code&gt;move&lt;/code&gt;?&lt;/h2&gt;
  &lt;p id=&quot;ictW&quot;&gt;Коли ми передаємо об&amp;#x27;єкт через &lt;code&gt;std::move&lt;/code&gt;, ми дозволяємо іншому об&amp;#x27;єкту &lt;strong&gt;забрати&lt;/strong&gt; його ресурси. Після цього:&lt;/p&gt;
  &lt;ul id=&quot;GtNz&quot;&gt;
    &lt;li id=&quot;hEa8&quot;&gt;Старий об’єкт залишається в &lt;strong&gt;коректному, але невизначеному&lt;/strong&gt; стані (типово — порожній).&lt;/li&gt;
    &lt;li id=&quot;wbZA&quot;&gt;Він не обов’язково видаляється, але його вміст втрачає сенс.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;pre id=&quot;4aHv&quot; data-lang=&quot;cpp&quot;&gt;std::string s1 = &amp;quot;hello&amp;quot;;
std::string s2 = std::move(s1);
// s1 зараз у пустому або невизначеному стані&lt;/pre&gt;
  &lt;p id=&quot;ya8P&quot;&gt;Тому після переміщення об&amp;#x27;єктом, як правило, &lt;strong&gt;не користуються&lt;/strong&gt;.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;zXis&quot;&gt;🤔 Чому б просто не користуватись оригінальним об&amp;#x27;єктом?&lt;/h2&gt;
  &lt;p id=&quot;x2CR&quot;&gt;Якщо ми передаємо ресурс новому об&amp;#x27;єкту, то чому б просто не залишитись із вже існуючим?&lt;/p&gt;
  &lt;p id=&quot;wcLs&quot;&gt;Відповідь у контексті. Ми можемо зустрітись із ситуацією, де об&amp;#x27;єкт створюється як &lt;strong&gt;тимчасовий&lt;/strong&gt;, або &lt;strong&gt;вже не потрібен&lt;/strong&gt; у поточному контексті. Наприклад:&lt;/p&gt;
  &lt;pre id=&quot;AZV9&quot; data-lang=&quot;cpp&quot;&gt;std::vector&amp;lt;std::string&amp;gt; names;
names.push_back(std::move(getName()));&lt;/pre&gt;
  &lt;p id=&quot;ZRO4&quot;&gt;Тут &lt;code&gt;getName()&lt;/code&gt; повертає тимчасовий об&amp;#x27;єкт, який &lt;strong&gt;вже ніколи більше не буде використовуватись&lt;/strong&gt;. Немає сенсу тримати його — краще перемістити й заощадити ресурси.&lt;/p&gt;
  &lt;p id=&quot;434m&quot;&gt;Або ми хочемо передати об&amp;#x27;єкт у функцію, і знаємо, що після цього він нам не знадобиться:&lt;/p&gt;
  &lt;pre id=&quot;xDIF&quot; data-lang=&quot;cpp&quot;&gt;process(std::move(hugeVector));&lt;/pre&gt;
  &lt;p id=&quot;7GBO&quot;&gt;Move — це не заміна копіювання, а &lt;strong&gt;опція&lt;/strong&gt; для тих випадків, коли оригінал більше не потрібен або його життя добігає кінця.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;VwzQ&quot;&gt;Копіювати чи переміщати?&lt;/h2&gt;
  &lt;p id=&quot;Swmf&quot;&gt;Додам ще маленьку шпаргалочку, яка дасть розуміння коли копіювати, а коли переміщати. Ще раз повторимо:&lt;/p&gt;
  &lt;ul id=&quot;YJVl&quot;&gt;
    &lt;li id=&quot;zflH&quot;&gt;Копіювання (&lt;code&gt;T&amp;amp;&lt;/code&gt;) — створює повну копію ресурсу. Повільніше, але залишає оригінал цілим.&lt;/li&gt;
    &lt;li id=&quot;mOSs&quot;&gt;Переміщення (&lt;code&gt;T&amp;amp;&amp;amp;&lt;/code&gt;) — забирає ресурси. Швидше, але залишає оригінал у невизначеному стані.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;h3 id=&quot;Q2Cb&quot;&gt;Використовуємо &lt;code&gt;move&lt;/code&gt;, коли:&lt;/h3&gt;
  &lt;ul id=&quot;k6M6&quot;&gt;
    &lt;li id=&quot;xEHk&quot;&gt;маємо &lt;strong&gt;тимчасовий об&amp;#x27;єкт&lt;/strong&gt; (rvalue);&lt;/li&gt;
    &lt;li id=&quot;e7Tq&quot;&gt;більше &lt;strong&gt;не плануємо&lt;/strong&gt; користуватись старим об&amp;#x27;єктом;&lt;/li&gt;
    &lt;li id=&quot;5qtu&quot;&gt;хочемо &lt;strong&gt;оптимізувати&lt;/strong&gt; копіювання.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;h3 id=&quot;ewqa&quot;&gt;Краще копіювати, коли:&lt;/h3&gt;
  &lt;ul id=&quot;OGHw&quot;&gt;
    &lt;li id=&quot;31rh&quot;&gt;нам &lt;strong&gt;потрібен і старий, і новий об&amp;#x27;єкт&lt;/strong&gt;;&lt;/li&gt;
    &lt;li id=&quot;1CNq&quot;&gt;працюємо зі складною логікою, де важлива &lt;strong&gt;стабільність стану об&amp;#x27;єктів&lt;/strong&gt;.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;eQdm&quot;&gt;Приклад з &lt;code&gt;push_back&lt;/code&gt; і &lt;code&gt;emplace_back&lt;/code&gt;&lt;/h2&gt;
  &lt;p id=&quot;XLaL&quot;&gt;Не кожен зрозуміє цей приклад, але &amp;quot;Кто понял, тот поймет&amp;quot;&lt;/p&gt;
  &lt;pre id=&quot;ZhRC&quot; data-lang=&quot;cpp&quot;&gt;std::vector&amp;lt;std::string&amp;gt; vec;

std::string name = &amp;quot;Denys&amp;quot;;
vec.push_back(name);            // копіювання
vec.push_back(std::move(name)); // переміщення
vec.emplace_back(&amp;quot;Oleh&amp;quot;);      // без створення тимчасового об&amp;#x27;єкта&lt;/pre&gt;
  &lt;h3 id=&quot;Hsu9&quot;&gt;Пояснення:&lt;/h3&gt;
  &lt;ul id=&quot;5Ui7&quot;&gt;
    &lt;li id=&quot;kai6&quot;&gt;&lt;code&gt;push_back(name)&lt;/code&gt; — копіює &lt;code&gt;name&lt;/code&gt; у вектор.&lt;/li&gt;
    &lt;li id=&quot;ANJ5&quot;&gt;&lt;code&gt;push_back(std::move(name))&lt;/code&gt; — переміщує &lt;code&gt;name&lt;/code&gt; у вектор.&lt;/li&gt;
    &lt;li id=&quot;Gwtw&quot;&gt;&lt;code&gt;emplace_back(...)&lt;/code&gt; — створює об&amp;#x27;єкт прямо у векторі, без копій/переміщень.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;D2Fz&quot;&gt;Це приклад, де move-семантика реально &lt;strong&gt;економить ресурси&lt;/strong&gt;.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;qcv8&quot;&gt;Як виглядає move-конструктор&lt;/h2&gt;
  &lt;pre id=&quot;z2mP&quot; data-lang=&quot;cpp&quot;&gt;class MyString {
private:
    char* data;
    size_t size;

public:
    // Move-конструктор
    MyString(MyString&amp;amp;&amp;amp; other) {
        data = other.data;
        size = other.size;
        
        other.data = nullptr;
        other.size = 0;
    }
};&lt;/pre&gt;
  &lt;p id=&quot;Fn1a&quot;&gt;Тут ми просто забираємо вказівник &lt;code&gt;data&lt;/code&gt; з іншого об&amp;#x27;єкта і обнуляємо його. Без копіювання, швидко.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;6HdO&quot;&gt;Висновки&lt;/h2&gt;
  &lt;ul id=&quot;NDR7&quot;&gt;
    &lt;li id=&quot;z8hO&quot;&gt;Move-семантика — це &lt;strong&gt;інструмент оптимізації&lt;/strong&gt;, що дозволяє уникнути дорогих копій.&lt;/li&gt;
    &lt;li id=&quot;fArz&quot;&gt;Вона потрібна при &lt;strong&gt;роботі з тимчасовими об’єктами&lt;/strong&gt; або коли старий об&amp;#x27;єкт вже не потрібен.&lt;/li&gt;
    &lt;li id=&quot;ALHF&quot;&gt;Не завжди доречна: &lt;strong&gt;оригінальний об’єкт втрачає дані&lt;/strong&gt;, тому використовувати треба обережно.&lt;/li&gt;
    &lt;li id=&quot;KZgX&quot;&gt;Потрібна там, де &lt;strong&gt;ефективність&lt;/strong&gt; критична (std::vector, std::map, повернення великих об&amp;#x27;єктів з функцій).&lt;/li&gt;
  &lt;/ul&gt;

</content></entry><entry><id>denddeish:GbHHX9b7zpg</id><link rel="alternate" type="text/html" href="https://teletype.in/@denddeish/GbHHX9b7zpg?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=denddeish"></link><title>Для Ростика</title><published>2023-12-15T14:38:30.827Z</published><updated>2023-12-15T14:38:30.827Z</updated><summary type="html">Гэри Генслер прокомментировал политику SEC в отношении спотовых биткоин-ETF. По его словам, регулятор изменил курс после некоторых судебных решений.</summary><content type="html">
  &lt;p id=&quot;zKv8&quot;&gt;Гэри Генслер прокомментировал политику SEC в отношении спотовых биткоин-ETF. По его словам, регулятор изменил курс после некоторых судебных решений. &lt;/p&gt;
  &lt;p id=&quot;nFKl&quot;&gt;&lt;a href=&quot;https://t.me/incrypted/20371&quot; target=&quot;_blank&quot;&gt;https://t.me/incrypted/20371&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;3kIx&quot;&gt;&lt;a href=&quot;https://incrypted.com/gery-gensler-sec-yzmenyla-svoju-pozytsyju-po-spotovym-bytkoyn-etf-posle-nedavnyh-sudov/&quot; target=&quot;_blank&quot;&gt;https://incrypted.com/gery-gensler-sec-yzmenyla-svoju-pozytsyju-po-spotovym-bytkoyn-etf-posle-nedavnyh-sudov/&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;htNy&quot;&gt;&lt;br /&gt;&lt;br /&gt;Команда UAHg в партнерстве с WhiteBIT разыграет 300 000 UAHg в честь листинга первого гривневого стейблкоина&lt;/p&gt;
  &lt;p id=&quot;rIn1&quot;&gt;&lt;a href=&quot;https://t.me/incrypted/20372&quot; target=&quot;_blank&quot;&gt;https://t.me/incrypted/20372&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;YK6B&quot;&gt;&lt;a href=&quot;https://incrypted.com/uahg-bounty-program/&quot; target=&quot;_blank&quot;&gt;https://incrypted.com/uahg-bounty-program/&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;iTtK&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;GVuo&quot;&gt;В Ledger заявили о том, что компания полностью устранила эксплойт и заменила взломанную библиотеку&lt;/p&gt;
  &lt;p id=&quot;fKSN&quot;&gt;&lt;a href=&quot;https://t.me/incrypted/20373&quot; target=&quot;_blank&quot;&gt;https://t.me/incrypted/20373&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;S26H&quot;&gt;&lt;a href=&quot;https://incrypted.com/v-ledger-ustranyly-eksplojt-ceo-kompanyy-prokommentyroval-sytuatsyju/&quot; target=&quot;_blank&quot;&gt;https://incrypted.com/v-ledger-ustranyly-eksplojt-ceo-kompanyy-prokommentyroval-sytuatsyju/&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;ZfBJ&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;c3gL&quot;&gt;Криптовалютный обменник как способ заработка: как начать и насколько это сложно &lt;/p&gt;
  &lt;p id=&quot;5udx&quot;&gt;&lt;a href=&quot;https://incrypted.com/kriptovalyutnyj-obmennik-kak-sposob-zarabotka&quot; target=&quot;_blank&quot;&gt;https://incrypted.com/kriptovalyutnyj-obmennik-kak-sposob-zarabotka&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;MDlN&quot;&gt;&lt;a href=&quot;https://t.me/incrypted/20374&quot; target=&quot;_blank&quot;&gt;https://t.me/incrypted/20374&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;1VuH&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;KwBT&quot;&gt;продажи смартфона Saga выросли в 10 раз. Причиной ажиотажа стала раздача 30 млн BONK&lt;/p&gt;
  &lt;p id=&quot;Cq5i&quot;&gt;&lt;a href=&quot;https://t.me/incrypted/20375&quot; target=&quot;_blank&quot;&gt;https://t.me/incrypted/20375&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;sFa9&quot;&gt;&lt;a href=&quot;https://incrypted.com/airdrop-bonk-vyzval-vsplesk-prodazh-smartfona-saga/&quot; target=&quot;_blank&quot;&gt;https://incrypted.com/airdrop-bonk-vyzval-vsplesk-prodazh-smartfona-saga/&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;V6mT&quot;&gt;&lt;br /&gt;Криптовалютная компания SafeMoon подала  заявление о банкротстве&lt;/p&gt;
  &lt;p id=&quot;NwGu&quot;&gt;&lt;a href=&quot;https://t.me/incrypted/20376&quot; target=&quot;_blank&quot;&gt;https://t.me/incrypted/20376&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;fjDQ&quot;&gt;&lt;a href=&quot;https://incrypted.com/safemoon-podala-zajavlenye-o-bankrotstve/&quot; target=&quot;_blank&quot;&gt;https://incrypted.com/safemoon-podala-zajavlenye-o-bankrotstve/&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;Td4P&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;US7q&quot;&gt;Биржа OKX совместно с TON запустила образовательную кампанию&lt;/p&gt;
  &lt;p id=&quot;Ljcf&quot;&gt;&lt;a href=&quot;https://t.me/incrypted/20377&quot; target=&quot;_blank&quot;&gt;https://t.me/incrypted/20377&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;qX2z&quot;&gt;&lt;a href=&quot;https://incrypted.com/ton-y-okx-zapustyly-obrazovatelnuju-kampanyju-o-kryptovaljutah/&quot; target=&quot;_blank&quot;&gt;https://incrypted.com/ton-y-okx-zapustyly-obrazovatelnuju-kampanyju-o-kryptovaljutah/&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;PNAL&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;if8c&quot;&gt;OFAC обвинило компанию CoinList в нарушении санкций США&lt;/p&gt;
  &lt;p id=&quot;G36o&quot;&gt;&lt;a href=&quot;https://t.me/incrypted/20378&quot; target=&quot;_blank&quot;&gt;https://t.me/incrypted/20378&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;AtoE&quot;&gt;&lt;a href=&quot;https://incrypted.com/coinlist-vyplatit-shtraf-v-12-mln-za-narushenie-sankcij-ssha/&quot; target=&quot;_blank&quot;&gt;https://incrypted.com/coinlist-vyplatit-shtraf-v-12-mln-za-narushenie-sankcij-ssha/&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;fixJ&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;KKRM&quot;&gt;Folks Finance: AMA-сессия&lt;br /&gt;(текстовая выжимка)&lt;/p&gt;
  &lt;p id=&quot;uHFC&quot;&gt;&lt;a href=&quot;https://t.me/incrypted/20379&quot; target=&quot;_blank&quot;&gt;https://t.me/incrypted/20379&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;LKmA&quot;&gt;&lt;a href=&quot;https://incrypted.com/folks-finance-ama/&quot; target=&quot;_blank&quot;&gt;https://incrypted.com/folks-finance-ama/&lt;/a&gt;&lt;/p&gt;

</content></entry><entry><id>denddeish:cqWSaYFpZt1</id><link rel="alternate" type="text/html" href="https://teletype.in/@denddeish/cqWSaYFpZt1?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=denddeish"></link><title>Матеріал для  роботи</title><published>2023-11-13T08:43:39.163Z</published><updated>2023-11-13T08:43:39.163Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img2.teletype.in/files/11/01/1101666c-f011-4137-8444-49f8fe8df673.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img2.teletype.in/files/52/14/52147de7-6546-47dd-aa4b-4892f968001a.jpeg&quot;&gt;NFT LIBERTAS OMNIBUS (Як можливий мультиплікатор) -https://www.okx.com/ua/web3/marketplace/nft/collection/zksync-era/libertas-omnibus-collection-2</summary><content type="html">
  &lt;h2 id=&quot;qDlP&quot;&gt;ZkSync&lt;/h2&gt;
  &lt;p id=&quot;e6ej&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;cI6A&quot;&gt;&lt;strong&gt;NFT LIBERTAS OMNIBUS (Як можливий мультиплікатор) -&lt;/strong&gt;&lt;a href=&quot;https://www.okx.com/ua/web3/marketplace/nft/collection/zksync-era/libertas-omnibus-collection-2&quot; target=&quot;_blank&quot;&gt;https://www.okx.com/ua/web3/marketplace/nft/collection/zksync-era/libertas-omnibus-collection-2&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;PF2l&quot;&gt;&lt;strong&gt;Gitcoin Passport - &lt;/strong&gt;&lt;a href=&quot;https://passport.gitcoin.co/#/welcome&quot; target=&quot;_blank&quot;&gt;https://passport.gitcoin.co/#/welcome&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;oO1l&quot;&gt;&lt;strong&gt;Duna (Дашборд ZkSync)&lt;/strong&gt; — &lt;a href=&quot;https://dune.com/copilot_automation/zksync-airdrop-rank-checker-copilot&quot; target=&quot;_blank&quot;&gt;https://dune.com/copilot_automation/zksync-airdrop-rank-checker-copilot&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;okYC&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;zeQn&quot;&gt;LayerZero&lt;/h2&gt;
  &lt;p id=&quot;w5uq&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;tQUw&quot;&gt;&lt;strong&gt;Duna (Дашборд LayerZero) —&lt;/strong&gt; &lt;a href=&quot;https://dune.com/springzhang/layerzero-overview-comprehensive-all-in-one&quot; target=&quot;_blank&quot;&gt;https://dune.com/springzhang/layerzero-overview-comprehensive-all-in-one&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;ryRl&quot;&gt;&lt;strong&gt;Протоколи які працюють на L0:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;dEeM&quot;&gt;&lt;a href=&quot;https://stargate.finance/transfer&quot; target=&quot;_blank&quot;&gt;Stargate&lt;/a&gt; | &lt;a href=&quot;https://theaptosbridge.com/&quot; target=&quot;_blank&quot;&gt;Aptos Bridge&lt;/a&gt; | &lt;a href=&quot;https://bitcoinbridge.network/&quot; target=&quot;_blank&quot;&gt;BTC.b&lt;/a&gt; | &lt;a href=&quot;https://testnetbridge.com/&quot; target=&quot;_blank&quot;&gt;Testnet Bridge&lt;/a&gt; | &lt;a href=&quot;https://minter.merkly.com/&quot; target=&quot;_blank&quot;&gt;Merkly&lt;/a&gt; | &lt;a href=&quot;https://app.radiant.capital/#/bridge&quot; target=&quot;_blank&quot;&gt;Radiant&lt;/a&gt; | &lt;a href=&quot;https://bridge.coredao.org/bridge&quot; target=&quot;_blank&quot;&gt;Core Bridge&lt;/a&gt; | &lt;/p&gt;
  &lt;p id=&quot;TUTl&quot;&gt;&lt;a href=&quot;https://app.holograph.xyz/&quot; target=&quot;_blank&quot;&gt;Holograph&lt;/a&gt; | &lt;a href=&quot;https://zkbridge.com/zklightclient&quot; target=&quot;_blank&quot;&gt;ZkBridge&lt;/a&gt; | &lt;a href=&quot;https://layerzero.bridge.harmony.one/one&quot; target=&quot;_blank&quot;&gt;HarmonyBridge&lt;/a&gt; | &lt;a href=&quot;https://app.abracadabra.money/#/beam&quot; target=&quot;_blank&quot;&gt;Abracadabra&lt;/a&gt; | &lt;a href=&quot;https://bridge.mummy.finance/#/bridge&quot; target=&quot;_blank&quot;&gt;Mummy&lt;/a&gt; | &lt;a href=&quot;https://app.interport.fi/bridge/1/56/USDT/USD&quot; target=&quot;_blank&quot;&gt;Interport&lt;/a&gt; | &lt;a href=&quot;https://app.thala.fi/bridge&quot; target=&quot;_blank&quot;&gt;Thala&lt;/a&gt; | &lt;/p&gt;
  &lt;p id=&quot;WXU5&quot;&gt;&lt;a href=&quot;https://app.angle.money/bridges-agEUR&quot; target=&quot;_blank&quot;&gt;Angle&lt;/a&gt; | &lt;a href=&quot;https://bridge.pancakeswap.finance/&quot; target=&quot;_blank&quot;&gt;Pancakeswap&lt;/a&gt; | &lt;a href=&quot;https://aptos.tsunami.finance/bridge&quot; target=&quot;_blank&quot;&gt;Tsunami&lt;/a&gt; | &lt;a href=&quot;https://bridge.liquidswap.com/&quot; target=&quot;_blank&quot;&gt;Liquidswap&lt;/a&gt; | &lt;a href=&quot;https://l2telegraph.xyz/bridge/&quot; target=&quot;_blank&quot;&gt;l2telegraph&lt;/a&gt; | &lt;a href=&quot;https://bridge.level.finance/&quot; target=&quot;_blank&quot;&gt;Level&lt;/a&gt; | &lt;a href=&quot;https://www.sushi.com/swap/cross-chain&quot; target=&quot;_blank&quot;&gt;Sushi&lt;/a&gt; | &lt;a href=&quot;https://app.aura.finance/#/1/bridge&quot; target=&quot;_blank&quot;&gt;Aura&lt;/a&gt; | &lt;/p&gt;
  &lt;p id=&quot;DkcZ&quot;&gt;&lt;a href=&quot;https://app.omnibtc.finance/swap&quot; target=&quot;_blank&quot;&gt;OmniBTC&lt;/a&gt; | &lt;a href=&quot;https://app.interswap.io/&quot; target=&quot;_blank&quot;&gt;InterSwap&lt;/a&gt; | &lt;a href=&quot;https://hyphen.biconomy.io/bridge&quot; target=&quot;_blank&quot;&gt;Biconomy&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;eZ4y&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;yOAP&quot;&gt;Повна екосистема:&lt;/p&gt;
  &lt;figure id=&quot;CKDk&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/52/14/52147de7-6546-47dd-aa4b-4892f968001a.jpeg&quot; width=&quot;4000&quot; /&gt;
  &lt;/figure&gt;

</content></entry></feed>