<?xml version="1.0" encoding="utf-8" ?><rss version="2.0" xmlns:tt="http://teletype.in/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>Стаханов про общепит, автоматизацию и IT</title><generator>teletype.in</generator><description><![CDATA[Стаханов Дмитрий - совладелец IT компании Мой Кассир и сети пекарен Еще Вкуснее. Люблю чем занимаюсь. Делюсь.]]></description><image><url>https://img3.teletype.in/files/20/f8/20f82cd1-b047-4fd8-9810-43d857967313.png</url><title>Стаханов про общепит, автоматизацию и IT</title><link>https://stakhanov.ru/</link></image><link>https://stakhanov.ru/?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=stakhanov</link><atom:link rel="self" type="application/rss+xml" href="https://teletype.in/rss/stakhanov?offset=0"></atom:link><atom:link rel="next" type="application/rss+xml" href="https://teletype.in/rss/stakhanov?offset=10"></atom:link><atom:link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></atom:link><pubDate>Wed, 06 May 2026 12:02:54 GMT</pubDate><lastBuildDate>Wed, 06 May 2026 12:02:54 GMT</lastBuildDate><item><guid isPermaLink="true">https://stakhanov.ru/about_stakhanov_dmitry</guid><link>https://stakhanov.ru/about_stakhanov_dmitry?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=stakhanov</link><comments>https://stakhanov.ru/about_stakhanov_dmitry?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=stakhanov#comments</comments><dc:creator>stakhanov</dc:creator><title>Мой путь в автоматизации общепита</title><pubDate>Sat, 08 Feb 2025 19:49:12 GMT</pubDate><media:content medium="image" url="https://img1.teletype.in/files/08/3e/083ed427-703c-4a17-8fb2-a3dc22eebe86.png"></media:content><category>Общепит</category><description><![CDATA[<img src="https://img4.teletype.in/files/70/34/70349d46-fe25-4144-b370-4342311162c5.jpeg"></img>Всем привет, меня зовут Стаханов Дмитрий - совладелец IT компании &quot;Мой Кассир&quot; и сети пекарен &quot;Еще вкуснее&quot; в городе Нефтекамск. Я кайфую от того, чем занимаюсь и  убежден, что предпринимательство - это самый эффективный инструмент личностного развития.]]></description><content:encoded><![CDATA[
  <p id="wyeo">Всем привет, меня зовут Стаханов Дмитрий - совладелец IT компании <a href="https://moykassir.ru" target="_blank">&quot;Мой Кассир&quot;</a> и сети пекарен &quot;Еще вкуснее&quot; в городе Нефтекамск. Я кайфую от того, чем занимаюсь и  убежден, что предпринимательство - это самый эффективный инструмент личностного развития. </p>
  <figure id="Y432" class="m_column">
    <img src="https://img4.teletype.in/files/70/34/70349d46-fe25-4144-b370-4342311162c5.jpeg" width="1280" />
    <figcaption>И хлеб печем и программы пишем - нет у предпринимателей должностных инструкций.</figcaption>
  </figure>
  <p id="KUlx">Обилие в сети историй про &quot;успешный успех&quot; демотивируют многих начинающих предпринимателей и создает неоправданные ожидания простоты и скорых значимых результатов. На своем примере хочу дать энергию и поддержку тем, кто выбирает долгий эволюционный путь развития себя, своих навыков, команды и бизнеса.</p>
  <p id="ylkU">У нашей компании есть цель, чтобы на нас работало 40 тысяч адресов в 40 странах. С 2019 по 2025 мы прошли 9% от намеченного: 3,6 тысяч адресов в 7 странах выбрали нас. И я горжусь этим результатом и благодарен всем, кто рядом и его приближает.</p>
  <p id="7AFg">Но подготовительный путь в этом направлении начался 20 лет назад.</p>
  <figure id="DUAK" class="m_column">
    <img src="https://img1.teletype.in/files/84/57/8457ec20-56fd-4aa7-a406-2dffe2b46520.jpeg" width="1100" />
    <figcaption>Фотография клуба Резиденция, г.Ижевск. На экране виден только один бар из 7. Цеха кухни никогда в кадр не попадали. Возможно я где-то тут на фотографии смотрю почему не выходят чеки )</figcaption>
  </figure>
  <p id="WLsy">В мае 2007 года я из государственного банка перешел в коммерческий холдинг на позицию финансового директора. Первый рабочий день совпал с открытием &quot;Резиденции&quot;, крупнейшего ночного клуба республики: 3 этажа, 7 баров и 2 кухни. Помню, что на сцене выступает Собчак и Грув, а у меня все мысли, что ничего айтишного не работает как должно.</p>
  <p id="mA5E">Замена софта стала моим первым проектом и с этого началось погружение в автоматизацию общепита. Мне невероятно повезло, что в нашем холдинге была концентрация разных видов бизнеса: помимо ночного клуба еще были кинотеатр, столовые, кафе, фудкорт, кейтеринг и бесконечное количество строек и ремонтов.</p>
  <figure id="O1mx" class="m_column">
    <img src="https://img1.teletype.in/files/07/34/07347fc6-86a2-4088-a4ea-099f32ccc232.png" width="1280" />
    <figcaption>В Казани в 2016 году мы участники Финополис. Рассказывали про экран клиента. </figcaption>
  </figure>
  <p id="qb73">В 2013 году состоялся мой переход в коммерческую IT разработку, в компанию по автоматизации служб такси. Появились мои первые it стартапы: по взысканию долгов, по записи на стрижку, система эскалирования проблем внутри компании и кассовое ПО. С кассами как раз все и завертелось: мы победили в стартап Сабантуе, прошли акселерация в Татарстане, была защита перед Эльвирой Набиуллиной. Поработали с первыми инвесторами и партнерами. </p>
  <p id="8mdM">Крупнейшая сделка того периода - продажа копии проекта федеральному оператору. Наша программа одновременно работала на 25 тысячах касс. Сделка позволила выплатить дивиденды учредителям, сравнимые с инвестициями с момента основания, и год не думать о деньгах на зарплаты. В 2019 году мы выкупили &quot;Мой Кассир&quot; и начали работать независимо. </p>
  <figure id="AFLr" class="m_column">
    <img src="https://img2.teletype.in/files/d5/de/d5de8ca5-f9fd-484b-91dc-5caf064bd4a4.jpeg" width="1280" />
    <figcaption>Да много всего происходит в жизни сети пекарен. Не показать это на одной фотографии )</figcaption>
  </figure>
  <p id="58SN">В общепите мы развиваем сеть пекарен &quot;Еще вкуснее&quot; в городе Нефтекамск с моим партнером Тимуром Габдулхаевым. Малый бизнес очень быстро отучивает предпринимателя от фразы &quot;я не умею&quot;. Сейчас у нас фабрика кухня, два производства и 13 торговых точек. Но когда мы только начинали приходилось заниматься всем - от доделок за строителями и выбором формы продавцов, до составления скриптов продаж и планов производства.  </p>
  <p id="8iwq">С появлением пекарен - круг замкнулся. Уже нельзя точно сказать, это &quot;Мой Кассир&quot; занимается автоматизацией общепита, или общепит развивает &quot;Мой Кассир&quot;. Скорость вращения этого колеса зависит от энергии фаундеров и от команды. </p>
  <p id="EzsO">Буду делиться, как кручу педали. Подписывайтесь на мой телеграмм канал: <a href="https://t.me/stakhanov_ceo" target="_blank">https://t.me/stakhanov_ceo</a></p>

]]></content:encoded></item><item><guid isPermaLink="true">https://stakhanov.ru/laravel_windows</guid><link>https://stakhanov.ru/laravel_windows?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=stakhanov</link><comments>https://stakhanov.ru/laravel_windows?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=stakhanov#comments</comments><dc:creator>stakhanov</dc:creator><title>Настройка окружения для разработки под Windows в 2022 (Laravel, WSL, Docker, Sail, VS Code)</title><pubDate>Mon, 20 Jun 2022 16:20:24 GMT</pubDate><media:content medium="image" url="https://img3.teletype.in/files/a7/ae/a7ae6a3e-d457-4b34-9e60-78dc5b23a31e.png"></media:content><description><![CDATA[<img src="https://img1.teletype.in/files/cc/e6/cce6951d-09ac-488e-a37a-e27e984f1fb9.png"></img>В прошлой статье мы рассмотрели изменение инфраструктуры разработки под Windows с 2000-х. Теперь составим гайд настройки среды разработки под Windows для Laravel на современных, для 2022 года, концепциях.]]></description><content:encoded><![CDATA[
  <figure id="DlOw" class="m_column">
    <img src="https://img1.teletype.in/files/cc/e6/cce6951d-09ac-488e-a37a-e27e984f1fb9.png" width="1200" />
    <figcaption>Laravel под Windows. Настройка окружения.</figcaption>
  </figure>
  <p id="FcIN">В <a href="https://stakhanov.ru/development_windows" target="_blank">прошлой статье</a> мы рассмотрели изменение инфраструктуры разработки под Windows с 2000-х. Теперь составим гайд настройки среды разработки под Windows для Laravel на современных, для 2022 года, концепциях. </p>
  <h3 id="aM0S">Содержание:</h3>
  <ul id="UbGK">
    <li id="Bx5X"><a href="#bJUc">Установка WSL2</a></li>
    <li id="dqF0"><a href="#GAm4">Установка Docker Desktop</a></li>
    <li id="csxL"><a href="#PGHR">Концепция удаленной работы с кодом под Windows</a></li>
    <li id="Ucgi"><a href="#AU9q">Запуск Laravel в Docker контейнерах</a></li>
    <li id="DiVO"><a href="#2KLq">Создание нового проекта Laravel под Windows</a></li>
    <li id="AvJC"><a href="#qBFe">Клонирование существующего Laravel проекта в WSL</a></li>
    <li id="ZdAr"><a href="#umJS">Добавление Sail в существующий проект</a></li>
    <li id="9Dl5"><a href="#8Lff">Лайфхак 1: копирование SSH ключей из windows в wsl</a></li>
    <li id="2tlk"><a href="#Ibir">Лайфхак 2: локальный домен, красивое имя в браузере для проекта</a></li>
    <li id="n2rp"><a href="#BLY9">Лайфхак 3: сокращение вызова sail через alias</a></li>
    <li id="znxv"><a href="#ulKM">Лайфхак 4: несколько Laravel проектов одновременно</a></li>
  </ul>
  <h3 id="Rkll">Установка WSL2</h3>
  <p id="skYS">Ссылка: <a href="https://docs.microsoft.com/en-us/windows/wsl/install" target="_blank">https://docs.microsoft.com/en-us/windows/wsl/install</a></p>
  <p id="SMA0">Windows Subsystem for Linux (WSL) - подсистема Linux в Windows. Нужна нам для запуска Ubuntu - хостового сервера на котором будут жить все docker контейнеры, эмулируя серверную среду.</p>
  <p id="mL16">Для установки, запускаем PowerShell под Администратором:</p>
  <pre id="WGkQ">wsl --install</pre>
  <figure id="lhtO" class="m_column">
    <img src="https://img2.teletype.in/files/dc/d7/dcd76f97-9e20-4501-bb91-38c50142e065.png" width="855" />
    <figcaption>Процесс установки WSL под Windows</figcaption>
  </figure>
  <p id="d5Ke">После установки нужно перезагрузить компьютер и начнется установка Ubuntu как хостовой операционной системы Linux.</p>
  <figure id="7f3U" class="m_column">
    <img src="https://img3.teletype.in/files/28/f6/28f65d88-40f2-4de8-ad4e-dc79b1565d9c.png" width="978" />
    <figcaption>Установка Ubuntu под Windows</figcaption>
  </figure>
  <p id="nemp">Дальше вас спросят имя пользователя которое будете использовать. Может не совпадать с вашим Windows пользователем:</p>
  <figure id="6yuk" class="m_column">
    <img src="https://img4.teletype.in/files/f1/f9/f1f939f5-e7ee-46d2-ac6e-1fa87bea4f3f.png" width="978" />
    <figcaption>Настройка пользователя при устанвоке Ubuntu под Windows</figcaption>
  </figure>
  <p id="WKIq">И после того как зададите новый пароль, вы успешно попадете в систему:</p>
  <figure id="GX3O" class="m_column">
    <img src="https://img4.teletype.in/files/73/9c/739c86fa-14f6-4afd-b3dc-69d8a68304b6.png" width="974" />
    <figcaption>Первый успешный вход в Ubuntu под Windows</figcaption>
  </figure>
  <h3 id="GAm4">Установка Docker Desktop</h3>
  <p id="Q3y5">Ссылка: <a href="https://www.docker.com/products/docker-desktop/" target="_blank">https://www.docker.com/products/docker-desktop/</a></p>
  <p id="cqVW">Нужен для работы с docker контейнерами. С установкой сложностей не должно возникнуть - скачиваем, устанавливаем. </p>
  <figure id="vCPT" class="m_original">
    <img src="https://img2.teletype.in/files/d1/13/d1130db9-2ecc-452e-84dc-64318858d00c.png" width="703" />
    <figcaption>Процесс установки Docker Desktop под Windows</figcaption>
  </figure>
  <p id="fkky">После установки будет предложено выйти из системы и снова зайти. Покоряемся.</p>
  <p id="XJII">Не забываем проверить, что в настройках Docker Desktop установлена интеграция именно с вашим Linux дистрибутивом:</p>
  <figure id="ottj" class="m_column">
    <img src="https://img4.teletype.in/files/39/f2/39f284d4-a844-4958-ad7b-f9cc0bf98031.png" width="817" />
    <figcaption>Настройки Docker Desktop</figcaption>
  </figure>
  <p id="0qjy">Если дистрибутива нет, то устанавливаем через стандартный магазин приложений Windows - ищем по запросу &quot;Ubuntu&quot;.</p>
  <h3 id="PGHR">Концепция удаленной работы с кодом под Windows</h3>
  <p id="wQ0X">Ссылка на Laravel: <a href="https://laravel.com/docs/9.x#getting-started-on-windows" target="_blank">https://laravel.com/docs/9.x#getting-started-on-windows</a></p>
  <p id="xY6A">Ссылка на VS Code: <a href="https://code.visualstudio.com/" target="_blank">https://code.visualstudio.com/</a></p>
  <p id="heGK">Удаленная разработка: <a href="https://code.visualstudio.com/docs/remote/remote-overview" target="_blank">https://code.visualstudio.com/docs/remote/remote-overview</a></p>
  <p id="jEF4">Из всех PHP фреймворков мне ближе <strong>Laravel</strong>. В качестве IDE использую <strong>VS Code</strong>. </p>
  <p id="zYAk">Если мы будем размещать код проекта в среде windows, то его передача сперва в wsl, а потом в docker контейнер с последующей сборкой фронта будет приводить к существенной потере производительности. </p>
  <p id="G7au">Самое простое решение - удаленное подключение вашего IDE к запушенному VS Code Server-у. В таком случае ваш IDE выступает в роли тонкого клиента, лишь показывая изменения. Вся работа проводится на сервере с минимальными потерями производительности. </p>
  <figure id="bJSm" class="m_column">
    <img src="https://img1.teletype.in/files/8a/18/8a189e16-c875-481d-93f3-c9abf57b5e59.png" width="968" />
    <figcaption>Схема удаленной разработки в VS Code</figcaption>
  </figure>
  <p id="r5Eo">Для реализации этого функционала нужно установить дополнение к VS Code под названием &quot;WSL&quot; от Microsoft:</p>
  <figure id="obvg" class="m_column">
    <img src="https://img3.teletype.in/files/22/06/22063d6e-5017-4376-9037-ecf9c9c18136.png" width="1882" />
    <figcaption>Страница плагина WSL к VS Code.</figcaption>
  </figure>
  <p id="u3bN">Далее по тексту, когда вы будете видеть команду &quot;code .&quot; это как раз и есть запуск удаленного VS Code Server и подключение к нему вашего экземпляра VS Code. </p>
  <h3 id="AU9q">Запуск Laravel в Docker контейнерах</h3>
  <p id="gFtu">Ссылка на Sail: <a href="https://laravel.com/docs/9.x/sail" target="_blank">https://laravel.com/docs/9.x/sail</a></p>
  <p id="q4In"><strong>Sail</strong> - это инструмент Laravel, упрощающий взаимодействие с Docker. После его установки весь проект можно запускать командой sail up. Также sail нужно добавлять к командам composer, npm , artisan - они будут выполняться в нужном контейнере.</p>
  <section style="background-color:hsl(hsl(55,  86%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="mN7o">Механика создания нового проекта и подключение sail к существующему различаются. В следующим разделах мы рассмотрим обе ситуации.</p>
  </section>
  <h3 id="2KLq">Создание нового проекта Laravel под Windows</h3>
  <p id="UXQJ">Сперва зайдем в нашу Linux подсистему:</p>
  <pre id="Aee1">wsl</pre>
  <p id="ixWy">Следующая команда скачает и выполнит скрипт создания нового laravel проекта с указанными модулями:</p>
  <pre id="whEJ">cd ~
