Все потоки
Поиск
Написать публикацию
Обновить
169.03

PHP *

Скриптовый язык общего назначения

Сначала показывать
Порог рейтинга
Уровень сложности

Bash-скрипт на максималках: как работает менеджер задач для управления 300 скриптами

Время на прочтение8 мин
Количество просмотров3.8K

В Rusprofile наш домен — регтех, мы помогаем компаниям оценивать надежность контрагентов. Каждый день сотни скриптов качают данные из официальных открытых источников, парсят и строят кеши.

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

Эта статья — о том, как «проклятье масштаба» оказалось алгоритмической задачей; решение — получилось благодаря принципам обхода ориентированных графов; а запаса прочности решения хватило, чтобы с момента появления на протяжении лет не требовалось дополнительных ресурсов и каких‑либо доработок.

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

Будут технические детали, теория графов и немного рефлексии.

Читать далее

Новости

Мультитенантность без глобальных скоупов с сигаретой в зубах. Хипстер PHP

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров522

Доброго времени суток дорогой читатель!

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

Тема изоляции данных клиентов (мультитенантность) в saas или подобных продуктах исторически считается если не самой, то одной из наиболее сложных и требующих архитектурных извращений, тем в веб-разработке.

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

Компромиссным решением является выделение идентичных по содержимому (таблицам) схем для каждого нового клиента в одной базе данных. Таким образом мы получаем относительную защиту от утечек данных между клиентами с минимальными затратами на аренду новых серверов. Именно этот вариант мы и будем рассматривать.

Я плачу

ChameleonLab: как мы создаём сайт для desktop-приложения на PHP без баз данных и CMS, с планами на Python API

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров2.5K

Привет, Хабр! Мы — команда проекта ChameleonLab, и это история о том, как мы начали создавать полномасштабный образовательный центр по стеганографии и криптографии, отправной точкой которого стал наш desktop-инструмент.

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

Читать далее

Как я пытался подружить PHP с NER — драма в 5 актах

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров1.5K

Это статья — пример небольшого личного опыта, где я пытался решить одну чисто техническую задачу для одного из моих текущих проектов. Задача в конце‑концов была решена, насколько правильно — не знаю, но надеюсь многим будет интересен и полезен мой опыт. Итак, небольшая драма в 5-ти актах.

Читать далее

PHP: Общая память

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров3.2K

Хочется быстрый кеш или общение между процессами? Хочется использовать фишки long-running PHP, но без long-running?

Давайте разберёмся, как работать прямо с оперативной памятью: от System V до MapViewOfFile; От shmop до FFI.

Расшарить оперативу

От PHP к React: размышляем о вреде и пользе миграции

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров4.4K

Недавно мы с командой работали с клиентом из финансового сектора: у него есть сайт и личный кабинет, давно написанные на PHP (бэк и фронт), и задача — обновить дизайн и пользовательский опыт без глобальных изменений «под капотом».

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

Читать далее

Как устроены массивы в PHP и как код влияет на скорость работы с ними

Уровень сложностиСложный
Время на прочтение11 мин
Количество просмотров7.3K

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

Читать далее

Emoji PHP — смайлики в вашем проекте

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров1.2K

Столкнулись с необходимостью работать со смайликами как в Telegram: группировать, искать и хранить в базе? — Готовых решений на PHP не нашлось.

Рассказываю, как я создал библиотеку Emoji PHP для решения этих задач

Читать далее

День программиста: от CGI до Zope

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров1.1K

📅 Сегодня — День программиста. И это отличный повод вспомнить, что даже то, что кажется нам «естественным» и само собой разумеющимся, когда-то было революцией.

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

Читать далее

Мониторинг и анализ производительности бэкенда с помощью ClickHouse и Grafana. Часть 3

Уровень сложностиСредний
Время на прочтение15 мин
Количество просмотров1.9K

Всем привет! Я Артём Седых, ведущий разработчик и тимлид проекта банковского сопровождения. Наш сервис — 8-летний монолит на PHP с командой из 39 человек. В цикле статей рассказываю об опыте разработки и внедрения альтернативы pinba: гибкого инструмента мониторинга, который позволяет увидеть живую систему как на ладони и понять, из‑за чего именно проседают определенные экшены. Сегодня, в третьей и заключительной части, рассмотрим мониторинг со стороны devops на дашбордах SLI/Apdex, поколдуем над статистическими методами для прогноза снижения производительности, поговорим об автоматических уведомлениях Grafana. Оценим перспективы развития, сравнительный анализ выбранного подхода и выводы по нашему опыту.

Читать далее

