Сообщество - Лига программистов

Лига программистов

2 337 постов 11 976 подписчиков

Популярные теги в сообществе:

0

Продолжение поста «Как написать DNS прокси для себя и настраивать через REST API»3

Серия Программирование

Очередное обновление сервиса DNSO v0.2.0. Для тех кто еще не знаком - это сервис для удобного управления DNS зонами и записями в локальных вычислительных сетях с удобным web интерфейсом.

Новое обновление добавляет метрики в приложение. Теперь можно к контейнеру подключить prometheus и собирать метрики, отслеживать стандартные go-метрики, некоторые кастомные метрики для понимания куда и откуда идет трафик (upstream-exchanges, localZone и т.п.)

Что нового

  • Локальные зоны кэшируются в DNS и поиск локальных производится по локальному кэшу вместо поиска в базе данных

  • Заменены все логи на структурированные

  • Добавлены метрики в кэш, upstream excanger и REST API

  • Логирование переведено на slog

  • Добавлен Prometheus в docker-compose (для разработки)

  • Конфигурация вынесена в отдельный пакет

  • Добавлен porometheus scrap метод (по умолчанию порт 3010, GET /metrics)

Что планируется

  • Работа с метриками была в новинку, поэтому будет произведена работа по устранению избыточности некоторых метрик

  • В конфигах заранее будут добавлены примеры дашбордов

  • Небольшой рефакторинг хэндлеров DNS

  • Будет вестись подготовка к рефакторингу (планируется разбить обработчик на 3 слоя выдачи: локальные, кэш, апстрим)

Информация

Github репозиторий: https://github.com/vesh95/dnso

DockerHub: https://hub.docker.com/repository/docker/vesh95/dnso/general

Просто подборка саунда, который вдохновлял все это время: https://music.yandex.ru/playlists/a3aa20b0-8d3a-4772-b883-96...

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

Полгода войны с сервисами, которые откликаются на вакансии за тебя

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

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

Долго так не живут. Я пошёл искать, чем это автоматизировать.

Что нашлось

Расширения и сервисы, которые делают ровно это: проходят по списку вакансий и жмут кнопку за тебя.

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

Схема была примерно такая. Находишь работающее расширение. Радуешься неделю. Потом площадка что-то меняет у себя, расширение ломается. Идёшь искать новое.

Как они умирали

По-разному.

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

Другие внезапно становились платными. Работало бесплатно, потом появлялся экран с тарифами.

Платными я не пользовался потому что каждый раз появлялась новая бесплатная альтернатива. Смысл платить за то, что сломается через две недели.

Третьи начинали откликаться криво: пропускали вакансии, дублировали отклики, отправляли не туда.

Момент, когда отвалилось всё

Отдельная история. В какой-то момент апи отключились у всех сервисов.

Разработчикам этих штук понадобилось заметное время, чтобы придумать обход. Всё это время люди, которые на них полагались, снова сидели и жали кнопку руками.

Зачем вообще нужен был такой объём

Потому что маленькие числа ничего не говорят.

Двадцать откликов это не статистика. Ты отправил двадцать, получил ноль ответов и не понимаешь: у тебя плохое резюме, или просто не повезло, или вакансии мёртвые.

Двести откликов в день дают понятную картину за неделю. Видно конверсию. Видно, зовут тебя вообще или нет.

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

Что я на этом понял про рынок

Половина процесса поиска работы устроена как борьба автоматики с автоматикой.

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

Живые люди подключаются где-то в середине, когда обе автоматики уже отработали.

Отдельно доставляют мёртвые вакансии. Висят месяцами, никто по ним не отвечает. Они существуют для отчётности, чтобы наверху видели, что найм идёт.

Ты откликаешься в пустоту и делаешь вывод, что не подходишь. А там просто никого нет.

Пользовались автооткликами?

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

Мне дали задачу написать программу через ООП. За полсотни собеседований её спросили дважды

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

Условие было не просто написать, а написать правильно. Через декомпозицию и с применением принципов объектно-ориентированного программирования.

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

Как это шло

Тяжело.

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

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

Я был рад, когда всё сошлось.

Потом начались собеседования

Больше пятидесяти технических интервью, коротких разговоров с кадровиками сюда не включаю.