curl -s https://laravel.build/test_name?with=mysql | bash</pre>
  <p id="rBHu">Замените название проекта test_name на необходимое. В блоке with можно указать другой набор стартовых компонентов (см. <a href="https://laravel.com/docs/9.x#choosing-your-sail-services" target="_blank">документацию</a>). </p>
  <p id="Gakg">Когда вы выполните эту команду, будет создана папка test_name и в ней будет развернута вся необходима инфраструктура для разработки с установленной последней версией Laravel. Останется только набрать:</p>
  <pre id="cSIx">cd test_name
./vendor/bin/sail up</pre>
  <p id="qFOW">Итога завершения команды как таковой не будет. Вы увидите служебные сообщения о запуске и работе контейнеров:</p>
  <figure id="nq5x" class="m_column">
    <img src="https://img3.teletype.in/files/2d/4c/2d4c8151-bd14-4e20-8489-e1dcc6c4524b.png" width="978" />
    <figcaption>Отображение запущенного проекта Laravel в WSL</figcaption>
  </figure>
  <p id="iuE5">Проверить работу можно зайдя в Windows браузере на localhost. Вы должны увидеть стартовый экран Laravel:</p>
  <figure id="CuDa" class="m_column">
    <img src="https://img3.teletype.in/files/22/21/2221abe1-ef3d-4eac-8b62-4c46c4516011.png" width="1324" />
    <figcaption>Стартовый экран Laravel</figcaption>
  </figure>
  <p id="IzKd">В Docker Desktop также будут видны запущенные контейнеры:</p>
  <figure id="Ikf3" class="m_column">
    <img src="https://img1.teletype.in/files/83/b1/83b1853c-038c-4f56-9a46-35498a1647d2.png" width="1390" />
    <figcaption>Отображение запущенных контейнеров в Docker Desktop</figcaption>
  </figure>
  <p id="c5Tm">Теперь запустим новое окно терминала Windows и выполним в нем:</p>
  <pre id="V39p">wsl