Визуализация обмена с 1С: синхронизация заказов, остатков и контрагентов для e-commerce

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров2.5K

Привет! Это Илья, руководитель проектов в Webest. Расскажу о том, как мы построили обмен между интернет-магазином и 1С. Реализовали двусторонний обмен через очереди, ввели приоритеты для разных типов данных и сделали прозрачный мониторинг в админке Orchid.

Читать далее

Post-PHP эра: куда движется веб-разработка?

Время на прочтение6 мин
Количество просмотров19K

Привет, хабровчане! Я Алиса — тимлид в e-commerce-агентстве KISLOROD, по базовой профессии — сеньор PHP-разработчик с десятилетним стажем. И да, спойлер: PHP не только жив, он бодро бегает марафоны.

По данным W3Techs, PHP работает на более чем 76% серверов, где известен язык бэкенда. Последние релизы стабильно приносят +20–25% производительности на версию — на фоне вечного рефрена «PHP умер». Удобно хоронить то, чьи обновления не открывал с 2012-го, верно? Давайте разбираться.

Читать далее

Pulse Boson PHP #1

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров5.7K

Обзор развития проекта Boson PHP — платформы для создания десктопных приложений на веб-технологиях. Новый сайт, обновленная документация, веб-компоненты (главная фишка проекта), и технические особенности разных ОС.

Читать далее

Ближайшие события

Защищаем контейнеры с нуля: практическое руководство по Docker security и Kubernetes security contexts

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров6.3K

Привет, Кореша! Вы когда-нибудь задумывались о безопасности контейнеров, работающих в продакшене? Docker и Kubernetes предоставляют широкий набор инструментов, которые могут быть использованы плохими людьми. Безопасность контейнеров — это не просто волшебная защита, а многослойная система, охватывающая весь процесс от сборки до запуска в кластере.

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

Читать далее

Мониторинг и анализ производительности бэкенда с помощью ClickHouse и Grafana. Часть 2

Уровень сложностиСредний
Время на прочтение14 мин
Количество просмотров4.1K

Всем привет! Я Артём Седых, ведущий разработчик и тимлид проекта банковского сопровождения. Наш сервис — 8-летний монолит на PHP с командой из 39 человек. В цикле статей рассказываю об опыте разработки и внедрения альтернативы pinba: гибкого инструмента мониторинга, который позволяет увидеть живую систему как на ладони и понять, из‑за чего именно проседают определенные экшены. Сегодня, в продолжение первой статьи, закрываем архитектурную часть — поговорим об отправке и хранении метрик. А главное, перейдём к самому интересному: получившимся дашбордам Grafana. На конкретных примерах покажу, какие проблемы удалось обнаружить и какие рекомендации по оптимизации можно извлечь из каждого элемента.

Читать далее

TMH: как создать музыкальный хаб на PHP, Telegram и виртуальном хостинге

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров2.1K

Telegram Music Hub (TMH) — это open-source решение, которое превращает ваш Telegram-канал в единое цифровое пространство для музыки, блога и сообщества.
И всё это — на самом обычном виртуальном хостинге, без баз данных, без сложных зависимостей, без дорогих серверов.

👉 github.com/tcse/php-TMH

Читать далее

Подключаем Centrifugo в laravel

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров2.5K

В этой статье мы рассмотрим интеграцию сервера реального времени Centrifugo с фреймворком Laravel, основные настройки и нюансы работы

Centrifugo – это сервер для работы в реальном времени, который поддерживает различные транспорты для подключения клиентов, включая WebSocket, HTTP-streaming, Server-Sent Events (SSE) и другие. Он использует publish-subscribe паттерн для обмена сообщениями

Читать далее

Рассылка на миллион: как CDP от БизнесПрофи на базе Битрикс24 помогает оперировать реально огромными базами контактов

Уровень сложностиСредний
Время на прочтение18 мин
Количество просмотров331

Привет! Меня зовут Анна Амирова, я из digital-интегратора БизнесПрофи. Сегодня возвращаюсь со второй частью статьи о том, как работает и чем помогает маркетологам и отделу продаж CDP на базе Битрикс24.

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

Читать далее

Ещё раз о генераторах (и немного о генеративных моделях)

Время на прочтение7 мин
Количество просмотров3.6K

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

Читать далее

Битрикс24 Factory, Operation, Action разбираемся с новым API CRM и строим масштабируемую архитектуру для смарт-процессов

Уровень сложностиСредний
Время на прочтение18 мин
Количество просмотров722

Как разобраться с фабриками, операциями и действиями для смарт-процессов. Разберем проблемы официальной документации, масштабирование на множество сущностей и предложим готовое архитектурное решение.

Читать далее
1
23 ...