Заметки программиста
111 subscribers
21 photos
87 links
Блог fullstack php developer-а

Немного о фрилансе, о саморазвитии, истории из жизни, интересные статьи про разработку и конечно же немного it юмора 😉

Не забудь подписаться и включить уведомления.
Download Telegram
Установка свежей версии Node.js за минуту

Бывает такое, что на сервере или в docker контейнере устанавливается старая версия Node.js, а для корректной работы скриптов нужна свежая. Так случилось и у меня - в docker по умолчанию ставилась 10я версия node, а нужна была минимум 12!

После недолгого "гугления" нашел лучший, на мой взгляд, вариант, которым и решил поделиться. Для этого мы будем использовать утилиту nvm - Node Version Manager. Инструкцию пишу под linux. Итак, в консоли запускаем команду:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash

После этого устанавливаем желаемую версию node, например 14.17.0:

nvm install v14.17.0

В случае успеха мы увидим что-то вроде этого:

Now using node v14.17.0 (npm v6.14.13)

Вот и все) Теперь мы можем использовать свежую версию Node.js🤟
Привет, друзья! Стыдно, что совсем забил на блог, но так сложились обстоятельства.

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

Но есть и обратная сторона медали - расстояния.. Когда тебе куда-то нужно поехать, это занимает достаточно много времени. И этого времени постоянно не хватает. А писать сюда просто так, для галочки, или постоянно делиться контентом из других каналов - это не мое.

За это время было много интересных проектов, постоянно приходится обучаться новому и расти. Не будешь следить за тенденциями - вылетишь нафиг с трассы😄 Из-за пандемии количество желающих войти в айти увеличилось, из-за чего увеличился и демпинг. А клиент не всегда понимает, чем час условного сеньора стоимостью за 2к отличается от часа джуна за 700 р.

За этот год суммарное количество пользователей моих ботов переросло 100к и это очень радует! Вот так мое хобби начало приносить пассивный доход. Да немного, но по крайней мере окупается сервер и остаётся ещё на вкусняшки))

Хочу всем пожелать в Новом 2022 году крепкого здоровья, имхо, сейчас это как никогда важно. А ещё желаю вам удачи и упорства! Двигайтесь к намеченной цели и все получится! Пусть в новом году жизнь станет хоть немного, но лучше, проще, легче, позитивнее. Пусть исполнятся заветные мечты. С наступающим Новым годом!
🍾🍾🍾🎊🎊🎊🎄🎄🎄
👍2
Проверка ip на вхождение в подсеть по маске в php

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

Когда у банка десяток заранее известных ip, решение сводится к банальной проверке if (in_array($ip, $ipArray)), но что делать, если таких ip может быть например 510? (реальный пример - банк Тинькофф присылает запросы с маски сети 91.194.226.0/23). В этом случае нужно проверять по маске.

Я давно уже предпочитаю не изобретать велосипеды, а искать адекватные готовые решения и в этот раз тоже погуглил и нарыл отличное решение:

protected function isCorrectIp($ip, $range): bool
{
list ($subnet, $bits) = explode('/', $range);
if ($bits === null) {
$bits = 32;
}
$ip = ip2long($ip);
$subnet = ip2long($subnet);
$mask = -1 << (32 - $bits);
$subnet &= $mask;

return ($ip & $mask) == $subnet;
}


Используем таким способом:

if ( ! $this->isCorrectIp($ip, '91.194.226.0/23')) {
$this->logWrite('wrong ip: '.$ip);
die();
}


ps. телеграм добавил возможность ставить реакции на посты, так что прошу использовать эту возможность, чтобы я понимал насколько интересна вам данная тема
👍62👎1
Очистка логов docker контейнеров

Если не настроить логирование в докер и не ограничить размер файлов логов, их размер может быть ооочень большим))

Сегодня решил проверить свободное место на своем сервере и был шокирован, что занято почти 80% места. Начал анализировать куда ушло место с помощью утилиты ncdu, о которой писал тут и увидел, что один из контейнеров в docker на свой лог сожрал более 30 гигов😱 30 гигов мусора это серьезно))

В первую очередь нужно очистить эти логи, а уже потом по-хорошему настроить ограничения на размер файлов логов. Для очистки всех контейнеров сразу можно использовать простую команду:

sudo sh -c "truncate -s 0 /var/lib/docker/containers/*/*-json.log"


Если хотите проверить размер логов, можно использовать:
sudo sh -c "du -ch /var/lib/docker/containers/*/*-json.log"


Ну и конечно стоит настроить логирование https://docs.docker.com/config/containers/logging/json-file/ 😉
👍2
Запуск python скриптов в Windows 10

Решил написать небольшую заметку для себя и для всех, кто столкнется с такой ситуацией, когда нужно запустить некий скрипт на python из под windows 10. Расписывать как установить сам python не буду, будем считать что он уже установлен)

Переходим в папку с python проектом и открываем там консоль. Далее пишем поочередно:

python -m venv env


.\env\Scripts\activate


Если все прошло успешно и виртуальное окружение env создано и активировано - запускаем установку зависимостей (если необходимо)

python -m pip install -r requirements.txt


Ну и далее уже запускаем сам скрипт в окружении.

А чтобы выйти из окружения, набираем
deactivate


#python #памятка #windows10

- - - - - - - - - -
ставь лайк, если было полезно😉
👍4
Файловая система доступна только для чтения

Бывает такой баг, когда используется 2 системы на одном жестком диске (windows и linux). В моем случае винда была первой, а потому у старых разделов файловая система стоит NTFS. Потом я поставил manjaro (на котором уже почти год работаю) и иногда при доступе к старым NTFS разделам (после включения винды) получаю ошибку доступа. Решается все довольно просто:

Ставим пакет ntfs-3g

Потом выполняем исправление нашего раздела

sudo ntfsfix /dev/nvme0n1p8

/dev/nvme0n1p8
- тут пишем название нужного раздела (у меня это /dev/nvme0n1p8)

После окончания исправления при необходимости назначаем пользователя разделу или папке

sudo chown -R root:root /media/E/

#памятка #linux
👍1
Решение проблемы Docker: (Permission denied)

Создайте группу Docker, если ее еще нет:
sudo groupadd docker
Просмотрите количество суперпользователей в системе:
grep -Po '^sudo.+:\K.*$' /etc/group
Экспортируйте пользователя в командной оболочке Linux:
export USER=demoUser
Добавьте пользователя в группу Docker:
sudo usermod -aG docker $USER
Запустите следующую команду/ войдите или выйдите из системы:
newgrp docker
Проверьте, работает ли Docker исправно или нет:
docker run hello-world
Если проблема сохраняется, перезагрузите систему:
reboot
Если это не помогло, выполните следующую команду:
sudo chmod 660 /var/run/docker.sock

#памятка #docker #права #linux
👍1