cd test_name (путь до вашего проекта)
code .</pre>
  <p id="Vzgv">Если вы все сделали правильно, то будет запущен новый экземпляр VS Code в который сразу будет загружен код нашего проекта. Все изменения в коде будут сразу применяться. </p>
  <figure id="VTEy" class="m_column">
    <img src="https://img4.teletype.in/files/b0/44/b044c669-f9f2-4474-8442-41876f357019.png" width="1870" />
    <figcaption>Код нового Laravel проекта в VS Code</figcaption>
  </figure>
  <p id="Oivq">В следующих статьях обязательно рассмотрим работу с Git, а пока можно считать задачу создания нового проекта на Laravel под Windows успешно выполненной. </p>
  <h3 id="qBFe">Клонирование существующего Laravel проекта в WSL</h3>
  <p id="52J3">Если проект на Laravel хранится в репозитории и вам нужно его установить к себе на машину, то заходим в WSL:</p>
  <pre id="blxL">wsl</pre>
  <p id="JAjs">Далее вы клонируете репозиторий в нужную директорию:</p>
  <pre id="Hcxy">git clone git@github.com:***ACCOUNT***/***REPO***.git</pre>
  <p id="BhQ2">В хостовой операционке WSL у вас может быть не установлен composer и после копирования репозитория не получится подтянуть зависимости и запустить тот же sail. Скорее всего вы увидите следующую ошибку:</p>
  <pre id="8YIl">bash: vendor/bin/sail: No such file or directory</pre>
  <p id="X2fa">Для исправления : </p>
  <pre id="r3lP">docker run --rm \
    -u &quot;$(id -u):$(id -g)&quot; \
    -v $(pwd):/var/www/html \
    -w /var/www/html \
    laravelsail/php83-composer:latest \
    composer install --ignore-platform-reqs</pre>
  <p id="LZSi">После этого уже можно выполнить:</p>
  <pre id="TvjY">sail composer update
sail npm update
sail up</pre>
  <h3 id="umJS">Добавление Sail в существующий проект</h3>
  <p id="g8N2">Есть в проекте Laravel еще не установлен Sail, то нужно выполнить следующие действия:</p>
  <p id="ywXk">1). Добавляем sail в dev зависимости:</p>
  <pre id="prDo">composer require laravel/sail --dev</pre>
  <p id="Jj5Z">Возможно тут могут возникнуть проблемы, тогда скорее всего нужны будут следующие зависимости:</p>
  <pre id="Jj5Z">sudo apt update
sudo apt install -y php-xml php-mbstring</pre>
  <p id="ZDwQ">2). Устанавливаем Sail. Будет создан файл docker-compose.yml в корне вашего проекта:</p>
  <pre id="pRhC">php artisan sail:install --devcontainer</pre>
  <p id="k4su">Тут вас спросят какие модули нужны. Поставьте цифры в зависимости от потребностей вашего проекта:</p>
  <figure id="K0T9" class="m_original">
    <img src="https://img1.teletype.in/files/4b/df/4bdf04b1-f7f6-418a-8bad-8eb3c3584e1f.png" width="393" />
    <figcaption>Укажите какие модули для вашего проекта нужно установить.</figcaption>
  </figure>
  <h3 id="8Lff">Лайфхак 1: копирование ssh ключей из windows в wsl</h3>
  <p id="3mdV">Если для работы с репозиторием GIT вам нужно скопировать ключи SSH из windows директории Users\&lt;Имя пользователя&gt;\.ssh или в инфраструктуре WSL, тогда SSH ключи расположены в директории ~/.ssh</p>
  <pre id="Ei0v">cd /mnt/c/Users/&lt;username&gt;/.ssh
cp * ~/.ssh
chmod 600 ~/.ssh/id_rsa</pre>
  <h3 id="dZgc">Лайфхак 2: локальный домен, красивое имя в браузере для проекта</h3>
  <p id="RO8z">Вы можете вызывать проекты в браузере не только по имени localhost:port но и задать для них доменные сокращения. Для этого в Windows открываем файл hosts в режиме редактирования (в режиме Администратора):</p>
  <pre id="X4kk">c:\Windows\System32\drivers\etc\hosts</pre>
  <p id="jTEC">Дальше в конец файла вы можете добавить следующий текст:</p>
  <pre id="L35T">127.0.0.1    test.loc</pre>
  <p id="AzcD">Это значит что при вызове test.loc система сперва будет идти на локальный адрес 127.0.0.1. </p>
  <h3 id="BLY9">Лайфхак 3: сокращение вызова sail через alias</h3>
  <p id="Gy2L">Если вы не хотите каждый раз при вызове sail набирать ./vendor/bin/sail, то вы можете сохранить в системе alias вызова этой команды. Наберите в среде WSL:</p>
  <pre id="SaFo">alias sail=&#x27;[ -f sail ] &amp;&amp; bash sail || bash vendor/bin/sail&#x27;</pre>
  <p id="Uqlp">Команда сохранится на время текущей сессии. Если хотите сохранить ее надолго, то наберите:</p>
  <p id="Czlt"><code>nano ~/.bashrc</code></p>
  <p id="AJAa">Это откроет редактор настроек баша. Добавьте в конец этого файла ту же строчку. </p>
  <h3 id="ulKM">Лайфхак 4: несколько Laravel проектов одновременно</h3>
  <p id="U56P">Если вы используете несколько Sail проектов на одной машине, то они могут начать конфликтовать по портам. Первое что нужно сделать - это добавить в .env файл в корне проектов переменную APP_PORT, например:</p>
  <pre id="0T4i">APP_PORT=1234</pre>
  <p id="lQLj">Дальше вы можете обращаться к проекту по адресу 127.0.0.1:1234</p>
  <p id="AooM">Скорее всего аналогичные действия нужно будет совершить относительно открытого порта каждого контейнера, который есть в других проектах. </p>
  <p id="oL58">Для этого смотрим ошибку в консоли, видим какой порт вызывал ошибку, находим его в docker-compose.yml, смотрим какая переменная за него отвечает и добавляем эту переменную в .env файл с увеличением порт на +1. Например:</p>
  <pre id="YEXb">FORWARD_MAILHOG_DASHBOARD_PORT=8026
FORWARD_DB_PORT=3307
FORWARD_MAILHOG_PORT=1026
FORWARD_MINIO_PORT=9001
FORWARD_MINIO_CONSOLE_PORT=8901
HMR_PORT=8083</pre>
  <p id="3GNK">Дерзайте, и все получится.</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://stakhanov.ru/development_windows</guid><link>https://stakhanov.ru/development_windows?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=stakhanov</link><comments>https://stakhanov.ru/development_windows?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=stakhanov#comments</comments><dc:creator>stakhanov</dc:creator><title>Обзор инфраструктуры разработки под Windows с 1999 по 2022</title><pubDate>Sat, 11 Jun 2022 13:13:51 GMT</pubDate><media:content medium="image" url="https://img2.teletype.in/files/16/c0/16c00b4f-7532-4714-8b07-e2c7783d24f5.png"></media:content><description><![CDATA[<img src="https://img2.teletype.in/files/16/68/166826fe-43d6-4e29-a663-3ac843a5a731.jpeg"></img>Сеньоры, маркизы и графья разработчики редко всерьез воспринимают тех, кто использует Windows. Но нам, менеджерам, это простительно. Главное, не сильно уж отставать от хода времени.]]></description><content:encoded><![CDATA[
  <figure id="bCYT" class="m_column">
    <img src="https://img2.teletype.in/files/16/68/166826fe-43d6-4e29-a663-3ac843a5a731.jpeg" width="1200" />
  </figure>
  <p id="LMVf">Сеньоры, маркизы и графья разработчики редко всерьез воспринимают тех, кто использует Windows. Но нам, менеджерам, это простительно. Главное, не сильно уж отставать от хода времени.</p>
  <h3 id="Fz0E">Локальный вэб-сервер (WAMP)</h3>
  <p id="raVt">В начале 2000-х большинство проектов состояло из вэб-сервера (Apache), базы данных (MySQL) и языка программирования (PHP). Под Windows набор получил название WAMP, по первым буквам составляющих решений. Под Linux - LAMP. Для ускоренной установки этой инфраструктуры энтузиасты создали готовые комплекты, включающие дистрибутивы и скрипты настройки. Мне нравился Денвер.</p>
  <figure id="mQ8m" class="m_column">
    <img src="https://img2.teletype.in/files/9d/77/9d7776cb-1b99-414d-a8b0-697325f18344.png" width="1563" />
    <figcaption>Денвер - локальный сервер. WAMP сервер для разработки под Windows</figcaption>
  </figure>
  <p id="QPum">Скачиваешь, устанавливаешь и получаешь настроенный веб сервер, базу данных и работающий PHP. Код проектов хранился в отдельных папочках, обращаться к проектам можно было из браузера по настроенным доменам, а для работы с базой данных чаще всего использовали phpMyAdmin. </p>
  <h3 id="V0C0">Виртуальные машины</h3>
  <p id="vcZD">С ростом производительности оборудования, сложности проектов и желанием приблизится к серверной инфраструктуре, стали набирать популярность решения с виртуализацией: Hyper-V, VMware, VirtualBox. Я пользовался последним:</p>
  <figure id="ptSM" class="m_column">
    <img src="https://www.cloud4y.ru/upload/iblock/31d/virtualbox_6.0.0.png" width="771" />
    <figcaption>Скриншот: рабочее окно VirtualBox</figcaption>
  </figure>
  <p id="3veP">На виртуальной машине можно настроить всю инфраструктуру проекта в максимально близком к &quot;боевому&quot; окружении.</p>
  <h3 id="XUh5">Менеджеры конфигураций</h3>
  <p id="JQDh">Вскоре появились решения для быстрого развертывания виртуальных машин из командной строки и репозитории этих виртуальных машин. Типовые конфигурации стало возможно разворачивать за считанные минуты. Славу на этом поприще снискал Vagrant.</p>
  <figure id="YXJe" class="m_original">
    <img src="https://img2.teletype.in/files/15/e6/15e6317a-2329-4bbf-8ec2-f5ba2ce9ce2a.png" width="564" />
    <figcaption>Скриншот: пример разворачивания окружения с использованием vagrant</figcaption>
  </figure>
  <p id="SkB7">Поверх Vagrant стали формироваться другие популярные &quot;сборки&quot;. Я пользовался Homestead от Laravel (популярный PHP фреймворк) с очень внушительным списком интегрированного и настроенного софта</p>
  <figure id="adIv" class="m_original">
    <img src="https://img4.teletype.in/files/b7/c5/b7c54a7d-099b-47d1-b23e-bfa983239ea4.png" width="690" />
    <figcaption>Скриншот: список интегрированных в Homestead продуктов</figcaption>
  </figure>
  <h3 id="6yKB">Docker и подсистема Linux в Windows</h3>
  <p id="7ll8">Архитектура современных проектов усложнилась кардинально с начала 2000-х.  Набрали популярность микросервисы, появились nosql базы данных, колоночные и inmemory, стало хорошим тоном добавлять в проект готовые опенсорсные решения.</p>
  <p id="xpXt">Каждая из этих подсистем упаковывается в свой контейнер и средством оркестрации обеспечивается контроль их работы, взаимодействие и количество запущенных экземпляров. Среда разработки должна поспевать за эксплуатацией на продакшн.</p>
  <p id="219Y">Прежде чем перейти к следующему шагу - проговорим, чем современная концепция контейнеров отличая от упомянутой выше виртуализации. </p>
  <figure id="NZff" class="m_column">
    <img src="https://img1.teletype.in/files/0f/4e/0f4e0d7a-fd6c-4c53-8949-6fc1543381ca.png" width="1112" />
    <figcaption>Сравнение виртуализации от контейнеризации.</figcaption>
  </figure>
  <p id="xdAD">Каждая виртуальная машина содержит свою операционную систему и работает изолировано. Контейнер работает поверх хостовой операционной системы и использует ее ресурсы. В мире серверов это Linux.</p>
  <p id="z9sP">В среде разработки, под Windows, чтобы иметь возможность запускать те же контейнеры что и в продакшн, - хостовую операционную систему надо заменить на Linux. Для этого  в Windows была разработана технология WSL (Windows Subsystem for Linux), а в последствии и WSL2.</p>
  <p id="N1ZK">Стало возможным под Windows запускать те же контейнеры, что вы используете на своих продакшн серверах. </p>
  <figure id="imi" class="m_column">
    <img src="https://docs.docker.com/desktop/images/redis-image.png" width="1044" />
    <figcaption>Скриншот работы Docker for Windows со списком контейнеров</figcaption>
  </figure>
  <p id="sPa5">Таким образом, у разработчиков под Windows есть абсолютно все инструменты и возможности, чтобы не отставать от своих коллег под MacOS или Linux. Да, сложность входа повысилась, но она возрастает у всех участников рынка.</p>
  <h3 id="V6lL">Вместо морали</h3>
  <p id="GxFw">Не операционная система делает разработчиков хорошими. Не операционная система вытянет ваш проект, сделав его более финансово успешным или стабильным. И даже сев за мак с самым последним процессором, вы не станете понимать больше абстракций. Но раньше, работая из под Windows, нужно было делать гораздо больше танцев с бубном, чтобы остальные участники команды это не заметили. Теперь же процессы разработки стандартизировались и инфраструктура выглядит единообразно что под маком, что под виндой, что под linux. </p>

]]></content:encoded></item></channel></rss>