День 21
Задание:
1. Добавить утилиту: для заданной id машинки, которая генерит её трек в реальном времени (дописывает точки в базу например раз в 10 секунд), похожий на настоящий. Можно какие-нибудь сплайны задействовать. Задаются также длина трека в километрах, максимальные скорость и ускорение и шаг точек с разбросом.
2. Треки желательно к улицам привязывать, в карточных API есть роутинг. Есть например GraphHopper Directions API - строит случайный маршрут по автодороге.
3. Попробуйте добавить генерацию с роутингом.
Ход проекта:
1. Сделал утилиту, которая на вход принимает флагами нужные параметры и каждые 10 секунд записывает точки трека в БД. Использую роутинг GraphHopper'а, который генерирует трек, получая 2 или более точек. Если есть флаг step (шаг точек), то генерируется несколько точек в зависимости от заданной длины трека, по которым затем строится роутинг с привязкой к улицам.
2. Сохраняю непосредственно поездку.
#проект
Задание:
1. Добавить утилиту: для заданной id машинки, которая генерит её трек в реальном времени (дописывает точки в базу например раз в 10 секунд), похожий на настоящий. Можно какие-нибудь сплайны задействовать. Задаются также длина трека в километрах, максимальные скорость и ускорение и шаг точек с разбросом.
2. Треки желательно к улицам привязывать, в карточных API есть роутинг. Есть например GraphHopper Directions API - строит случайный маршрут по автодороге.
3. Попробуйте добавить генерацию с роутингом.
Ход проекта:
1. Сделал утилиту, которая на вход принимает флагами нужные параметры и каждые 10 секунд записывает точки трека в БД. Использую роутинг GraphHopper'а, который генерирует трек, получая 2 или более точек. Если есть флаг step (шаг точек), то генерируется несколько точек в зависимости от заданной длины трека, по которым затем строится роутинг с привязкой к улицам.
2. Сохраняю непосредственно поездку.
#проект
День 22
Задание:
1. Добавьте модель Отчёт, которая содержит поля - название, период и пр.
2. От него наследуйте конкретный отчёт "Пробег автомобиля за период" (тип отчёта). Период и даты задаются, а в результате показываются пробеги в км. Если период - сутки, то раскладка пробега по дням, если месяц - по месяцам, и т. д.
3. Добавьте в интерфейсе для менеджера раздел "Отчёты", где доступен список отчётов и календарь с возможностью выбора дат.
4. Для получения отчёта сделайте API, где запрашивается отчёт с id автомобиля, нужным типом, датами и периодом.
Ход проекта:
1. Добавил модель "Отчет". В Go нет наследования, но есть композиция - завел структуру "Пробег автомобиля за период", в которую вложил кроме Id и Пробега непосредственно сам "Отчет".
2. Для менеджера сделал дополнительную кнопку на экране всех предприятий.
3. По кнопке он получает доступ к конфигуратору отчета с календарем. Выбирает нужный автомобиль из доступных. Когда все значения выбраны, можно сформировать отчет.
#проект
Задание:
1. Добавьте модель Отчёт, которая содержит поля - название, период и пр.
2. От него наследуйте конкретный отчёт "Пробег автомобиля за период" (тип отчёта). Период и даты задаются, а в результате показываются пробеги в км. Если период - сутки, то раскладка пробега по дням, если месяц - по месяцам, и т. д.
3. Добавьте в интерфейсе для менеджера раздел "Отчёты", где доступен список отчётов и календарь с возможностью выбора дат.
4. Для получения отчёта сделайте API, где запрашивается отчёт с id автомобиля, нужным типом, датами и периодом.
Ход проекта:
1. Добавил модель "Отчет". В Go нет наследования, но есть композиция - завел структуру "Пробег автомобиля за период", в которую вложил кроме Id и Пробега непосредственно сам "Отчет".
2. Для менеджера сделал дополнительную кнопку на экране всех предприятий.
3. По кнопке он получает доступ к конфигуратору отчета с календарем. Выбирает нужный автомобиль из доступных. Когда все значения выбраны, можно сформировать отчет.
#проект
Июль 2023:
✅ Продолжаю разрабатывать "дипломный проект" писал о нем выше. Текущий прогресс: 23/25
✅ Завершил второй курс по парадигмам программирования (на подходе курс по ФП!)
✅ Реализовал MVP для стартапа, который организует отправку данных на сервер, как просто json, так и multipart/form-data.
✅ В ходе реализации "дипломного проекта" и общением с ChatGPT сильно продвинулся в понимании JavaScript'а, а также в упаковке и развертывании приложения с помощью Docker'а
// так как не нашел времени на достижение данных целей даже повторно, то они не так важны для меня, а значит - убираются из списка:
❌ Закончить курс по JS (повторно)
❌ Закончить освоение веб-фреймворка Gin (повторно)
—
Планы на август:
🔖 Приступить к изучению одной из N купленных в июне книг (повторно)
🔖 Приступить к третьему курсу по парадигмам программирования (функциональное программирование)
🔖 Завершить дипломный проект (осталось 2 задания) и выложить все на гитхаб (повторно)
🔖 Выстроить регулярное взаимодействие с ментором и выполнить первое задание про балансировщик нагрузки (повторно)
🔖 Заполнить матрицу компетенций (внутренний авитовский инструмент), чтобы понимать чего мне не хватает, чтобы развиваться карьерно: E3->E4 (и дальше в сторону senior)
#результаты
✅ Продолжаю разрабатывать "дипломный проект" писал о нем выше. Текущий прогресс: 23/25
✅ Завершил второй курс по парадигмам программирования (на подходе курс по ФП!)
✅ Реализовал MVP для стартапа, который организует отправку данных на сервер, как просто json, так и multipart/form-data.
✅ В ходе реализации "дипломного проекта" и общением с ChatGPT сильно продвинулся в понимании JavaScript'а, а также в упаковке и развертывании приложения с помощью Docker'а
// так как не нашел времени на достижение данных целей даже повторно, то они не так важны для меня, а значит - убираются из списка:
❌ Закончить курс по JS (повторно)
❌ Закончить освоение веб-фреймворка Gin (повторно)
—
Планы на август:
🔖 Приступить к изучению одной из N купленных в июне книг (повторно)
🔖 Приступить к третьему курсу по парадигмам программирования (функциональное программирование)
🔖 Завершить дипломный проект (осталось 2 задания) и выложить все на гитхаб (повторно)
🔖 Выстроить регулярное взаимодействие с ментором и выполнить первое задание про балансировщик нагрузки (повторно)
🔖 Заполнить матрицу компетенций (внутренний авитовский инструмент), чтобы понимать чего мне не хватает, чтобы развиваться карьерно: E3->E4 (и дальше в сторону senior)
#результаты
Telegram
time2code
Начал делать "дипломный" проект в ВШПСБ. Он идет бонусом к основному курсу, который прохожу по декларативной модели, и состоит из 25 заданий (основные боли в бэкенд разработке). Тема: автопарк, регистрация и учет автомобилей.
Проект нужно успеть выполнить…
Проект нужно успеть выполнить…
День 23
Задание:
Сгенерируйте побольше данных, несколько тысяч треков на десяток машин в течение пары лет например,
и упакуйте всю вашу систему с демо-данными в докер, чтобы её можно было быстро стартануть и показать, как она работает вживую.
Можно Docker compose с несколькими контейнерами, чтобы не в одном всё поднимать.
Ход проекта:
1. Создал файл - Dockerfile, который упаковывает в контейнер мое приложение.
2. Создал файл - docker-compose, который позволяет управлять запуском сразу нескольких контейнеров: с приложением и с БД.
3. Создал файл - Makefile, который описывает необходимые для разворачивания команды.
4. 3 файла в совокупности позволяют упаковать разработанное приложение и развернуть, используя docker-compose. При этом контейнер с БД идет первым и пока не будет развернут, не запускается второй с приложением (делаю healthcheck в docker-compose файле).
5. При первом запуске приложение запускает внутренний скрипт на генерацию треков.
#проект
Задание:
Сгенерируйте побольше данных, несколько тысяч треков на десяток машин в течение пары лет например,
и упакуйте всю вашу систему с демо-данными в докер, чтобы её можно было быстро стартануть и показать, как она работает вживую.
Можно Docker compose с несколькими контейнерами, чтобы не в одном всё поднимать.
Ход проекта:
1. Создал файл - Dockerfile, который упаковывает в контейнер мое приложение.
2. Создал файл - docker-compose, который позволяет управлять запуском сразу нескольких контейнеров: с приложением и с БД.
3. Создал файл - Makefile, который описывает необходимые для разворачивания команды.
4. 3 файла в совокупности позволяют упаковать разработанное приложение и развернуть, используя docker-compose. При этом контейнер с БД идет первым и пока не будет развернут, не запускается второй с приложением (делаю healthcheck в docker-compose файле).
5. При первом запуске приложение запускает внутренний скрипт на генерацию треков.
#проект
День 24
Задание:
Сделать для наглядности, например, отчёт или что-то подобное, чтобы показывать на карте все треки по предприятию за сутки.
Ход проекта:
Попытался реализовать отчет по поездкам, чтобы они все на карте отображались, но знания JavaScript'а пока только на это хватило:
- добавил кнопку Daily Report, по которой менеджер видит одновременно все поездки за период (к сожалению, маркеры поисчезали, так и не получилось их красиво рисовать)
На будущее:
Изучить JS на уровне, на котором будет несложно красиво дооформить данную работу. И, конечно же, дооформить, чтобы проект выглядел красиво и его было не стыдно показать.
#проект
Задание:
Сделать для наглядности, например, отчёт или что-то подобное, чтобы показывать на карте все треки по предприятию за сутки.
Ход проекта:
Попытался реализовать отчет по поездкам, чтобы они все на карте отображались, но знания JavaScript'а пока только на это хватило:
- добавил кнопку Daily Report, по которой менеджер видит одновременно все поездки за период (к сожалению, маркеры поисчезали, так и не получилось их красиво рисовать)
На будущее:
Изучить JS на уровне, на котором будет несложно красиво дооформить данную работу. И, конечно же, дооформить, чтобы проект выглядел красиво и его было не стыдно показать.
#проект
День 25
Задание:
1. Зарегистрируйте телеграм-бота и отладьте его, чтобы он просто работал: отвечал эхом на введённую строку например.
2. Затем добавьте команду, например, /login, где задаётся логин-пароль (для менеджеров), после чего бот авторизует его и помнит, что такой-то юзер есть в системе.
3. Сделайте команды выдачи сводок (пробег) по конкретной машинке/предприятию за сутки и за месяц (как-то даты надо задавать, можно обычным текстовым форматом).
Ход проекта:
1. Зарегистрировал бота через BotFather
2. С помощью ChatGPT быстро накидал каркас отправки сообщения и его обработки
3. Добавил примитивную авторизацию, которая хранит логин-пароль в памяти во время работы бота
4. Добавил метод получения отчета - пришлось в приложение car-park добавить соответствующий ендпоинт (API) для взаимодействия с ботом
Улучшить:
Конечно, сейчас есть немало захардкоженных моментов в коде, которые стоит улучшить, но так как времени ни на что не хватает, то получился MVP, который можно улучшить в будущем.
#проект
Задание:
1. Зарегистрируйте телеграм-бота и отладьте его, чтобы он просто работал: отвечал эхом на введённую строку например.
2. Затем добавьте команду, например, /login, где задаётся логин-пароль (для менеджеров), после чего бот авторизует его и помнит, что такой-то юзер есть в системе.
3. Сделайте команды выдачи сводок (пробег) по конкретной машинке/предприятию за сутки и за месяц (как-то даты надо задавать, можно обычным текстовым форматом).
Ход проекта:
1. Зарегистрировал бота через BotFather
2. С помощью ChatGPT быстро накидал каркас отправки сообщения и его обработки
3. Добавил примитивную авторизацию, которая хранит логин-пароль в памяти во время работы бота
4. Добавил метод получения отчета - пришлось в приложение car-park добавить соответствующий ендпоинт (API) для взаимодействия с ботом
Улучшить:
Конечно, сейчас есть немало захардкоженных моментов в коде, которые стоит улучшить, но так как времени ни на что не хватает, то получился MVP, который можно улучшить в будущем.
#проект
Новиков > путь в Big Tech
Начал делать "дипломный" проект в ВШПСБ. Он идет бонусом к основному курсу, который прохожу по декларативной модели, и состоит из 25 заданий (основные боли в бэкенд разработке). Тема: автопарк, регистрация и учет автомобилей. Проект нужно успеть выполнить…
Завершил проект автопарка!
Разработка заняла ровно 3 месяца. Следует оговориться, что я не занимался этим каждый день, а совершал набеги каждые 2-3 дня продолжительностью несколько часов.
Очевидно, что у проекта есть недостатки и некоторые фичи сейчас там захардкожены для скорости разработки. Самое главное, что у меня есть понимание того что можно улучшить и как это правильно сделать.
Какой положительный эффект от реализации данного проекта я получил:
1. Осознал, насколько важно продумывать и документировать архитектуру до начала реализации проекта
2. В проекте нужно было работать с множеством ендпоинтов (их организации и роутинг) - сейчас у меня гораздо больше понимания как при работе с ними организовывать более чистый и поддерживаемый код
3. Значительно улучшил свои знания в JavaScript (+bootstrap), так как пришлось работать с OpenStreetMap и другими API
4. Наконец, решился пощупать chatGPT, который стал отличным консультантом в ходе реализации проекта
5. Научился работать с веб-фреймворком Gin
6. Улучшил навыки по работе с PostgreSQL и проектированию БД
7. Улучшил свою экспертизу в разработке веб-приложений: поддержка CSRF, запрос с авторизацией через CURL
8. Получил знания в области геотрекинга: увидел как это работает изнутри, какие вызовы обычно возникают и как с ними справляться
9. Попрактиковался в решении проблемы хранения и презентации данных в разных временных зонах (важная тема, нужно постоянно про это помнить)
10. Освоил контейнеризацию до уровня "Готов запаковать свой проект в Docker и написать Makefile вместе с docker-compose для удобного разворачивания своего приложения"
Проект планирую улучшать в свободное время, так как очень интересно создавать продукт с полного нуля. Часто, работая в IT-компании, программист занимается разработкой новых фичей и поддержкой старых, а создание чего-то нового - это прерогатива стартапов или избранных разработчиков в крупных компаниях. Поэтому, если вы раньше не разрабатывали ничего с нуля, то очень важно улучшать свою экспертизу в этом направлении, чтобы быть сильным специалистом, способным поставлять как новые фичи в существующий проект, так и писать проект с нуля.
Разработка заняла ровно 3 месяца. Следует оговориться, что я не занимался этим каждый день, а совершал набеги каждые 2-3 дня продолжительностью несколько часов.
Очевидно, что у проекта есть недостатки и некоторые фичи сейчас там захардкожены для скорости разработки. Самое главное, что у меня есть понимание того что можно улучшить и как это правильно сделать.
Какой положительный эффект от реализации данного проекта я получил:
1. Осознал, насколько важно продумывать и документировать архитектуру до начала реализации проекта
2. В проекте нужно было работать с множеством ендпоинтов (их организации и роутинг) - сейчас у меня гораздо больше понимания как при работе с ними организовывать более чистый и поддерживаемый код
3. Значительно улучшил свои знания в JavaScript (+bootstrap), так как пришлось работать с OpenStreetMap и другими API
4. Наконец, решился пощупать chatGPT, который стал отличным консультантом в ходе реализации проекта
5. Научился работать с веб-фреймворком Gin
6. Улучшил навыки по работе с PostgreSQL и проектированию БД
7. Улучшил свою экспертизу в разработке веб-приложений: поддержка CSRF, запрос с авторизацией через CURL
8. Получил знания в области геотрекинга: увидел как это работает изнутри, какие вызовы обычно возникают и как с ними справляться
9. Попрактиковался в решении проблемы хранения и презентации данных в разных временных зонах (важная тема, нужно постоянно про это помнить)
10. Освоил контейнеризацию до уровня "Готов запаковать свой проект в Docker и написать Makefile вместе с docker-compose для удобного разворачивания своего приложения"
Проект планирую улучшать в свободное время, так как очень интересно создавать продукт с полного нуля. Часто, работая в IT-компании, программист занимается разработкой новых фичей и поддержкой старых, а создание чего-то нового - это прерогатива стартапов или избранных разработчиков в крупных компаниях. Поэтому, если вы раньше не разрабатывали ничего с нуля, то очень важно улучшать свою экспертизу в этом направлении, чтобы быть сильным специалистом, способным поставлять как новые фичи в существующий проект, так и писать проект с нуля.
❤1
Август 2023:
✅ Закончил "дипломный проект" (см. пред. пост)
✅ Приступил к третьему курсу по парадигмам программирования (императивное программирование, а не ФП - как я раньше думал)
✅ Прочитал несколько глав из книги по Компьютерным сетям (по заданию от ментора)
✅ С ментором +- наладили регулярное взаимодействие: встречаемся 1 раз в 1-2 недели (сдал ему задание про балансировщик нагрузки и получил хороший фидбек)
✅ Заполнил матрицу компетенций, которая необходима для движения по карьерной лестнице, обсудил с тим-лидом, начинаю работать над слабыми местами (к счастью, их не очень много)
✅ Научился работать с beanstalkd очередями и добавил их поддержку в разрабатываемый на досуге проект (из функционала: чтение из нескольких очередей, обработка данных и отправка в другие очереди)
—
Планы на сентябрь:
🔖 Принять участие во внутреннем хакатоне с командой и показать достойный результат
🔖 Начать проводить технические собеседования в компании (необходимо для карьерного роста + улучшение собственных софт скиллов)
🔖 Выработать систему, по которой буду читать техническую литературу, делая упор, как на рабочий инструмент - Go, так и на более широкие области компьютерных наук
#результаты
✅ Закончил "дипломный проект" (см. пред. пост)
✅ Приступил к третьему курсу по парадигмам программирования (императивное программирование, а не ФП - как я раньше думал)
✅ Прочитал несколько глав из книги по Компьютерным сетям (по заданию от ментора)
✅ С ментором +- наладили регулярное взаимодействие: встречаемся 1 раз в 1-2 недели (сдал ему задание про балансировщик нагрузки и получил хороший фидбек)
✅ Заполнил матрицу компетенций, которая необходима для движения по карьерной лестнице, обсудил с тим-лидом, начинаю работать над слабыми местами (к счастью, их не очень много)
✅ Научился работать с beanstalkd очередями и добавил их поддержку в разрабатываемый на досуге проект (из функционала: чтение из нескольких очередей, обработка данных и отправка в другие очереди)
—
Планы на сентябрь:
🔖 Принять участие во внутреннем хакатоне с командой и показать достойный результат
🔖 Начать проводить технические собеседования в компании (необходимо для карьерного роста + улучшение собственных софт скиллов)
🔖 Выработать систему, по которой буду читать техническую литературу, делая упор, как на рабочий инструмент - Go, так и на более широкие области компьютерных наук
#результаты
Шахматы [1/2]
Увлечение шахматами отлично помогает разгружать голову и это кажется действительно полезным времяпрепровождением и хобби, так как тренирует ум.
Когда я пришел в Авито, то удивился, что в компании не было активного шахматного коммьюнити. Был чатик на 40 человек, в который изредка кто-то публиковал смешные картинки и на этом все.
Мне захотелось исправить эту несправедливость и я начал активно в это вкладываться своей энергией и временем.
Сейчас чатик из 40 человек увеличился до 240. В компании появились регулярные онлайн-занятия по шахматам с тренерами уровня КМС и это еще не все...
Увлечение шахматами отлично помогает разгружать голову и это кажется действительно полезным времяпрепровождением и хобби, так как тренирует ум.
Когда я пришел в Авито, то удивился, что в компании не было активного шахматного коммьюнити. Был чатик на 40 человек, в который изредка кто-то публиковал смешные картинки и на этом все.
Мне захотелось исправить эту несправедливость и я начал активно в это вкладываться своей энергией и временем.
Сейчас чатик из 40 человек увеличился до 240. В компании появились регулярные онлайн-занятия по шахматам с тренерами уровня КМС и это еще не все...
Шахматы [2/2]
Все это время я старался +- регулярно публиковать шахматные задачки, которые Личесс обновляет каждый день. Это занимало 2-3 минуты времени, но я понимал, что и это время можно сократить до нуля. И я написал небольшую программку, которой делегировал эту работу.
Теперь публикация очередного пазла у меня занимает менее 5 секунд, а в будущем я планирую сделать удобное расписание, по которому программа будет работать вообще без моего участия.
Мне очень нравится этот проект, потому что считаю что он реально полезен коллегам, отлично вписался в концепцию корпоративного чата по шахматам, а также его не стыдно показать на публике!
Разработка открытая, планирую по мере сил его развивать и сделать украшением моего портфеля проектов.
https://github.com/novikov-ai/chess-daily-puzzle
Все это время я старался +- регулярно публиковать шахматные задачки, которые Личесс обновляет каждый день. Это занимало 2-3 минуты времени, но я понимал, что и это время можно сократить до нуля. И я написал небольшую программку, которой делегировал эту работу.
Теперь публикация очередного пазла у меня занимает менее 5 секунд, а в будущем я планирую сделать удобное расписание, по которому программа будет работать вообще без моего участия.
Мне очень нравится этот проект, потому что считаю что он реально полезен коллегам, отлично вписался в концепцию корпоративного чата по шахматам, а также его не стыдно показать на публике!
Разработка открытая, планирую по мере сил его развивать и сделать украшением моего портфеля проектов.
https://github.com/novikov-ai/chess-daily-puzzle
❤1
Сентябрь 2023:
✅ Принял с командой участие во внутреннем хакатоне. Главный приз не взяли, но по голосованию зрителей вошли в топ 3
✅ Поучаствовал в роли наблюдателя на 2-х технических собеседованиях (еще несколько и начну сам проводить)
✅ Закончил фриланс-проект, которым занимался по вечерам (полезный опыт, но сложно совмещать с фул-таймом, поэтому важно не перегружать себя подобной доп. нагрузкой, а отдыхать в свободное время)
✅ Пробую читать тех. литературу по новой системе: +10мин. в день и заметка о том, что нового узнал (или о чем читал, если все уже известно)
✅ Написал пазл-бота, который публикует очередную задачку в канал Mattermost (в планах добавить к нему расписание и перевести на VPS-сервер)
—
Планы на октябрь:
🔖 Приступить к самостоятельному проведению собеседований
🔖 Прочитать более половины выбранной книги по специфике Go
🔖 Расширить сеть на линкедине на 15-20% (дойти до 450+ коннектов)
🔖 Нарисовать архитектуру для пазл-бота и подумать про деплой на VPS-сервер
#результаты
✅ Принял с командой участие во внутреннем хакатоне. Главный приз не взяли, но по голосованию зрителей вошли в топ 3
✅ Поучаствовал в роли наблюдателя на 2-х технических собеседованиях (еще несколько и начну сам проводить)
✅ Закончил фриланс-проект, которым занимался по вечерам (полезный опыт, но сложно совмещать с фул-таймом, поэтому важно не перегружать себя подобной доп. нагрузкой, а отдыхать в свободное время)
✅ Пробую читать тех. литературу по новой системе: +10мин. в день и заметка о том, что нового узнал (или о чем читал, если все уже известно)
✅ Написал пазл-бота, который публикует очередную задачку в канал Mattermost (в планах добавить к нему расписание и перевести на VPS-сервер)
—
Планы на октябрь:
🔖 Приступить к самостоятельному проведению собеседований
🔖 Прочитать более половины выбранной книги по специфике Go
🔖 Расширить сеть на линкедине на 15-20% (дойти до 450+ коннектов)
🔖 Нарисовать архитектуру для пазл-бота и подумать про деплой на VPS-сервер
#результаты
Telegram
Новиков > путь в Big Tech
Шахматы [2/2]
Все это время я старался +- регулярно публиковать шахматные задачки, которые Личесс обновляет каждый день. Это занимало 2-3 минуты времени, но я понимал, что и это время можно сократить до нуля. И я написал небольшую программку, которой делегировал…
Все это время я старался +- регулярно публиковать шахматные задачки, которые Личесс обновляет каждый день. Это занимало 2-3 минуты времени, но я понимал, что и это время можно сократить до нуля. И я написал небольшую программку, которой делегировал…
Pointer Receiver 🆚 Value Receiver
Вчера проводил техническое собеседование по платформе Go и во время решения кандидатом задачи задал дополнительный вопрос: в чем отличие между получателем указателя в методе (pointer receiver) от обычного (value receiver)?
Вопрос поставил в тупик…
Как писал Дейв Чейни (гуру по Go) существует 3 аксиомы касательно значений в языке:
1. Каждая переменная - это значение
2. Каждое присваивание - это копия
3. Каждый параметр и возвращаемое значение - копия
Все очень просто. Если есть необходимость изменять состояние передаваемого объекта (помним, что метод в Go - это синтаксический сахар над функцией, который передает ресивер первым аргументом в нее), то используем Pointer Receiver.
В общем случае, практичнее использовать именно Pointer Receiver: он универсальнее и гораздо эффективнее при работе с большими структурами.
Важно соблюдать единый стиль: если у вас один из методов принимает указатель, то и остальные также должны его принимать!
Попробовать можно здесь.
#go
Вчера проводил техническое собеседование по платформе Go и во время решения кандидатом задачи задал дополнительный вопрос: в чем отличие между получателем указателя в методе (pointer receiver) от обычного (value receiver)?
Вопрос поставил в тупик…
Как писал Дейв Чейни (гуру по Go) существует 3 аксиомы касательно значений в языке:
1. Каждая переменная - это значение
2. Каждое присваивание - это копия
3. Каждый параметр и возвращаемое значение - копия
Все очень просто. Если есть необходимость изменять состояние передаваемого объекта (помним, что метод в Go - это синтаксический сахар над функцией, который передает ресивер первым аргументом в нее), то используем Pointer Receiver.
В общем случае, практичнее использовать именно Pointer Receiver: он универсальнее и гораздо эффективнее при работе с большими структурами.
Важно соблюдать единый стиль: если у вас один из методов принимает указатель, то и остальные также должны его принимать!
Попробовать можно здесь.
#go
Ребрендинг.
В прошлую пятницу на работе посетил внутреннюю встречу посвященную развитию своего блога. Обсуждали позиционирование, целевую аудиторию и прочее.
Встреча заставила меня задуматься о том, для чего я пишу. 3 года назад, когда я только начинал, это было на 100% для себя. Невероятно интересно было рефлексировать и смотреть из будущего на свои посты из прошлого.
Сейчас я понимаю, что мой опыт может быть полезен кому-то еще, а для этого нужно постараться захватить читателя и больше внимания уделять форме и содержанию постов.
В первую очередь я хочу сделать канал более персонализированным, чтобы заслужить доверие, для этого меняю:
1) Название
2) Описание
3) Фото
До конца октября планирую еще поработать с закрепленными сообщениями, чтобы навигация по каналу была более дружелюбная и у потенциального читателя сразу могло формироваться представление о том, что он может здесь увидеть и какой экспертизой обладает автор.
Встреча заставила меня задуматься о том, для чего я пишу. 3 года назад, когда я только начинал, это было на 100% для себя. Невероятно интересно было рефлексировать и смотреть из будущего на свои посты из прошлого.
Сейчас я понимаю, что мой опыт может быть полезен кому-то еще, а для этого нужно постараться захватить читателя и больше внимания уделять форме и содержанию постов.
В первую очередь я хочу сделать канал более персонализированным, чтобы заслужить доверие, для этого меняю:
1) Название
2) Описание
3) Фото
До конца октября планирую еще поработать с закрепленными сообщениями, чтобы навигация по каналу была более дружелюбная и у потенциального читателя сразу могло формироваться представление о том, что он может здесь увидеть и какой экспертизой обладает автор.
👍3🔥2
Chess Daily Puzzle v1.0.4 !
Завершил написание небольшого проекта по публикации шахматных задачек в корпоративный канал.
Основным вызовом стал деплой на удаленный сервер (VPS). Я постоянно откладывал эту задачу, так как не понимал как это сделать лучшим образом. Сперва был убежден, что все должно быть в контейнере: заворачивал проект в докер, писал докеркомпоз для удобного деплоя...
Долгое время у меня был только проект на Go и как его результат - выполняемый файл, который я запускал каждые 2 дня вручную через консоль. Процесс занимал примерно 1 секунду времени, но это все равно было не удобно, так как нужно было про это помнить.
Когда я решил все-таки нарисовать архитектуру проекта, то все разрешилось само-собой. Я, наконец, понял, что докер для моего проекта - это какой-то оверинжениринг и не нужно делать сложно там, где все просто.
Сейчас на VPS-сервере настроен простой крон - демон, который по определенным дням запускает исполняемый файлик, рядом с которым хранит логи о выполнении программы.
Завершил написание небольшого проекта по публикации шахматных задачек в корпоративный канал.
Основным вызовом стал деплой на удаленный сервер (VPS). Я постоянно откладывал эту задачу, так как не понимал как это сделать лучшим образом. Сперва был убежден, что все должно быть в контейнере: заворачивал проект в докер, писал докеркомпоз для удобного деплоя...
Долгое время у меня был только проект на Go и как его результат - выполняемый файл, который я запускал каждые 2 дня вручную через консоль. Процесс занимал примерно 1 секунду времени, но это все равно было не удобно, так как нужно было про это помнить.
Когда я решил все-таки нарисовать архитектуру проекта, то все разрешилось само-собой. Я, наконец, понял, что докер для моего проекта - это какой-то оверинжениринг и не нужно делать сложно там, где все просто.
Сейчас на VPS-сервере настроен простой крон - демон, который по определенным дням запускает исполняемый файлик, рядом с которым хранит логи о выполнении программы.
Октябрь 2023:
📌 Крайне продуктивный месяц получился. Неожиданно для себя удалось перейти на следующий грейд и тем самым досрочно выполнить основную годовую цель!
✅ 🏆 E3 -> E4
✅ Самостоятельно провел 2 собеседования (скоринг) и 5 - в качестве второго интервьюера (скоринг + платформа). Как проходит отбор инженеров в Авито можно прочитать здесь
✅ Расширил линкедин до 454 коннекта (цель 500, до конца года думаю закрыть)
✅ Нарисовал архитектуру для пазл-бота и развернул его на VPS-сервере
✅ Помог команде Tech PR со съемками ролика к неделе бэкенда на Хабре ;)
✅ Прочитал более половины книги “Get Programming with Go”. Наверное, лучше сказать просканировал, так как 99% информации было знакомо и пропускал блоки с заданиями, которых очень много. Крайне рекомендую эту книгу тем, кто только осваивает Go. Обязательно выполнять все задания и выкладывать себе на гитхаб. Для более опытных читателей книга будет скучновата.
✅ Начал решать литкод в конце месяца, чтобы не терять навык. +1 решенная задача в копилку
✅ Завершил курс по императивной модели программирования (ВШПСБ)
✅ Провел ребрендинг канала
—
Планы на ноябрь:
🔖 Пройти корпоративный тренажер по информационной безопасности на языке Go
🔖 Завершить более половины курса по Объектной модели (ВШПСБ)
🔖 Решить 12 задачек на литкоде
🔖 Дочитать текущую книгу по Go и возобновить прочтение книги Криса Ричардсона «Микросервисы»
🔖 Вдумчиво изучать материалы из email-рассылки HighLoad++ Junior (делать заметки)
🔖 Принять участие в Highload++. Цели: нетворкинг, заряд мотивацией и новые знания / опыт.
#результаты
📌 Крайне продуктивный месяц получился. Неожиданно для себя удалось перейти на следующий грейд и тем самым досрочно выполнить основную годовую цель!
✅ 🏆 E3 -> E4
✅ Самостоятельно провел 2 собеседования (скоринг) и 5 - в качестве второго интервьюера (скоринг + платформа). Как проходит отбор инженеров в Авито можно прочитать здесь
✅ Расширил линкедин до 454 коннекта (цель 500, до конца года думаю закрыть)
✅ Нарисовал архитектуру для пазл-бота и развернул его на VPS-сервере
✅ Помог команде Tech PR со съемками ролика к неделе бэкенда на Хабре ;)
✅ Прочитал более половины книги “Get Programming with Go”. Наверное, лучше сказать просканировал, так как 99% информации было знакомо и пропускал блоки с заданиями, которых очень много. Крайне рекомендую эту книгу тем, кто только осваивает Go. Обязательно выполнять все задания и выкладывать себе на гитхаб. Для более опытных читателей книга будет скучновата.
✅ Начал решать литкод в конце месяца, чтобы не терять навык. +1 решенная задача в копилку
✅ Завершил курс по императивной модели программирования (ВШПСБ)
✅ Провел ребрендинг канала
—
Планы на ноябрь:
🔖 Пройти корпоративный тренажер по информационной безопасности на языке Go
🔖 Завершить более половины курса по Объектной модели (ВШПСБ)
🔖 Решить 12 задачек на литкоде
🔖 Дочитать текущую книгу по Go и возобновить прочтение книги Криса Ричардсона «Микросервисы»
🔖 Вдумчиво изучать материалы из email-рассылки HighLoad++ Junior (делать заметки)
🔖 Принять участие в Highload++. Цели: нетворкинг, заряд мотивацией и новые знания / опыт.
#результаты
🔥2👍1
13-19 ноября Хабр проводит неделю бэкенда
И мне удалось поучастовать в ней как спикер от Авито, записав питч.
За 3 минуты я постарался рассказать все то, чем занимается продуктовый бэкенд инженер в компании.
Интересно, что даже среди разработчиков одного направления, например, бэкенд - есть своя специфика.
Продуктовый разработчик сильно отличается от системного или от разработчика инфраструктуры, поэтому на это также важно обращать внимание при поиске работы.
Лично я раньше про это совершенно не задумывался. Многие не задумываются также и злятся, когда их резюме без опыта не просматривают несмотря на то, что они контрибьютят в опенсорс с 5 лет. Но именно этим и обусловлен пресловутый "коммерческий опыт от года", про который пишут в вакансиях.
В продуктовой команде со временем начинаешь абстрагироваться от непосредственной разработки и начинаешь думать про TTM и метрики AB-тестов.
О продуктовой специфике, с которой сталкивается разработчик, обязательно буду писать.
И мне удалось поучастовать в ней как спикер от Авито, записав питч.
За 3 минуты я постарался рассказать все то, чем занимается продуктовый бэкенд инженер в компании.
Интересно, что даже среди разработчиков одного направления, например, бэкенд - есть своя специфика.
Продуктовый разработчик сильно отличается от системного или от разработчика инфраструктуры, поэтому на это также важно обращать внимание при поиске работы.
Лично я раньше про это совершенно не задумывался. Многие не задумываются также и злятся, когда их резюме без опыта не просматривают несмотря на то, что они контрибьютят в опенсорс с 5 лет. Но именно этим и обусловлен пресловутый "коммерческий опыт от года", про который пишут в вакансиях.
В продуктовой команде со временем начинаешь абстрагироваться от непосредственной разработки и начинаешь думать про TTM и метрики AB-тестов.
О продуктовой специфике, с которой сталкивается разработчик, обязательно буду писать.
👍2