<rmcreative>

RSS
  1. Делаем приятно в консли при помощи Starship

    12 мая

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

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

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

    Пробуем

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

    12 мая

    Вводить пароли к 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 комментариев
  3. Новости Yii 2021, выпуск 2

    9 мая

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

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

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

    26 апреля

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

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

    Слушаем

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

    19 апреля

    Если у вас нормально настроен 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 сможет ходить в интернет.

    Комментировать
  6. Замена клавиш Huawei Matebook X Pro

    22 марта

    Понадобилось заменить на ноуте SHIFT и CTRL. Заводской шифт сначала облез, а затем разломился пополам.

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

    • replacementlaptopkeys - 20$ + доставка.
    • Можно поискать "Matebook X Pro Keys" на eBay. Это 15$ + доставка. Но клавиши там с разборки и нужных часто нет.
    • laptopkey - 8€.

    К счастью, есть Aliexpress. Найти там что нужно оказалось не так просто, так что вот ссылка. 100 рублей кнопка и ножницы (лучше брать комплект) + 550 рублей доставка.

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

    Как менять:

    4 комментария
  7. Расшифровка "Теория программирования: пакетные принципы и метрики"

    17 марта

    Вышла расшифровка моего доклада про пакетные метрики, дополнение к SOLID. Опубликована на хабре:

    Читаем

    1 комментарий
  8. Новости Yii 2021, выпуск 1

    5 марта

    Первый выпуск новостей за год. Релизы пакетов, интересное из разработки и немного про финансы.

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

    Комментировать
  9. PHP: превращаем ошибку в исключение локально

    20 февраля

    В PHP часто для обработки ошибки в функциях вроде dns_get_record() используют оператор @:

    $result = @dns_get_record($hostname, DNS_A);
    if (!$result) {
        throw new \RuntimeException('Unable to get record.');
    }

    Проблем несколько:

    • Использование @ не очень хорошо сказывается на производительности
    • Часто подавляется слишком много разных ошибок.

    Есть способ лучше:

    set_error_handler(
        static function (int $errorNumber, string $errorString) use ($hostname): ?bool {
             throw new \RuntimeException(
                 sprintf('Unable to get record: "%s". ', $hostname) . $errorString,
                  $errorNumber
             );
        }
    );
     
    $result = dns_get_record($hostname, DNS_A);
     
    restore_error_handler();
    2 комментария
  10. PHP, OpenSSL и ошибка certificate verify failed

    17 февраля

    При попытке использования OpenSSL на некоторых системах возникает ошибка:

    stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages: error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed

    Исправляется довольно просто:

    1. Сливаем https://curl.haxx.se/ca/cacert.pem.
    2. В php.ini добавляем openssl.cafile="/путь/до/cacert.pem".

    Так же точно исправляется ошибка "cURL error 60".

    Вроде просто, но почему-то подавляющее большинство советов на эту тему, в том числе большинство ответов на StackOverflow, говорят "отключить проверку", что, конечно же, приводит к возможности атаки man in the middle.

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