g9rga

Software engineer at Company
На Пикабу
Дата рождения: 29 июля 1987
поставил 383 плюса и 299 минусов
отредактировал 0 постов
проголосовал за 0 редактирований
9655 рейтинг 57 подписчиков 5 подписок 7 постов 4 в горячем

По поводу мобилизации

Сочувствую всем тем кто не поддерживал СВО изначально и теперь попадает под раздачу. Говорят что умный учится на чужих ошибках, я читаю ваши новости и вижу все то же самое что уже было у нас начиная с 24 февраля, потому хотел бы дать совет(для кого-то возможно очевидный) - если есть возможность и вы не хотите чтоб вас принудительно отправили на фронт - уезжайте, границы для военнообязанных могут перекрыть очень быстро(у нас это сделали одним днем). Мы с женой, к сожалению, не успели.

Как я строил дом. Поездка в Ирпень, часть 3

Все началось с того что мы с женой получили ключи от квартиры, которую выплатили в рассрочку(1шку в Киеве, насколько помню около 46 кв. м.), и я на выходных сел набрасывать планировку квартиры.

К сожалению наши требования с того момента как мы ввязались в рассрочку сильно поменялись, раньше мы работали в офисе, но со временем полностью перешли на удаленную работу. Соответственно в однокомнатной квартире нужно было уместить два рабочих места).

Как я не крутил планировку, ничего не помещалось, тогда я психанул и говорю ей: "Слушай, нихрена не помещается в квартиру, давай ее продадим, купим землю возле Киева и построим дом". На том и порешили, благо что наши жизненные цели и взгляды совпадают. Квартиру продали примерно за два месяца и приступили к поиску участка.

Наш выбор пал на Ирпень, но цены на землю заставили нас приуныть, потому что они просто заоблачные(в нормальном месте примерно $3k-$5k за сотку) и цены постоянно растут. Сначала искали подешевле, потом плюнули, потому что хочется жить в красивом месте и раскошелились на шикарный сосновый участок, размером в 10 соток, вот так он выглядел в прошлом году зимой(справа сосед):

Как я строил дом. Поездка в Ирпень, часть 3 Ирпень, Дом, Каркасный дом, Строительство, Война, Длиннопост, Украина

Мы хотели себе каркасный дом в стиле барнхаус, потому нашли подрядчика который обязался все сделать в лучшем виде, подкопили денег для старта стройки и в начале осени приступили к строительству, мы хотели оставить как можно больше целых деревьев на участке, потому спилили по минимуму - одно большое дерево и ветку другого дерева:

Как я строил дом. Поездка в Ирпень, часть 3 Ирпень, Дом, Каркасный дом, Строительство, Война, Длиннопост, Украина
Как я строил дом. Поездка в Ирпень, часть 3 Ирпень, Дом, Каркасный дом, Строительство, Война, Длиннопост, Украина
Как я строил дом. Поездка в Ирпень, часть 3 Ирпень, Дом, Каркасный дом, Строительство, Война, Длиннопост, Украина

Поставили забор:

Как я строил дом. Поездка в Ирпень, часть 3 Ирпень, Дом, Каркасный дом, Строительство, Война, Длиннопост, Украина

Постепенно дом становился похожим на дом:

Как я строил дом. Поездка в Ирпень, часть 3 Ирпень, Дом, Каркасный дом, Строительство, Война, Длиннопост, Украина
Как я строил дом. Поездка в Ирпень, часть 3 Ирпень, Дом, Каркасный дом, Строительство, Война, Длиннопост, Украина

Уже зимой этого года как-то приехал посмотреть как идет стройка и дыхание перехватило, снег лежит, сосны стоят в снегу, красота неимоверная(с женой договорились посадить во дворе голубую ель и наряжать ее на новый год):

Как я строил дом. Поездка в Ирпень, часть 3 Ирпень, Дом, Каркасный дом, Строительство, Война, Длиннопост, Украина

В целом шло хорошо(не считая того что расходы на стройку сильно отличались от того что запланировали), и мы планировали переехать в дом в конце апреля.


