<rmcreative>

RSS
  1. Видео с митапа по тестированию приложений

    4 августа 2021

    Новая для меня тема выступления, "Тестирование приложений". Запись сделана на мипапе компании ЭФКО в Воронеже.

    Посмотреть на YouTube

    Комментировать
  2. Присоединился к GetMentor

    2 августа 2021

    Совсем недавно Георгий Могелашвил запустил интересный проект, GetMentor. Это открытое сообщество IT-наставников, готовых делиться знаниями и опытом.

    Мне менторы попадались, в основном, внутри проектов, в которых я работал и они прямо сильно помогли, срезав время на формирование моих принципов и подходов примерно вполовину. В общем, затея важная и нужная, поэтому присоединился.

    Оставить заявку можно на специальной странице

    // Да, знаю что ценник не совсем гумманный вышел, но по-другому пока никак. Почти всё доступное время занял Yii 3, который я очень и очень хочу выпустить.

    5 комментариев
  3. Yii 3: пред-релизная поддержка компаний

    29 июля 2021

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

    Если хотите для своей компании такой чат — пишите в Telegram @samdark, добавим.

    2 комментария
  4. Границы применимости статического анализа в публичных пакетах

    16 июня 2021

    В замечательном чате Валентина Удальцова «Пыхтелка» заметили релиз одной из библиотек Yii 3, Rate limiter и предложили вполне справедливые улучшения. kafkiansky сделал pull request, в который кроме, собственно, улучшений попало одно очень интересное изменение: вместо геттеров-сеттеров сделать свойства класса CounterState публичными и добавить на класс аннотацию @psalm-immutable:

    /**
     * @psalm-immutable
     */
    final class CounterState
    {
        public int $limit;
        public int $remaining;
        public int $resetTime;
        public bool $isLimitReached;

    Почему так:

    1. Используется статический анализ через Psalm.
    2. @psalm-immutable не даст присваивать что-либо этим свойствам, если его добавить в continuous integration.
    3. В будущем легче будет мигрировать на read only properties.
    4. Никакой логики здесь нет, это plain object. С аннотациями меньше кода.

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

    1. Мы не контролируем то, как пакет используется.
    2. Мы не можем гарантировать, что будет использоваться именно Psalm, что он будет запускаться в процессе CI, что вообще будет использоваться хоть какой-то статический анализ.

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

    2 комментария
  5. Приготовили PHP Russia 2021

    4 июня 2021

    Фактически завершили формирование программы и большую часть подготовки. Ещё работаем с докладчиками утрясаем отдельные моменты, но основное сделано. Должно получиться как минимум не хуже 2019-го. Может и лучше.

    Немного мыслей на тему:

    1. Несколько переносов прямо сильно ударили по моральному духу всех причастных. Тут уж ничего не поделать... корона, но я не думал что будет настолько деморализовывать.
    2. Делать конференцию в постоянно меняющихся условиях в разы сложнее: нужны резервные докладчики, есть множество ограничений по площадке, границам и так далее.
    3. Ограничения - это хорошо. Придумали много всего такого, о чём в нормальных условиях не додумались бы.
    4. Русскоязычные докладчики хороши. Да, англоязычные специалисты в 2019-ом привезли крутой контент, но смотрю на текущую программу и понимаю что точно не хуже.
    5. Нужно больше общаться с командой организаторов, докладчиками и потенциальными докладчиками. И темы внезапно оказывается крутые есть, и идеи возникают замечательные и проблемы решаются иногда сами собой. Этот пункт справедлив, в общем-то, для любой командной работы.
    6. Очень многие не спрашивают своих работодателей на тему купить билет на конференцию и зря. Большинство работодателей с радостью это сделают: тут и мотивация и сотрудник с новыми идеями и про компанию, вероятно, услышат.

    Приходите, будет хорошо!

    Комментировать
  6. Делаем приятно в консоли при помощи Starship

    12 мая 2021

    Попробовал Starship, кросс-платформенное приглашение командной строки, написанное на Rust. Подходит к любому шеллу, в том числе к bash или Powershell под Windows.

    Отлично настраивается. Из коробки показывает текущего юзера, ветку git, используемую версию того же PHP, всякое про Docker и так далее. Причём всё в зависимости от контекста текущей директории, то есть это не выглядит как бесполезный космолёт.

    Ставится удивительно легко.

    Пробуем

    1 комментарий
  7. Запоминаем пароли к ssh-ключам в ssh-agent

    12 мая 2021

    Вводить пароли к ssh-ключам того же git каждый раз немного достаёт и неплохо было бы чтобы оно как-то само. Делается при помощи ssh-agent. Примерно так же делается и на Linux-ах и на маке и в Windows с git-bash.

    1. Добавляем запуск ssh-agent (смотрите ниже) в .bash_profile. Скрипт обычно лежит в домашней директории пользователя. В Windows это c:\Users\username.
    2. Идём в конфиг OpenSSH, обычно это .ssh/config в домашней директории пользователя. Если запоминать надо пароли ко всем ключам, добавляем туда AddKeysToAgent yes первой строкой. Если к отдельным, добавляем в конфиги самих ключей.
    3. Открываем новую консоль. Делаем какое-то действие с запросом пароля, вводим пароль.
    4. Всё, пароль запомнен, больше спрашивать не будет.

    Скрипт для запуска ssh agent:

    # start SSH agent
    SSH_ENV=$HOME/.ssh/environment
     
    function start_agent {
         echo "Initializing new SSH agent..."
         /usr/bin/ssh-agent | sed 's/^echo/#echo/' > ${SSH_ENV}
         echo succeeded
         chmod 600 ${SSH_ENV}
         . ${SSH_ENV} > /dev/null
         /usr/bin/ssh-add;
    }
     
    # Source SSH settings, if applicable
     
    if [ -f "${SSH_ENV}" ]; then
         . ${SSH_ENV} > /dev/null
         #ps ${SSH_AGENT_PID} doesn't work under cywgin
         ps -efp ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
             start_agent;
         }
    else
         start_agent;
    fi
    5 комментариев
  8. Новости Yii 2021, выпуск 2

    9 мая 2021

    Написал второй выпуск новостей Yii. Есть новости по важным обновлениям Yii 3 и набор релизов Yii 2. Также упомянем некоторые интересные проекты, не связанные напрямую с кодом.

    Читаем на хабре

    Комментировать
  9. Про OpenSource в подкасте "Между Скобок"

    26 апреля 2021

    Обсудили с Сергеем Жуком «кровавый open source»:

    • Почему много хейта?
    • Что представляет собой разработка open source проекта?
    • Есть ли вообще смысл идти в open source?

    Слушаем

    2 комментария
  10. Разрешить Synology Docker ходить в интернет

    19 апреля 2021

    Если у вас нормально настроен firewall, то есть последним правилом запрещено всё, то Docker-контейнеры по умолчанию не смогут ходить в интернет.

    Чтобы исправить нужно это явно разрешить подсети Docker.

    Идём в Docker -> Network. Раскрываем Bridge и видим подсеть. Например, 172.17.0.0/16. Сразу считаем маску подсети. Получается 255.255.0.0.

    Идём в Control Panel -> Security -> Firewall -> Edit Rules. Добавляем новое правило:

    • Ports: All
    • Source IP: Specific IP
      • Subnet
      • IP address: 172.17.0.0
      • Subnet mask: 255.255.0.0
    • Action: Allow

    Правило ставим выше общего запрещающего. Теперь Docker сможет ходить в интернет.

    Комментировать