Про ООП спросили дважды. Один раз попросили назвать принципы: наследование, полиморфизм и что-то ещё третье. Я назвал.

Всё. Больше ничего.

Писать программу с классами в прямом эфире меня не просили ни разу. Разбирать чужую архитектуру не просили. Углубляться в тему после того, как я перечислил принципы, не стали.

На работе тоже пока не пригодилось

Работаю с данными. Пишу запросы к базам, собираю отчётность, автоматизирую расчёты, поднимаю дашборды.

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

Возможно, в другой команде или на другой позиции было бы иначе. У меня вышло так.

Что реально спрашивали вместо этого

Оконные функции в SQL. Почти на каждом интервью. Это то, на что у меня в обучении ушло несравнимо меньше времени, чем на ту программу с уравнением.

Метрики. Расспросы про опыт работы, долгие и дотошные. Задачи на SQL прямо во время разговора.

И статистика с A/B-тестами, которую я как раз не успел выучить и на которой регулярно сыпался.

Ощущение

С одной стороны Это потраченные дни. С другой, я не могу сказать, что задача была бесполезной.

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

У вас было такое: убил кучу времени на тему, а она потом ни разу не всплыла? Что это было?

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

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

Тогда я решил, что буду учить C#. Причина была самая обычная: у меня друг был знаком шарпистом, а мне хотелось уметь делать как он.

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

Потом пришли циклы. С одним циклом я справился кое-как. Считать от одного до десяти, выводить на экран, увеличивать счётчик, всё понятно.

А потом в метаните оказался цикл внутри цикла.

Что там происходило

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

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

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

Я сидел над одной задачей часами...

Учебник закрылся. Ноутбук закрылся. Тема закрылась примерно на несколько лет.

Забавно, что никакого драматического момента отказа не было. Я просто однажды не открыл его снова. Потом ещё раз не открыл. Потом перестал вспоминать.

Что было дальше

Вернулся я в тему совсем с другой стороны. Не через программирование, а через данные. Аналитика, SQL, Python для обработки таблиц.

И вот там вложенные циклы мне встретились опять. Только теперь у меня был человек, который меня вёл, и работали другие правила.

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

А вы на чём сдавались?

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

Я так и не выучил АБ-тесты. И всё равно получил оффер аналитиком

Есть тема, на которой я сыпался чаще всего. АБ-тесты.

Со стороны выглядит просто. Делим пользователей на две группы, одной показываем старое, другой новое, смотрим, где метрика выше.

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

Что я делал, чтобы это закрыть

Прошёл несколько курсов по статистике. Прочитал книгу. Пересмотрел кучу видео. Изучил методички, которые мне достались. Несколько раз рассказывал про статистику и АБ прямо на собеседованиях.

И честно: этот раздел до сих пор для меня тяжёлый.

Главная причина, по-моему, вот в чём: когда я начал ходить на собесы, я к статистике ещё даже не приступал. Я закрывал дыру уже в бою, между интервью. Так тему не осваивают.

Почему оффер всё-таки дали

На собеседованиях у меня спрашивали SQL, и вот тут я был готов. Оконные функции гоняют почти везде, и это самое выгодное вложение времени из всего, что я делал. Спрашивали Python: несложные вещи, простые алгоритмы, работа с данными. Спрашивали метрики: DAU, MAU, LTV, GMV, как считается, как ими объяснить бизнесу, что происходит. Спрашивали про мой опыт, долго и дотошно. Спрашивали софт-вопросы вроде «как вы решаете конфликты в команде».

Провалить один блок из шести не значит провалить собеседование. Это потерять несколько баллов. Я терял их системно, на одном и том же месте, и всё равно доехал.

Что я понял про дыры в знаниях

Первое. Дыра, о которой вы знаете, гораздо безопаснее дыры, о которой вы не знаете.

Второе. Список тем в аналитике бесконечный. Если ждать полной готовности, вы не выйдете на рынок никогда.

Третье. Тем не менее, дыру надо закрывать. Я до сих пор к статистике возвращаюсь. Просто теперь у меня есть деньги, пока я это делаю, а не тревога и пустой счёт.

Если вы сейчас учитесь