Но потом настало 24 февраля и я немного поплачусь. Как я писал в предыдущих постах, мы с женой уехали на день раньше из Киева, а работники которые строили дом, уехали уже после(отдельное спасибо им за то что когда уезжали, закрыли пленкой все окна и двери. Мы долгое время не знали что с нашим домом, учитывая ожесточенные бои предполагали что он мог сгореть, или же его могли разбомбить. Когда наконец-то получилось вырваться в Ирпень поехал посмотреть что с ним:

Как я строил дом. Поездка в Ирпень, часть 3 Ирпень, Дом, Каркасный дом, Строительство, Война, Длиннопост, Украина

На первый взгляд все не так плохо - поломанный забор, разбитые окна, испорчен задний фасад. Ходить пришлось осторожно, эту часть Ирпеня тогда еще не разминировали, в здании напротив так и написано: "Осторожно мины". Зашел посмотреть поближе:

Как я строил дом. Поездка в Ирпень, часть 3 Ирпень, Дом, Каркасный дом, Строительство, Война, Длиннопост, Украина
Как я строил дом. Поездка в Ирпень, часть 3 Ирпень, Дом, Каркасный дом, Строительство, Война, Длиннопост, Украина

Забор проломлен, там где цел видны сколы(от пуль, осколков?):

Как я строил дом. Поездка в Ирпень, часть 3 Ирпень, Дом, Каркасный дом, Строительство, Война, Длиннопост, Украина
Как я строил дом. Поездка в Ирпень, часть 3 Ирпень, Дом, Каркасный дом, Строительство, Война, Длиннопост, Украина

Сам дом расстрелян, странно звучит, но именно так можно описать каркасный дом в который стреляли, куча сквозных отверстий когда пуля входит в одну стену и выходит из другой стены. Окон осталось целых примерно 30%, обидно что много где прострелена рама, т.е. такие окна уже нельзя восстановить, в крыше тоже дырки(фото не сделал, мокрый пол под дыркой в крыше говорит о том что все плохо):

Как я строил дом. Поездка в Ирпень, часть 3 Ирпень, Дом, Каркасный дом, Строительство, Война, Длиннопост, Украина
Как я строил дом. Поездка в Ирпень, часть 3 Ирпень, Дом, Каркасный дом, Строительство, Война, Длиннопост, Украина

Глядя на входную дверь складывается ощущение что кто-то специально стрелял, кто разбирается, это от осколков или пулевые отверстия?

Как я строил дом. Поездка в Ирпень, часть 3 Ирпень, Дом, Каркасный дом, Строительство, Война, Длиннопост, Украина

Не разбираюсь в строительстве домов, но что-то мне подсказывает что для того чтоб все починить нужно будет разбирать дом до каркаса, смотреть на повреждения обрешетки, несущих балок, менять паробарьер, гидробарьер, пробитый металл, проверять проводку, трубы, трассу кондиционера и т.д., а потом заново собирать дом

Страшно подумать сколько это все будет стоить, сейчас нет ни денег ни желания что-то чинить - ситуация нестабильная и возможно вскоре от дома вообще ничего не останется.


В очередной раз задумался о том как хрупка наша жизнь и все что у нас есть, а наши планы всегда могут пойти по одному месту. Ну, по крайней мере мы пока живы, и то хорошо.


З.Ы. Упустил много деталей по строительству, потому что тогда пост вышел бы прям ооочень большим.

Показать полностью 16

Поезда в Ирпень. Часть 2

Недалеко от квартиры 23 февраля оставил машину, потому что место спокойное, было кому за ней присмотреть. Знать бы заранее что случится, ни за что бы не оставил. Было:

Поезда в Ирпень. Часть 2 Украина, Ирпень, Потеря, Сгорел, Спецоперация, Война, Длиннопост

Стало(фото скинули жильцы с жк):

Поезда в Ирпень. Часть 2 Украина, Ирпень, Потеря, Сгорел, Спецоперация, Война, Длиннопост
Поезда в Ирпень. Часть 2 Украина, Ирпень, Потеря, Сгорел, Спецоперация, Война, Длиннопост

Есть страховка, но военные действия это не страховой случай.


После этого поехали с братом смотреть что с коммерческим помещением:

Поезда в Ирпень. Часть 2 Украина, Ирпень, Потеря, Сгорел, Спецоперация, Война, Длиннопост
Поезда в Ирпень. Часть 2 Украина, Ирпень, Потеря, Сгорел, Спецоперация, Война, Длиннопост

Окна все выбиты, но товар арендатора цел, спасибо решеткам. Мы предусмотрительно захватили с собой пленку чтоб их заклеить, на первое время пойдет:

Поезда в Ирпень. Часть 2 Украина, Ирпень, Потеря, Сгорел, Спецоперация, Война, Длиннопост
Поезда в Ирпень. Часть 2 Украина, Ирпень, Потеря, Сгорел, Спецоперация, Война, Длиннопост

Больше пока ничего делать не будем, неизвестно будет ли второй заход на Киев, не вижу смысла что-то сейчас ремонтировать.


По частному дому сделаю отдельный пост, хочу рассказать как шло строительство.

Показать полностью 7

Не судьба, часть 2

Всем привет! Обещал отписаться когда что-то выяснится по видяшке, на этих выходных ездил в Киев, квартиру не разграбили, видяшка на месте :). К сожалению в квартире которую сейчас снимаем его сейчас негде установить, потому по-прежнему не судьба:

