dd

Рубрика: Разработка

  • Хорошие новости!

    Меня сократили🥲

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

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

    Ждите очередных постов про собесы и экстренное трудоустройство, будет весело (надеюсь) 😃

  • Домашний сервер и свой сайт

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

    Кстати, я наконец-то обзавелся собственным сайтом — ddruganov.ru
    Пока не придумал зачем он мне, но просто весело пока скидывать друзьям эту ссылку, а там… ну, сами посмотрите)

  • Как-то все слишком просто

    Чем больше вожусь с raspberry pi, тем больше понимаю, что весь процесс разворачивания базовой инфраструктуры все больше аналогичен простому запуску exe-файла инсталлятора на винде. Да, есть нюансы вроде настройки реверс прокси и прокидывания портов, но в целом ситуация следующая:
    — Надо мониторинг? Вот тебе docker-compose файл графаны с прометеусом
    — Надо гитлаб? Вот тебе docker-compose файл, запускай и поехали

    Даже направление домена на статический айпи с последующим прокидыванием всех запросов на одну машину внутри локальной сети сводиться к паре кликов в гуях доменного регистратора и самого роутера

    Дальше у меня по плану развернуть на малине раннеры для ci/cd, но я это уже делал на других машинах и процесс по факту сводится к запуску одной команды

    Очень смешанные чувства по этому поводу: с одной стороны — круто, что можно просто так вот взять и поднять дома полноценную инфраструктуру и поизучать что к чему, а с другой стороны — это сильно снижает порог входа и то, что 5 лет назад считалось продвинутым использованием теперь считается базой

  • Продолжаем веселье

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

    Вот только почему-то пока этим занимался, малина перестала пинговаться через dd-rpi.local. Не понос, так золотуха)

  • Ни минуты покоя

    Купил себе еще на новый год Raspberry Pi 5, но пришла только на днях
    Сел разбираться как ее теперь включить, не имея ни монитора, на клавиатуры, ни мыши — максимальный headless
    Казалось бы, ну это же RPI, самый известный и раскрученный одноплатник. Там все должно работать просто по щелчку пальца и вообще без боли, но нет :)))

    Я два часа провел, пытаясь бутнуть ее с внешнего ссд. Вроде бы образ прожег, креды для wifi и ssh в конфиге верные, подключаю к питанию — горит зеленым и моргает; даже пингуется!*
    На форумах прочитал, что первый раз она грузится долго, подождал минут 15 — без успеха
    Залез даже на морду роутера, чтобы смотреть кто сейчас подключен к wifi, но малины там не было

    В итоге оказалось, что малина сначала горит красным, потом моргает один раз долго и один раз коротко. Что это значит? Правильно! Мой блок питания по ее мнению — говно. Ей подавай только заморский за 2к + доcтавка + налоги + на пиво.
    Что еще интереснее так это то, что где-то в недрах потного форума обладателей малинок есть тред в котором говорится, что там где-то в неведомых краях в мануале черным по белому написано, что если блок питания не родной, то надо после сигнала малины прожать кнопку питания и все заведется.

    И ведь завелось! Теперь дело за малым — сделать как-то ее видимой из внешней сети, настроить реверс-прокси и начать пилить потихоньку пет-проекты 🙂

    * на самом деле, при прожиге образа я указал имя малины как ddruganov — ровно такое же, как и у компа, с которого пытался тыкаться по ssh; счастливо делая ping ddruganov.local я видел, что малина пингуется, а вот ssh почему-то не работает, не открыт 22 порт; ответ простой — я пинговал сам себя, думая что пингую малину; стоило пережечь образ и указать ей имя как dd-rpi, как она сразу же перестала пинговаться 😀

  • Сегодня я узнал

    … что при поимке исключения сливать в логи getTraceAsString() это далеко не самое лучшее, что можно сделать

    Оказывается, если забрать трейс из исключения через getTrace(), то там будет описан весь стек вызовов методов, но при этом там будут еще и все аргументы, передаваемые в эти методы

    Это сумасшедше облегчает дебаг исключений, потому что не нужно выдумывать какие же там данные пришли, можно просто сразу идти и воспроизводить ошибку

  • Магия сиквела

    Или "почему я раньше об этом не знал?"

    У всех у нас есть грешок иногда хранить в базе массив данных в виде json и проект на подработке не стал исключением

    Сегодня потребовалось найти такие строки в таблице, среди которых есть совпадение с элементами массива
    Например, есть строка адреса с названием "Ленина" и массивом домов [1, 12, 123]
    На входе принимаем "12" в качестве поиска и должны выдать "Ленина, 12" и "Ленина, 123"

    Можно конечно сделать like на строковом представлении json'а, но мы тогда получим всю строку и придется в коде вручную выбирать подходящие значения

    Но я обнаружил очень интересную конструкцию в потсгре — lateral, и запрос стал выглядеть так:
    select street_name,
    house_number::int
    from address,
    lateral jsonb_array_elements_text(house_numbers) as house_number
    where street_name = 'Ленина'
    and house_number like '12'
    По факту мы получаем какое-то виртуальное представление, где каждая строка с адресом разрослась столькими копиями, сколько есть вхождений в массивах и каждое это значение можно вытянуть, обратившись к house_number
    На выходе естественно имеем две записи, как и требовалось!

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

  • Пакетные менеджеры и их приколы

    Речь пойдет об устаревшей тулзе, во второй версии которой надеюсь такое поправили

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

    Ну раз при общей сборке не поставился, значит надо ставить в частном порядке.
    Однако, при запуске команды получаем fatal error о превышении использования памяти.
    Поднимаем до двух гигов — ситуация повторяется. Чисто для прикола пробуем 4 и все завелось!

    В логах операций обнаруживаем удивительно смешную запись: As there is no 'unzip' command installed zip files are being unpacked using the PHP zip extension.
    СУКА!
    Кто тебе мешал сказать мне, что тебе пакеты распаковывать нечем?
    Зачем насиловать мне мозг и оперативу?
    Зачем вообще для этого использовать пхп в качестве фолбэка???

    Ну да ладно, и не с таким жили. После кружечки кофе отпустило, идем дальше работать🌝

  • Говно с дымом!

    Первый год, когда сложно подвести итоги, потому что дома просто атас
    У нас по факту с новым годом празднуется и новоселье, поэтому толпа родственников с радостным гулом сейчас играет в мафию, я естественно с ними)
    Кратко итоги года:
    1. Вас стало 37, это +25 с прошлого нового года🥳
    2. Поменял 2 работы, щас наконец-то прям всем доволен🥳
    3. Переехал 🥳
    За год чисто по техническим моментам была куча изменений и новшеств, поэтому сложно все упомнить
    Я каждый год думаю, что стал умнее, но в конце года каждый раз осознаю как был глуп; звучит грустно, но я этому рад😃
    Всех с новым годом! Спасибо, что остаетесь со мной и читаете! В новом году желаю сумасшедшего роста всем, как карьерного, так и личностного!❤️

  • Очередная статья против микросервисов

    К сожалению, пока не за моим авторством

    https://habr.com/ru/articles/779362/

    Почему-то с каждым разом как про них заходит разговор, мне все меньше хочется с ними работать. Звучит как дроч и решение зачастую несуществующих проблем
    Хотя нет, работать с ними хочется — обычно там платят много😃