OneCode
1.33K subscribers
679 photos
69 videos
3 files
565 links
Full Stack на PHP, Laravel и всё, что с этим связано.
YouTube: https://www.youtube.com/@onecode_blog
Download Telegram
Доверяй ИИ, но проверяй! 😅
😁13👍3🤡2💩1🤣1
Хороших выходных, ребят! 🤙

@onecode_blog
😁21👍10🔥4🤣3
Вышло предложение добавить в PHP BCmath (вычисления с повышенной точностью) объекты для работы с числами.

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

Урок доступен в VIP-канале 👈

Как по мне - офигенная тема, надеюсь предложение примут.

https://wiki.php.net/rfc/support_object_type_in_bcmath
👍63🔥3
Серверы и масштабирование Часть 4 Нагрузочное тестирование

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

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

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

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

Первый способ

В Linux есть такая утилита - AB. С помощью неё можно отправлять N запросов на определенный адрес. Строго говоря можно устроить простую DDos-атаку. Сразу скажу, что при отправке большого кол-ва запросов некоторые провайдеры могут всполошиться, потому что это может повлиять на стабильную работу серверов.

Но в целом для небольшого тестирования это хороший вариант. Короче устанавливаем AB и запускаем тест примерно с такой конфигурацией:

Отправить 100 запросов по 10 одновременно:
ab -n 100 -c 10 http://example.com

Отправить 1000 запросов по 100 одновременно:
ab -n 1000 -c 100 http://example.com

Отправить 10000 запросов по 500 одновременно:
ab -n 10000 -c 500 http://example.com

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

Как докручивать серверы? Есть несколько основных параметров, которые сразу можно редактировать. Во-первых конфигурацию Nginx (worker_connections), конфигурацию PHP-FPM (pm, max_children) и конечно конфигурацию сервера (процессор, память).

Еще полезно во время тестирования использовать утилиту HTOP в линукс, которая показывает потребление ресурсов сервера - процессора, памяти. Например если во время тестрования видим, что все ядра процессора загружены на 100%, значит логично увеличить параметры сервера, тк добавлять воркеров смысла скорее всего нет.

Тут сложно дать какие-то четкие рекомендации, потому что в каждом проекте всё индивидуально + могут быть другие факторы, оказывающие влияние, например удалённость сервера. Конечно оптимизация самого приложения и запросов к базе данных является важным фактором.

В целом это интересный опыт - отправить N запросов, посмотреть, добавить процессоров, опять запустить, посмотреть, добавить воркеров php-fpm, запустить, посмотреть и так далее. То есть пробовать разные варианты и смотреть как это влияет на результат.

Второй способ

Не многие знают, что в Postman (программа для отправки запросов) есть функция Runner, которая как раз нужна для теститрования производительности, например API нашего проекта. Честно я не пользовался этой штукой, просто знаю, что такая возможность есть. Мне больше нравится утилита AB, которую я могу запустить с отдельного сервера, отправить необходимое кол-во запросов на целевой сервер и посмотреть результат.

Заключение

Дополнительно хочу сказать, что кол-во запросов в секунду - это НЕ тоже самое, что кол-во пользователей онлайн. Например 1000 пользователей онлайн могут давать лишь 1-5 запросов в секунду, потому что юзеры не кликают кнопки постоянно, а читают контент, изучают и думают. Конечно это зависит от проекта, но в целом для ориентира даже 50 запросов в секунду по факту могут держать несколько тысяч пользователей онлайн.

Сделайте репост, пожаааалуйста @onecode_blog 👈
👍145🔥3👏1
Forwarded from Denis R
Привет! Нужно сделать на Laravel магазин аналог rusavtomatika.ru, за плату. Желательно на двух языках. Обращайтесь пожалуйста в личку.
Media is too big
VIEW IN TELEGRAM
Есть прикольные мысли на тему денег и свободы. Постараюсь найти время, чтобы поделиться на следующей неделе.

А пока, поделюсь небольшим достижением - прошел GTA Vice City 😁 Еще один шаг на пути к цели занял 25 часов.

Убедился, что это моя любимая часть из серии, потому что у неё какая-то прикольная атмосфера.

Ну и в детстве играл в неё больше всего. Тогда многие миссии казались сложными, а сейчас всё прошел довольно легко и с кайфом.