Не судьба, часть 2 Видеокарта, Nvidia, Ирпень, Украина, Видео, Без звука, Длиннопост

На этом хорошие новости закончиваются. Являюсь несчастным обладателем недвижимости в Ирпене(возле Киева), и как раз на выходных ездил смотреть как там дела. В первую очередь на квартиру, потому что там больше месяца стоял холодильник без электричества(сам холодильник удалось отмыть, но воняло знатно :)


Вот так выглядит дом во дворе напротив квартиры:

Не судьба, часть 2 Видеокарта, Nvidia, Ирпень, Украина, Видео, Без звука, Длиннопост

Моей квартире повезло больше, разбитое стекло и сквозное отверстие в стене, вот так это выглядит:

Не судьба, часть 2 Видеокарта, Nvidia, Ирпень, Украина, Видео, Без звука, Длиннопост

Я так понял что кусок металла пробил стену, ударился в другую, отлетел опять в ту стену через которую попал в квартиру и упал на стол.


Кроме квартиры в Ирпене перед отъездом 23 февраля я оставил свою машину(уехали на машине жены), там же осталось коммерческое помещение и почти достроенный дом, в который мы с женой планировали переехать в конце апреля. Если будет интересно что с этим всем стало, создам еще один пост.

Показать полностью 2 1

Не судьба

Привет! Сам я из Киева, в последнее время осознал что много работаю, и решил прикупить себе видяшку, чтоб немного переключиться от работы, тем более у меня давно готов список игр которые я хотел бы пройти.

20го февраля довольный сходил в магазин, подключил видяшку, поставил cyberpank и подумал что жизнь то налаживается и наконец-то смогу отвести душу.

Не судьба Nvidia, Игры, Видеокарта, Украина

Ну а потом понеслось, признание ЛНР и ДНР, ввод туда же войск. Мы с женой решили что на всякий случай лучше уехать на недельку в Ивано-Франковск и 23его числа вечером уехали налегке сменить обстановку, а дальше вы все уже знаете из новостей.

В Киеве остался мой компьютер, а в голове мысль: "Не судьба"

Показать полностью

Как я решил сделать мобильное приложение[Part 2]

1 часть


Исходный код парсера и остальных компонентов приложения положил под систему контроля версий git, в качестве бесплатного хостинга приватных репозиториев я использовал github. В принципе, ничего сложного в настройке нет, создал репозиторий на github и проинициализировал его локально:

Как я решил сделать мобильное приложение[Part 2] Программирование, Длиннопост, IT, Golang

После этого развернул локально базу данных mysql в локальном k8s-кластере с помощью minikube + helm(взял 3 версию, до этого использовал 2, из явных плюсов увидел только отсутствие tiller)+ чарт bitnami/mysql(конфигурацию чарта опущу, там все по-умолчанию):

Как я решил сделать мобильное приложение[Part 2] Программирование, Длиннопост, IT, Golang
Как я решил сделать мобильное приложение[Part 2] Программирование, Длиннопост, IT, Golang
Как я решил сделать мобильное приложение[Part 2] Программирование, Длиннопост, IT, Golang

Спроектировал структуру базы данных, получилась не очень красиво, из-за большой вариативности данных, но это можно переделать потом:

Как я решил сделать мобильное приложение[Part 2] Программирование, Длиннопост, IT, Golang
Как я решил сделать мобильное приложение[Part 2] Программирование, Длиннопост, IT, Golang

Пара заметок по структуре базы данных:

- таблица recipe_parser и некоторые вспомогательные поля нужны для сохранения прогресса парсинга сайта между перезапусками парсера

- выбрал кодировку utf8mb4, потому что в контенте достаточно много emoji, и обычный utf8(трехбайтовый) их не может хранить

За структуру проекта для парсера, я взял golang-standards/project-layout. В принципе для такого мелкого приложения его можно было не использовать, но может кому-то будет полезно знать что есть такая штука, когда будет думать как структурировать проект. Получилось как-то так:

Как я решил сделать мобильное приложение[Part 2] Программирование, Длиннопост, IT, Golang

Соответственно:

* recipe-parser - это helm-чарт который я создал выше

* sql - папка с миграциями
* data - это папка с данными базы данных, ее необходимо хранить на хосте, чтоб не потерять данные если мой локальный кластер случайно удалится

* все остальное - код связанный с парсингом, конфиги, команды

Для написания самого парсера я использовал следующие пакеты:

- PuerkitoBio/goquery - для парсинга DOM страниц

