<?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>Стаханов про общепит, автоматизацию и IT</title><subtitle>Стаханов Дмитрий - совладелец IT компании Мой Кассир и сети пекарен Еще Вкуснее. Люблю чем занимаюсь. Делюсь.</subtitle><author><name>Стаханов про общепит, автоматизацию и IT</name></author><id>https://teletype.in/atom/stakhanov</id><link rel="self" type="application/atom+xml" href="https://teletype.in/atom/stakhanov?offset=0"></link><link rel="alternate" type="text/html" href="https://stakhanov.ru/?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=stakhanov"></link><link rel="next" type="application/rss+xml" href="https://teletype.in/atom/stakhanov?offset=10"></link><link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></link><updated>2026-05-06T11:56:31.036Z</updated><entry><id>stakhanov:about_stakhanov_dmitry</id><link rel="alternate" type="text/html" href="https://stakhanov.ru/about_stakhanov_dmitry?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=stakhanov"></link><title>Мой путь в автоматизации общепита</title><published>2025-02-08T19:49:12.813Z</published><updated>2025-02-08T19:49:12.813Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img1.teletype.in/files/08/3e/083ed427-703c-4a17-8fb2-a3dc22eebe86.png"></media:thumbnail><category term="obshepit" label="Общепит"></category><summary type="html">&lt;img src=&quot;https://img4.teletype.in/files/70/34/70349d46-fe25-4144-b370-4342311162c5.jpeg&quot;&gt;Всем привет, меня зовут Стаханов Дмитрий - совладелец IT компании &quot;Мой Кассир&quot; и сети пекарен &quot;Еще вкуснее&quot; в городе Нефтекамск. Я кайфую от того, чем занимаюсь и  убежден, что предпринимательство - это самый эффективный инструмент личностного развития.</summary><content type="html">
  &lt;p id=&quot;wyeo&quot;&gt;Всем привет, меня зовут Стаханов Дмитрий - совладелец IT компании &lt;a href=&quot;https://moykassir.ru&quot; target=&quot;_blank&quot;&gt;&amp;quot;Мой Кассир&amp;quot;&lt;/a&gt; и сети пекарен &amp;quot;Еще вкуснее&amp;quot; в городе Нефтекамск. Я кайфую от того, чем занимаюсь и  убежден, что предпринимательство - это самый эффективный инструмент личностного развития. &lt;/p&gt;
  &lt;figure id=&quot;Y432&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/70/34/70349d46-fe25-4144-b370-4342311162c5.jpeg&quot; width=&quot;1280&quot; /&gt;
    &lt;figcaption&gt;И хлеб печем и программы пишем - нет у предпринимателей должностных инструкций.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;KUlx&quot;&gt;Обилие в сети историй про &amp;quot;успешный успех&amp;quot; демотивируют многих начинающих предпринимателей и создает неоправданные ожидания простоты и скорых значимых результатов. На своем примере хочу дать энергию и поддержку тем, кто выбирает долгий эволюционный путь развития себя, своих навыков, команды и бизнеса.&lt;/p&gt;
  &lt;p id=&quot;ylkU&quot;&gt;У нашей компании есть цель, чтобы на нас работало 40 тысяч адресов в 40 странах. С 2019 по 2025 мы прошли 9% от намеченного: 3,6 тысяч адресов в 7 странах выбрали нас. И я горжусь этим результатом и благодарен всем, кто рядом и его приближает.&lt;/p&gt;
  &lt;p id=&quot;7AFg&quot;&gt;Но подготовительный путь в этом направлении начался 20 лет назад.&lt;/p&gt;
  &lt;figure id=&quot;DUAK&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/84/57/8457ec20-56fd-4aa7-a406-2dffe2b46520.jpeg&quot; width=&quot;1100&quot; /&gt;
    &lt;figcaption&gt;Фотография клуба Резиденция, г.Ижевск. На экране виден только один бар из 7. Цеха кухни никогда в кадр не попадали. Возможно я где-то тут на фотографии смотрю почему не выходят чеки )&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;WLsy&quot;&gt;В мае 2007 года я из государственного банка перешел в коммерческий холдинг на позицию финансового директора. Первый рабочий день совпал с открытием &amp;quot;Резиденции&amp;quot;, крупнейшего ночного клуба республики: 3 этажа, 7 баров и 2 кухни. Помню, что на сцене выступает Собчак и Грув, а у меня все мысли, что ничего айтишного не работает как должно.&lt;/p&gt;
  &lt;p id=&quot;mA5E&quot;&gt;Замена софта стала моим первым проектом и с этого началось погружение в автоматизацию общепита. Мне невероятно повезло, что в нашем холдинге была концентрация разных видов бизнеса: помимо ночного клуба еще были кинотеатр, столовые, кафе, фудкорт, кейтеринг и бесконечное количество строек и ремонтов.&lt;/p&gt;
  &lt;figure id=&quot;O1mx&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/07/34/07347fc6-86a2-4088-a4ea-099f32ccc232.png&quot; width=&quot;1280&quot; /&gt;
    &lt;figcaption&gt;В Казани в 2016 году мы участники Финополис. Рассказывали про экран клиента. &lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;qb73&quot;&gt;В 2013 году состоялся мой переход в коммерческую IT разработку, в компанию по автоматизации служб такси. Появились мои первые it стартапы: по взысканию долгов, по записи на стрижку, система эскалирования проблем внутри компании и кассовое ПО. С кассами как раз все и завертелось: мы победили в стартап Сабантуе, прошли акселерация в Татарстане, была защита перед Эльвирой Набиуллиной. Поработали с первыми инвесторами и партнерами. &lt;/p&gt;
  &lt;p id=&quot;8mdM&quot;&gt;Крупнейшая сделка того периода - продажа копии проекта федеральному оператору. Наша программа одновременно работала на 25 тысячах касс. Сделка позволила выплатить дивиденды учредителям, сравнимые с инвестициями с момента основания, и год не думать о деньгах на зарплаты. В 2019 году мы выкупили &amp;quot;Мой Кассир&amp;quot; и начали работать независимо. &lt;/p&gt;
  &lt;figure id=&quot;AFLr&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/d5/de/d5de8ca5-f9fd-484b-91dc-5caf064bd4a4.jpeg&quot; width=&quot;1280&quot; /&gt;
    &lt;figcaption&gt;Да много всего происходит в жизни сети пекарен. Не показать это на одной фотографии )&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;58SN&quot;&gt;В общепите мы развиваем сеть пекарен &amp;quot;Еще вкуснее&amp;quot; в городе Нефтекамск с моим партнером Тимуром Габдулхаевым. Малый бизнес очень быстро отучивает предпринимателя от фразы &amp;quot;я не умею&amp;quot;. Сейчас у нас фабрика кухня, два производства и 13 торговых точек. Но когда мы только начинали приходилось заниматься всем - от доделок за строителями и выбором формы продавцов, до составления скриптов продаж и планов производства.  &lt;/p&gt;
  &lt;p id=&quot;8iwq&quot;&gt;С появлением пекарен - круг замкнулся. Уже нельзя точно сказать, это &amp;quot;Мой Кассир&amp;quot; занимается автоматизацией общепита, или общепит развивает &amp;quot;Мой Кассир&amp;quot;. Скорость вращения этого колеса зависит от энергии фаундеров и от команды. &lt;/p&gt;
  &lt;p id=&quot;EzsO&quot;&gt;Буду делиться, как кручу педали. Подписывайтесь на мой телеграмм канал: &lt;a href=&quot;https://t.me/stakhanov_ceo&quot; target=&quot;_blank&quot;&gt;https://t.me/stakhanov_ceo&lt;/a&gt;&lt;/p&gt;

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

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

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