<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>good-gis blog</title>
    <link>https://good-gis.github.io/</link>
    <description>Recent content on good-gis blog</description>
    <generator>Hugo -- 0.156.0</generator>
    <language>en-us</language>
    <lastBuildDate>Tue, 10 Jun 2025 17:16:00 +0300</lastBuildDate>
    <atom:link href="https://good-gis.github.io/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>6 паттернов для решения 70% задач на LeetCode</title>
      <link>https://good-gis.github.io/posts/leetcode/</link>
      <pubDate>Tue, 10 Jun 2025 17:16:00 +0300</pubDate>
      <guid>https://good-gis.github.io/posts/leetcode/</guid>
      <description>&lt;p&gt;Рассмотрим 6 ключевых паттернов, которые помогают решать 70% самых популярных задач на LeetCode.&lt;/p&gt;
&lt;p&gt;🚀 Прокачаешься в собеседованиях и алгоритмах, даже если раньше было страшно&lt;/p&gt;
&lt;h2 id=&#34;два-указателя&#34;&gt;Два указателя&lt;/h2&gt;
&lt;p&gt;Пробегаешь массив или строку двумя указателями - с разных концов, навстречу друг другу, либо в одном направлении, чтобы
ловить нужные комбинации.&lt;/p&gt;
&lt;h3 id=&#34;когда-использовать&#34;&gt;Когда использовать:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Найти пару с суммой = target в отсортированном массиве&lt;/li&gt;
&lt;li&gt;Удалить дубликаты на месте&lt;/li&gt;
&lt;li&gt;Перевернуть массив/строку&lt;/li&gt;
&lt;li&gt;Проверить палиндром&lt;/li&gt;
&lt;li&gt;Слить два отсортированных массива&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;как-использовать&#34;&gt;Как использовать:&lt;/h3&gt;
&lt;p&gt;let left = 0;&lt;br&gt;
let right = arr.length - 1;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Новый CSS: что уже можно использовать в продакшене в 2025</title>
      <link>https://good-gis.github.io/posts/css2025/</link>
      <pubDate>Tue, 04 Mar 2025 12:53:37 +0300</pubDate>
      <guid>https://good-gis.github.io/posts/css2025/</guid>
      <description>&lt;p&gt;Последние годы CSS взорвался новинками! 💥 Среди них — фичи, которые меняют подход к вёрстке и уже поддерживаются всеми современными браузерами.&lt;/p&gt;
&lt;p&gt;Эта шпаргалка — наш топ CSS-инструментов, которые стоит внедрить в продакшн-код в 2025.&lt;/p&gt;
&lt;p&gt;Читайте, тестируйте, делитесь лайфхаками! 🔥&lt;/p&gt;
&lt;h2 id=&#34;container-queries&#34;&gt;Container Queries&lt;/h2&gt;
&lt;p&gt;Контейнерные запросы включают две отдельные функции: запросы размера (size queries) и запросы стилей (style queries). Мы планируем использовать только запросы размера, которые имеют широкую поддержку, в &lt;a href=&#34;https://caniuse.com/css-container-queries-style&#34;&gt;отличие от запросов стилей&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Проблема:&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Git Commands</title>
      <link>https://good-gis.github.io/posts/git-commands/</link>
      <pubDate>Tue, 25 Feb 2025 16:53:37 +0300</pubDate>
      <guid>https://good-gis.github.io/posts/git-commands/</guid>
      <description>&lt;h1 id=&#34;команды-git-которые-стоит-начать-использовать-уже-сегодня&#34;&gt;Команды Git, которые стоит начать использовать уже сегодня&lt;/h1&gt;
&lt;p&gt;В новых версиях Git появились команды, которые делают работу с Git более удобной и безопасной. Посмотрим наиболее полезные:&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;--word-diff-для-команды-git-diff&#34;&gt;&lt;code&gt;--word-diff&lt;/code&gt; для команды &lt;code&gt;git diff&lt;/code&gt;&lt;/h2&gt;
&lt;h3 id=&#34;проблема&#34;&gt;Проблема&lt;/h3&gt;
&lt;p&gt;Иногда необходимо увидеть различия между ветками, например, между вашей локальной веткой и веткой &lt;code&gt;origin/master&lt;/code&gt;.&lt;br&gt;
Для этого можно использовать команду:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git diff origin &amp;lt;branch name&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Однако стандартный вывод команды &lt;code&gt;git diff&lt;/code&gt; отображает изменения в виде блоков кода, что может быть трудно воспринимать, особенно при больших изменениях.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Упрощаем работу с NgRX Store с помощью фасадов</title>
      <link>https://good-gis.github.io/posts/ngrx-facade/</link>
      <pubDate>Thu, 26 Sep 2024 18:24:58 +0300</pubDate>
      <guid>https://good-gis.github.io/posts/ngrx-facade/</guid>
      <description>&lt;h1 id=&#34;упрощаем-работу-с-ngrx-store-с-помощью-фасадов&#34;&gt;Упрощаем работу с NgRX Store с помощью фасадов&lt;/h1&gt;
&lt;p&gt;NgRX одновременно c решением массы проблем управления состоянием приложения, добавляет сложность и связанность между компонентами и менеджером состояния. Это может затруднить повторное использование компонентов в других проектах, если они напрямую зависят от конкретной реализации стора.&lt;/p&gt;
&lt;p&gt;Фасады предлагают элегантное решение этой проблемы, создавая абстракцию между компонентами и сторами. Они позволяют компонентам взаимодействовать с состоянием через унифицированный интерфейс, что упрощает переиспользование компонентов и улучшает архитектуру приложения. Рассмотрим, как правильно использовать фасады в Angular для достижения максимальной гибкости и независимости компонентов.&lt;/p&gt;</description>
    </item>
    <item>
      <title>NgRX с нуля: Полное руководство по управлению состоянием в Angular</title>
      <link>https://good-gis.github.io/posts/ngrx/</link>
      <pubDate>Wed, 25 Sep 2024 13:24:38 +0300</pubDate>
      <guid>https://good-gis.github.io/posts/ngrx/</guid>
      <description>&lt;h1 id=&#34;ngrx-с-нуля-полное-руководство-по-управлению-состоянием-в-angular&#34;&gt;NgRX с нуля: Полное руководство по управлению состоянием в Angular&lt;/h1&gt;
&lt;p&gt;Сегодня мы рассмотрим одну из ключевых тем в разработке приложений на Angular — использование NgRX для управления состоянием. Мы погрузимся в архитектуру Redux, узнаем, что такое state manager, и как NgRX помогает в создании централизованного хранилища данных.&lt;/p&gt;
&lt;h3 id=&#34;проблема&#34;&gt;Проблема&lt;/h3&gt;
&lt;p&gt;&lt;img alt=&#34;Пример источников состояний&#34; loading=&#34;lazy&#34; src=&#34;https://good-gis.github.io/ngrx1.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;Если мы изучим любое приложение, мы увидим множество источников данных: Local Storage, Session Storage, данные на сервере, а также данные, хранящиеся напрямую в HTML. Управление этими данными сложно. Если каждый будет сохранять данные по-своему, со временем станет сложно разбираться в этом многообразии состояний. Также возникают вопросы о том, какие данные актуальны, если одна и та же информация хранится в нескольких местах. Необходимо определить источник истины в таких случаях. Это и есть основная проблема Frontend-приложений, которую решают State Managers.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