Кстати засомневался проходил ли я её раньше целиком? Чтобы прям до титров, потому что для этого нужно помимо основных миссий купить всю недвижимость в городе, типа таксопарка, и пройти эти миссии, чтобы получить звонок от Лэнса и доступ к финальной мисии.

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

Установил San Andreas - моя нелюбимая часть. Графика там полная фигня, хотя в этой обновленной версии получше.

Хорошей недели, друзья!
👍9🔥4👏1
Forwarded from Denis R
Ищу исполнителя на разработку сайта
1
Forwarded from Denis R
ТЗ.docx
2 MB
Forwarded from Denis R
Пишите в личку
👍1
Хороших выходных, братья и сёстры! 🥳

@onecode_blog 👈
🤣26👍6😁3🤡1
Походу теперь посты только с шутками XD
👍18🤣15😁6🤡1
Вакансия на разработку сайта

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

Сайт нужно разработкть с нуля на Laravel и PostgreSQL, ориентируясь на новую вёрстку и старый сайт.

Вёрстка у ребят уже готова. Это простой шаблон на bootstrap с jquery. Можно скачать и посмотреть здесь.

Старый сайт для оценки функционала, который необходимо разработать, здесь.

Помимо разработки нового сайта нужно будет выполнить перенос данных из старой базы в новую, а так же перенести около 200ГБ видео на новый сервер.

Админку можно разработать на Filament, вывести там все основные данные (со связями) и реализовать несколько функций, например отмену пополнения баланса.

Если есть время, понимание и желание, то проведи анализ проекта, после чего отправь заявку, заполнив форму здесь.

Если не будет ответа в течении недели, значит взяли другого разработчика.

Желаю всем нам хорошей недели!
👍4🔥2🤝2
Интересно, что разработчики спрашивают где брать заказы, как найти работу, а по факту на вакансию выше совсем мало откликов. Значит все при деле, круто!
👍7
Docker Hub больше не работает из России. Теперь либо использовать VPN, либо настроить прокси, например хуёкер

@onecode_blog 👈
🤣13💩6🫡3😁2
Laravel на языке Go. Как вам?

https://www.goravel.dev

@onecode_blog 👈
🤯11👍2😐2😁1💩1
Оказывается есть официальные приложения ChatGPT на комп и телефон.

Установил на мак без проблем, а на айфоне пришлось создать американский аккаунт.

Можно пользоваться.
🔥5👍21😁1
Говорят Docker Hub заработал 🥳
🔥13
Поработав с Filament (конструктор кабинетов для Laravel), пришла прикольная аналогия. Есть задача - выкопать фундамент или любую другую яму, канаву, могилу, котлован и тд.

Какой инструмент для этого использовать? Например, экскаватор или обычную лопату. Экскаватор - это Filament, а лопата - разработка с нуля (например Vue + Laravel).

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

С другой стороны экскаватором нужно научиться управлять! А еще обслужитьвать его, заливать топливо. В тоже время лопату взял и сразу начал копать, а в случае чего можно купить новую. В крайнем случае можно копать голыми руками.

При этом нужно учитывать специфику задачи - какую именно яму нужно выкопать?

- Требуется высокая точность (соответствие ТЗ)?
- Имеются много сложных мест (кастомизация)?
- Тогда скорее всего нужна именно лопата.

- Требуется высокая скорость (большой объём)?
- Мало сложных мест (дёргай рычаги и всё).
- Тогда сильно поможет экскаватор.

А возможно понадобится и то и другое! Экскаватор (filament) сделает бОльшую часть, а особо "опасные" места может сделать лопатой (alpine или vue). Но часто мы пытаемся выбрать что-то одно и потом использовать это для ВСЕХ проектов. Иногда это может сработать, а иногда будет мешать.

Я часто выбираю alpine + livewire + filament, если вижу, что они будут больше помогать, чем мешать в конкретном проекте. Иначе берём nuxt spa + laravel api + команда разработчиков.

Недавно как раз выбрали именно второй вариант (nuxt + laravel) из-за его максимальной гибкости, хотя и высокими трудозатратами. Тем более большинству разработчиков это привычнее и понятнее.

Не все хотят изучать какой-то livewire или часами штудировать документацию filament (учиться водить экскаватор). Зачем, если ты и так можешь всё сделать с нуля? Сразу начать копать лопатой и в будущем гарантированно получить идеальный результат.

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

@onecode_blog 👈
👍17🔥7👌31