Порядок, который я бы выбрал, зная то, что знаю сейчас: SQL до уверенного уровня, включая оконные функции. Потом Python в объёме, достаточном для работы с данными и простых алгоритмов. Потом метрики и умение про них говорить человеческим языком. И статистика.

Именно статистику я и отложил. Это стоило мне лишних собеседований. Не критично, но обидно.

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

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

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

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

Ребятки, вы узнаете свою форму, вангую. Это не оч в 26м (доже в 10м это был зашквар)


(автор может ошибаться, это лишь имхо, бла-бла)

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

Помощь в программировании

Помогите пожалуйста 🥺

Нужно соединить два простых кода в один

1 код кнопки тригера

2 код управление двигателем.

Имею Digispark ATtiny85 в нем 0 и 1 пин идут на драйвер двигателя DRV8833. Пин 2 на кнопку и на землю.

Задача по нажатию кнопки запустить двигатель на 10 секунд в одну сторону, потом пауза 3 секунды и снова запуск двигателя в обратную сторону на 10 секунд. И так повтор до тех пор пока не нажмется кнопка. ( двигатель запускается в одно направление путем подачи сигналов low и high соответственно пинам 0 и 1, а в обратную high и low соответственно пинам 0 и 1. Остановка двигателя это low и low на пинах 0 и 1.

Не понимаю как именно сделать цикл при включении. С помощью while или loops. Помогите пожалуйста. Я только учусь.

Учился по четыре часа в день по помодоро. Через две недели выгорел и уехал в деревню

Сначала всё было нормально. Я учился, когда было время и когда было желание. Разбирал материалы, делал задачи, обсуждал их на созвонах. Мне нравилось.

Потом розовые очки разбились. Материал оказался в разы плотнее и сложнее, чем я рассчитывал. SQL я до этого не трогал вообще — как-то обходился без него. А тут надо самому придумать, как на этом языке написать запрос, чтобы получить то, что нужно. Мотивация просела.

Решение приняли простое: раз само не идёт, будем по часам. Четыре часа в день. Помодоро. Только SQL, потому что именно на нём я застрял.

Как это выглядело

Двадцать пять минут решаешь, пять минут перерыв. Четыре цикла подряд, потом длинный перерыв где-то на полчаса. И заново.

Я честно жал паузу, если отвлекался, поэтому реально выходило часа три с половиной чистого времени. Каждый день. Без выходных, потому что какие выходные, я же вкатываюсь.

Задач я за эти две недели прорешал очень много. По количеству — лучший период за всё обучение. По ощущениям — худший.

Что сломалось

К концу второй недели я поймал состояние, когда ты садишься за ноутбук и физически не можешь открыть тренажёр. Не «лень». Просто не открывается.

Больше двух недель я по этой технике не протянул. И у меня нет ощущения, что я слабак. У меня есть ощущение, что четыре часа концентрированного SQL каждый день без единого дня передышки — это перебор для человека, который параллельно ещё живёт свою обычную жизнь.

Деревня

Я собрал вещи и уехал в деревню.

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

Вот из этой мысли я и пошёл на первые собеседования. Прямо оттуда, из деревни, с рвущимся интернетом. Часть собесов слетала. Первые три я провалил так, что даже не понял, о чём меня спрашивали.

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

Вывод, который я для себя сделал

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

Основную часть обучения я прошёл в другом режиме: когда было время и когда было желание. И знаете, суммарно я не медленнее двигался. Просто без вот этого «сегодня я ненавижу базы данных».

Я это называю «жить в радость». Звучит как цитата с открытки, но смысл простой: если ты каждый день насилуешь себя ради цели, до цели ты доедешь пустым. А в IT после оффера начинается работа, а не финиш.

Что бы я посоветовал

Не ставьте себе четыре часа в день с первого дня. Начните с двух. Оставьте один день в неделю полностью пустым — не «догоню задолженность», а пустым. И заранее решите, при каких признаках вы жмёте стоп: у меня признаком стало то, что я перестал открывать ноутбук.

И да, если чувствуете, что горите — иногда правильный ход не «поднажать», а поехать в деревню и топить баню. У меня сработало.


А вы как учитесь — по часам или по настроению? И что делали, когда упирались в стену?

Показать полностью
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества