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

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

Не забудь подписаться и включить уведомления.
Download Telegram
Про "войтишников"

В последнее время все чаще сталкиваюсь с людьми, которые идут в IT только ради денег. Сейчас очень популярно стало «войти в айти». Огромное количество бесплатных и платных курсов, предлагающих за 2 часа стать гуру программирования, только подогревают интерес новичков.

Вот только есть один маааленький нюанс, хотя если разобраться, не один.. Но для начала, вам должно это нравиться! Если вы хотите войти в айти только из-за денег - ничего из этого не получится)) Вы потратите время, нервы и бросите это дело. Те, кто говорят, что зарабатывать программистом легко - врут. Мозг настолько устает, что иногда уже перестаешь понимать где реальность..

А ещё, в зависимости от сферы IT, нужно обладать определенными качествами. Если вы хотите стать программистом - нужно иметь математический склад ума, уметь анализировать, прогнозировать, продумывать различные варианты возможных ситуаций. Если решите стать дизайнером - нужно обладать хорошим вкусом, следить за трендами и вообще быть творческим человеком. И тд. и тп...

И запомните, деньги в айти есть, но до них нужно дорасти, как и в любой другой сфере. А если вам кто-то обещает чудо курс, после которого вы начнёте получать тысячи $ - вас тупо разводят 😁

В начале своей карьеры я делал работу и бесплатно, ради опыта, дополнительно зарабатывая положительные отзывы от довольных клиентов. Я очень любил то, что делаю и это очень помогло мне в профессиональном росте. Удачи вам, друзья, и занимайтесь тем, что вам нравится! 😉
Памятка для заказчиков 😁
Хорошая шпаргалка по PHP
Привет, друзья! Коллекция моих ботов пополнилась очередным музыкальным ботом @imuzzbot.

Вот за что я люблю телеграм - так это за всё😁 И общаться в нем удобно, и стикеры зачётные, и ботов делать одно удовольствие.

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

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

Я для этих целей использую proxy6.net, работаю с ними уже третий год и абсолютно доволен качеством и невысоким ценником. Российский IPv6 на месяц обойдется всего в 25.2 рублей! Это копейки на самом деле, учитывая сколько проблем решает использование прокси))

И кстати, по купону 8x1XPVCLQV можно получить 5% скидку на покупку новых прокси. Пользуйтесь на здоровье! 😊
Mail запустил прикольный сервис для совместного написания кода.

Можно использовать без регистрации и писать на нескольких языках.

Сервис поддерживает Python 3.8, Java 11, C++ 17, PHP 7.4, Node JS 14, Go 1.15, Erlang OTP 23, Rust 1.51 и Swift 5.3.3. Обещают добавить позже ещё больше языков.

Подсветка синтаксиса кода, результат выполнения кода, вывод ошибок - удобно для проведения интервью👍

https://interview.cups.online/
This media is not supported in your browser
VIEW IN TELEGRAM
Когда я пытаюсь разобраться в коде, написанном позавчера.
Чем занято место в linux?

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

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

Для анализа занятого места в linux есть множество утилит, в том числе и графических. Но когда у нас нет места, а утилита еще не установлена - это становится проблемой. В моем случае сервер был занят на 98% и жутко лагал. Но эти свободные 2% мне дали возможность установить утилиту и провести анализ, затем почистить место.

Утилита ncdu - очень маленькая, но при этом достаточно функциональная, чтобы провести анализ, пробежаться по дереву файлов и сразу в ней удалить лишнее!

Вначале устанавливаем ее через консоль
Для Debian систем (rpm-пакеты) (в т.ч. Ubuntu) командой apt-get install ncdu
Для Red Hat систем (dpkg-пакеты) командой yum install ncdu

Затем запускаем команду ncdu и ждем результатов анализа. Дальше при необходимости бегаем по дереву файлов/папок и смотрим где у нас то, что можно удалить. Удалить можно прямо в утилите, выделив нужный файл или папку и нажав на клавиатуре d

Вот список всех доступных команд:
d — удалить выбранный файл или папку с файлами;
n — отсортировать файлы и папки по имени;
s — отсортировать файлы и папки по объему занимаемого места;
t — показывать сначала папки, затем файлы;
g — режим отображения (в процентах, графически, комплексно);
a — режим отображения (размер файла, занятое место на жестком диске)
e — включить/отключить отображение скрытых файлов;
i — показать дополнительную информацию о папке или файле;
r — заново пересчитать занимаемое место;
q — выйти из программы;

Программа очень удобная, простая и выполняет задачу по анализу и освобождению свободного места полностью, рекомендую ее к использованию! 👍
Установка свежей версии 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 году крепкого здоровья, имхо, сейчас это как никогда важно. А ещё желаю вам удачи и упорства! Двигайтесь к намеченной цели и все получится! Пусть в новом году жизнь станет хоть немного, но лучше, проще, легче, позитивнее. Пусть исполнятся заветные мечты. С наступающим Новым годом!
🍾🍾🍾🎊🎊🎊🎄🎄🎄
Проверка 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. телеграм добавил возможность ставить реакции на посты, так что прошу использовать эту возможность, чтобы я понимал насколько интересна вам данная тема
Очистка логов 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/ 😉
Запуск 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

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

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

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

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

sudo ntfsfix /dev/nvme0n1p8

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

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

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

#памятка #linux
Решение проблемы 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