g9rga
Как я строил дом. Поездка в Ирпень, часть 3
Все началось с того что мы с женой получили ключи от квартиры, которую выплатили в рассрочку(1шку в Киеве, насколько помню около 46 кв. м.), и я на выходных сел набрасывать планировку квартиры.
К сожалению наши требования с того момента как мы ввязались в рассрочку сильно поменялись, раньше мы работали в офисе, но со временем полностью перешли на удаленную работу. Соответственно в однокомнатной квартире нужно было уместить два рабочих места).
Как я не крутил планировку, ничего не помещалось, тогда я психанул и говорю ей: "Слушай, нихрена не помещается в квартиру, давай ее продадим, купим землю возле Киева и построим дом". На том и порешили, благо что наши жизненные цели и взгляды совпадают. Квартиру продали примерно за два месяца и приступили к поиску участка.
Наш выбор пал на Ирпень, но цены на землю заставили нас приуныть, потому что они просто заоблачные(в нормальном месте примерно $3k-$5k за сотку) и цены постоянно растут. Сначала искали подешевле, потом плюнули, потому что хочется жить в красивом месте и раскошелились на шикарный сосновый участок, размером в 10 соток, вот так он выглядел в прошлом году зимой(справа сосед):
Мы хотели себе каркасный дом в стиле барнхаус, потому нашли подрядчика который обязался все сделать в лучшем виде, подкопили денег для старта стройки и в начале осени приступили к строительству, мы хотели оставить как можно больше целых деревьев на участке, потому спилили по минимуму - одно большое дерево и ветку другого дерева:
Поставили забор:
Постепенно дом становился похожим на дом:
Уже зимой этого года как-то приехал посмотреть как идет стройка и дыхание перехватило, снег лежит, сосны стоят в снегу, красота неимоверная(с женой договорились посадить во дворе голубую ель и наряжать ее на новый год):
В целом шло хорошо(не считая того что расходы на стройку сильно отличались от того что запланировали), и мы планировали переехать в дом в конце апреля.
Но потом настало 24 февраля и я немного поплачусь. Как я писал в предыдущих постах, мы с женой уехали на день раньше из Киева, а работники которые строили дом, уехали уже после(отдельное спасибо им за то что когда уезжали, закрыли пленкой все окна и двери. Мы долгое время не знали что с нашим домом, учитывая ожесточенные бои предполагали что он мог сгореть, или же его могли разбомбить. Когда наконец-то получилось вырваться в Ирпень поехал посмотреть что с ним:
На первый взгляд все не так плохо - поломанный забор, разбитые окна, испорчен задний фасад. Ходить пришлось осторожно, эту часть Ирпеня тогда еще не разминировали, в здании напротив так и написано: "Осторожно мины". Зашел посмотреть поближе:
Забор проломлен, там где цел видны сколы(от пуль, осколков?):
Сам дом расстрелян, странно звучит, но именно так можно описать каркасный дом в который стреляли, куча сквозных отверстий когда пуля входит в одну стену и выходит из другой стены. Окон осталось целых примерно 30%, обидно что много где прострелена рама, т.е. такие окна уже нельзя восстановить, в крыше тоже дырки(фото не сделал, мокрый пол под дыркой в крыше говорит о том что все плохо):
Глядя на входную дверь складывается ощущение что кто-то специально стрелял, кто разбирается, это от осколков или пулевые отверстия?
Не разбираюсь в строительстве домов, но что-то мне подсказывает что для того чтоб все починить нужно будет разбирать дом до каркаса, смотреть на повреждения обрешетки, несущих балок, менять паробарьер, гидробарьер, пробитый металл, проверять проводку, трубы, трассу кондиционера и т.д., а потом заново собирать дом
Страшно подумать сколько это все будет стоить, сейчас нет ни денег ни желания что-то чинить - ситуация нестабильная и возможно вскоре от дома вообще ничего не останется.
В очередной раз задумался о том как хрупка наша жизнь и все что у нас есть, а наши планы всегда могут пойти по одному месту. Ну, по крайней мере мы пока живы, и то хорошо.
З.Ы. Упустил много деталей по строительству, потому что тогда пост вышел бы прям ооочень большим.
Поезда в Ирпень. Часть 2
Недалеко от квартиры 23 февраля оставил машину, потому что место спокойное, было кому за ней присмотреть. Знать бы заранее что случится, ни за что бы не оставил. Было:
Стало(фото скинули жильцы с жк):
Есть страховка, но военные действия это не страховой случай.
После этого поехали с братом смотреть что с коммерческим помещением:
Окна все выбиты, но товар арендатора цел, спасибо решеткам. Мы предусмотрительно захватили с собой пленку чтоб их заклеить, на первое время пойдет:
Больше пока ничего делать не будем, неизвестно будет ли второй заход на Киев, не вижу смысла что-то сейчас ремонтировать.
По частному дому сделаю отдельный пост, хочу рассказать как шло строительство.
Не судьба, часть 2
Всем привет! Обещал отписаться когда что-то выяснится по видяшке, на этих выходных ездил в Киев, квартиру не разграбили, видяшка на месте :). К сожалению в квартире которую сейчас снимаем его сейчас негде установить, потому по-прежнему не судьба:
На этом хорошие новости закончиваются. Являюсь несчастным обладателем недвижимости в Ирпене(возле Киева), и как раз на выходных ездил смотреть как там дела. В первую очередь на квартиру, потому что там больше месяца стоял холодильник без электричества(сам холодильник удалось отмыть, но воняло знатно :)
Вот так выглядит дом во дворе напротив квартиры:
Моей квартире повезло больше, разбитое стекло и сквозное отверстие в стене, вот так это выглядит:
Я так понял что кусок металла пробил стену, ударился в другую, отлетел опять в ту стену через которую попал в квартиру и упал на стол.
Кроме квартиры в Ирпене перед отъездом 23 февраля я оставил свою машину(уехали на машине жены), там же осталось коммерческое помещение и почти достроенный дом, в который мы с женой планировали переехать в конце апреля. Если будет интересно что с этим всем стало, создам еще один пост.
Не судьба
Привет! Сам я из Киева, в последнее время осознал что много работаю, и решил прикупить себе видяшку, чтоб немного переключиться от работы, тем более у меня давно готов список игр которые я хотел бы пройти.
20го февраля довольный сходил в магазин, подключил видяшку, поставил cyberpank и подумал что жизнь то налаживается и наконец-то смогу отвести душу.
Ну а потом понеслось, признание ЛНР и ДНР, ввод туда же войск. Мы с женой решили что на всякий случай лучше уехать на недельку в Ивано-Франковск и 23его числа вечером уехали налегке сменить обстановку, а дальше вы все уже знаете из новостей.
В Киеве остался мой компьютер, а в голове мысль: "Не судьба"
Как я решил сделать мобильное приложение[Part 2]
Исходный код парсера и остальных компонентов приложения положил под систему контроля версий git, в качестве бесплатного хостинга приватных репозиториев я использовал github. В принципе, ничего сложного в настройке нет, создал репозиторий на github и проинициализировал его локально:
После этого развернул локально базу данных mysql в локальном k8s-кластере с помощью minikube + helm(взял 3 версию, до этого использовал 2, из явных плюсов увидел только отсутствие tiller)+ чарт bitnami/mysql(конфигурацию чарта опущу, там все по-умолчанию):
Спроектировал структуру базы данных, получилась не очень красиво, из-за большой вариативности данных, но это можно переделать потом:
Пара заметок по структуре базы данных:
- таблица recipe_parser и некоторые вспомогательные поля нужны для сохранения прогресса парсинга сайта между перезапусками парсера
- выбрал кодировку utf8mb4, потому что в контенте достаточно много emoji, и обычный utf8(трехбайтовый) их не может хранить
За структуру проекта для парсера, я взял golang-standards/project-layout. В принципе для такого мелкого приложения его можно было не использовать, но может кому-то будет полезно знать что есть такая штука, когда будет думать как структурировать проект. Получилось как-то так:
Соответственно:
* recipe-parser - это helm-чарт который я создал выше
* sql - папка с миграциями
* data - это папка с данными базы данных, ее необходимо хранить на хосте, чтоб не потерять данные если мой локальный кластер случайно удалится
* все остальное - код связанный с парсингом, конфиги, команды
Для написания самого парсера я использовал следующие пакеты:
- PuerkitoBio/goquery - для парсинга DOM страниц
- jmoiron/sqlx - для работы с базой данных
- sirupsen/logrus - как логгер
- spf13/cobra - для создания команд
- spf13/viper - для конфигурации приложения(yaml в папке configs)
Сам код парсера не вижу смысла выкладывать(технически он несложный), получились такие этапы:
- спарсить категории/подкатегории и записать в базу
- спарсить ссылки рецептов и записать в базу
- скачать все страницы с рецептами и записать на диск(кстати получилось достаточно много, почти 9gb данных):
- считать с диска страницы, распарсить и записать в базу данных
Везде где можно, я параллелил задачи с помощью горутин и буферизированных каналов для контроля количества потоков. Также на сайте присутствовала защита от ботов, но я ее обошел за счет того, что она работала неправильно. В результате получил на выходе базу данных с ~500 категориями и ~90к готовых рецептов с заголовком, описанием, картинками и шагами приготовления. Еще было бы неплохо выкачать все картинки и закинуть в свое облако(использую space от digital ocean), но это пока можно отложить.
На написание парсера и сам парсинг я потратил примерно три вечера. Конечно все то что я описал можно было не делать, но те базы данных что продаются в интернете гораздо меньше и хуже структурированы чем то что я собрал сам, тем более я получил кучу полезного опыта в процессе. С радостью отвечу на ваши вопросы, некоторые моменты я опустил, чтоб пост не получился сильно большой.
В следующем посте собираюсь написать небольшой бекенд на php (и конечно засунуть все в docker :) , с которым будет работать мобильное приложение.
Как я решил сделать мобильное приложение[Part 1]
Это первый пост из серии о том, как я сам делаю мобильное приложение, от идеи до реализации. Надеюсь кому-то это будет интересно как с технической стороны, так и для понимания процесса.
Сам я уже порядка восьми лет работаю бекенд-разработчиком (пишу преимущественно на php), но в свободное время люблю выучить что-то новое, тем более профессионального развития на текущем месте работы как такового нет.
Еще в прошлом году я полностью перешел на удаленную работу и для меня остро встал вопрос готовки еды. Я подумал о том что хорошо бы найти достойное приложение с рецептами, которое будет соответствовать некоторым требованиям:
- Бесплатное
- Без запроса личных данных понапрасну
- С умеренным количеством рекламы
- Большая база рецептов
- Поддержка оффлайн режима работы
- И различные мелкие фичи, например поиск по ингредиентам, список покупок если собрался что-то готовить и т.д.
В принципе, такие приложения есть, но я не буду программистом если не сделаю свой велосипед :)
Основные вопросы которые мне нужно решить для написания приложения:
- Где взять базу данных с рецептами?
- Какой функционал изначально должен быть в приложении?
- Какой технический стек нужен для реализации приложения?
Обо всем по порядку:
Поскольку я не повар, да и времени жалко на то чтоб создавать рецепты самому, первое что я решил - это купить готовую базу данных в интернете. К сожалению предложений не так много, да и те что есть сомнительного качества. Потому я решил спарсить существущий сайт с рецептами. Предвещая вопросы законно ли это, отвечу - законно, но есть нюансы, больше информации можно найти в интернете.
Какой функционал изначально должен быть в приложении?
Это не первый мой личный проект, потому я давно для себя решил, что лучше зарелизить что-то в минимальном обьеме и наращивать функционал постепенно, чем строить космический корабль и не достроить его. Для себя я решил, что в первой итерации приложения будет:
- категории с рецептами, непременно с картинками
- поиск по рецептам и категориям
- избранные рецепты(нужно же отмечать те рецепты что мне понравились, чтоб использовать их потом еще раз :)
Какой технический стек нужен для реализации приложения?
Поразмыслив, я предварительно решил остановиться на:
- kubernetes + docker(containerd) + helm3 для локальной разработки и live
- golang для парсинга данных
- mysql в качестве хранилища данных
- php для бекенда, мобильное приложение будет получать данные из api
- elasticsearch - поисковый движок для поиска
- react native - платформа для мобильного приложения. У меня уже есть опыт написания нескольких приложений на этой платформе, тут не будут выдумывать ничего нового. Дополнительно возьму какой-то свободный UI kit, предварительно UI kitten, еще не решил.
На момент написания этого поста, я уже спарсил рецепты и сохранил их в базу данных, подробнее опишу в следующем посте.