- jmoiron/sqlx - для работы с базой данных

- sirupsen/logrus - как логгер

- spf13/cobra - для создания команд

- spf13/viper - для конфигурации приложения(yaml в папке configs)

Сам код парсера не вижу смысла выкладывать(технически он несложный), получились такие этапы:

- спарсить категории/подкатегории и записать в базу

- спарсить ссылки рецептов и записать в базу

- скачать все страницы с рецептами и записать на диск(кстати получилось достаточно много, почти 9gb данных):

Как я решил сделать мобильное приложение[Part 2] Программирование, Длиннопост, IT, Golang

- считать с диска страницы, распарсить и записать в базу данных

Везде где можно, я параллелил задачи с помощью горутин и буферизированных каналов для контроля количества потоков. Также на сайте присутствовала защита от ботов, но я ее обошел за счет того, что она работала неправильно. В результате получил на выходе базу данных с ~500 категориями и ~90к готовых рецептов с заголовком, описанием, картинками и шагами приготовления. Еще было бы неплохо выкачать все картинки и закинуть в свое облако(использую space от digital ocean), но это пока можно отложить.

На написание парсера и сам парсинг я потратил примерно три вечера. Конечно все то что я описал можно было не делать, но те базы данных что продаются в интернете гораздо меньше и хуже структурированы чем то что я собрал сам, тем более я получил кучу полезного опыта в процессе. С радостью отвечу на ваши вопросы, некоторые моменты я опустил, чтоб пост не получился сильно большой.

В следующем посте собираюсь написать небольшой бекенд на php (и конечно засунуть все в docker :) , с которым будет работать мобильное приложение.

Показать полностью 7

Как я решил сделать мобильное приложение[Part 1]

Это первый пост из серии о том, как я сам делаю мобильное приложение, от идеи до реализации. Надеюсь кому-то это будет интересно как с технической стороны, так и для понимания процесса.


Сам я уже порядка восьми лет работаю бекенд-разработчиком (пишу преимущественно на php), но в свободное время люблю выучить что-то новое, тем более профессионального развития на текущем месте работы как такового нет.


Еще в прошлом году я полностью перешел на удаленную работу и для меня остро встал вопрос готовки еды. Я подумал о том что хорошо бы найти достойное приложение с рецептами, которое будет соответствовать некоторым требованиям:

- Бесплатное

- Без запроса личных данных понапрасну

- С умеренным количеством рекламы

- Большая база рецептов

- Поддержка оффлайн режима работы

- И различные мелкие фичи, например поиск по ингредиентам, список покупок если собрался что-то готовить и т.д.


В принципе, такие приложения есть, но я не буду программистом если не сделаю свой велосипед :)


Основные вопросы которые мне нужно решить для написания приложения:

- Где взять базу данных с рецептами?

- Какой функционал изначально должен быть в приложении?

- Какой технический стек нужен для реализации приложения?


Обо всем по порядку:


Где взять базу данных с рецептами?

Поскольку я не повар, да и времени жалко на то чтоб создавать рецепты самому, первое что я решил - это купить готовую базу данных в интернете. К сожалению предложений не так много, да и те что есть сомнительного качества. Потому я решил спарсить существущий сайт с рецептами. Предвещая вопросы законно ли это, отвечу - законно, но есть нюансы, больше информации можно найти в интернете.


Какой функционал изначально должен быть в приложении?

Это не первый мой личный проект, потому я давно для себя решил, что лучше зарелизить что-то в минимальном обьеме и наращивать функционал постепенно, чем строить космический корабль и не достроить его. Для себя я решил, что в первой итерации приложения будет:

- категории с рецептами, непременно с картинками

- поиск по рецептам и категориям

- избранные рецепты(нужно же отмечать те рецепты что мне понравились, чтоб использовать их потом еще раз :)


Какой технический стек нужен для реализации приложения?

Поразмыслив, я предварительно решил остановиться на:

- kubernetes + docker(containerd) + helm3 для локальной разработки и live

- golang для парсинга данных

- mysql в качестве хранилища данных

- php для бекенда, мобильное приложение будет получать данные из api

- elasticsearch - поисковый движок для поиска

- react native - платформа для мобильного приложения. У меня уже есть опыт написания нескольких приложений на этой платформе, тут не будут выдумывать ничего нового. Дополнительно возьму какой-то свободный UI kit, предварительно UI kitten, еще не решил.


На момент написания этого поста, я уже спарсил рецепты и сохранил их в базу данных, подробнее опишу в следующем посте.

Как я решил сделать мобильное приложение[Part 1] IT, Программирование, Длиннопост, Приложение
Показать полностью 1
Отличная работа, все прочитано!