Рубрика «php» - 69

Привет!

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

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

Проблемы при работе с кэшем и способы их решения - 1
Wild horses stampeding. Оригинал картинки.

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

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

Читать полностью »

Современный PHP без фреймворков - 1

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

Читать полностью »

В 2017 году Matthias Noback (автор A year with Symfony) опубликовал цикл из трех статей, в котором описал свои взгляды на идеальную архитектру корпоративных приложений, сформировавшуюся за долгие годы практики.Первая часть является вводной и не представляет особого интереса(можно ознакомитсья в оригинале). Переводом второй является данная статья. Перевод третьей будет доступен в скором времени.

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

Читать полностью »

PHP-Дайджест № 127 (1 – 25 марта 2018) - 1

Свежая подборка со ссылками на новости и материалы. В выпуске: Zend Expressive 3 и другие релизы, пара улучшений в PHP 7.3, порция полезных инструментов, и многое другое.
Приятного чтения!

Читать полностью »

Функциональное программирование с PHP-генераторами - 1

Генераторы классные. Они облегчают написание итераторов, определяя функции вместо создания целых классов, реализующих Iterator. Также генераторы помогают создавать ленивые списки (lazy list) и бесконечные потоки. Главное отличие функции-генератора от обычной функции в том, что обычная может возвращать только один раз (после этого её исполнение прекращается), а функция-генератор в ходе исполнения способна выдавать несколько значений. При этом в перерывах между возвратами исполнение генератора ставится на паузу до следующего запуска. Поэтому генераторы могут использоваться для создания списков с лениво генерируемыми значениями, то есть каждый элемент в списке вычисляется только в момент востребованности.

Читать полностью »

Приглашаем на Badoo PHP Meetup 7 апреля - 1

Привет!

Похоже, астрологи объявили неделю PHP митапов в апреле. :)

7 апреля мы проведем первый Badoo PHP Meetup в московском офисе компании!

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

Адрес: Цветной бульвар, 2 (м.Трубная)
Начало докладов в 12:00
Регистрация здесь
Трансляция будет на нашем YouTube-канале и в группах VK и FB. Записи опубликуем там же и на Хабре.

Читать полностью »

Tutu PHP Meetup #1 - 1

В четверг, 5 апреля, в офисе Туту.ру пройдет первый Tutu PHP Meetup. Вместе с нашими специалистами и приглашёнными гостями обсудим боль и кайф серверной разработки на PHP, узнаем как быстро создавать новые продукты и встраивать в текущую архитектуру проекта, как экспериментировать с API без негативного влияния на проект и команду, и вообще как сэкономить на рутине и стать быстрее.
Читать полностью »

На днях проходил тест по языку PHP на одном известном русскоязычном ресурсе. Многие вопросы были понятны, а ответы на них — очевидны. Но были и такие, которые заставляли задуматься, найти ответ, а потом… снова задуматься. Об одном из таких вопросов я и хочу рассказать.

Где находится файл загружаемый на сервер при помощи PHP скрипта.

  • Файл находится в оперативной памяти.
  • Файл хранится во временной директории и удаляется после выполнения скрипта.
  • PHP не может загружать файлы на сервере
  • Файл хранится в корне сайта и удаляется после выполнения скрипта.

орфография и пунктуация сохранены, возможен выбор только 1 варианта ответа
Читать полностью »

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

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

Читать полностью »

Сегодня мы выпускаем обновления Yii для нескольких последних версий 2.0.x и официальных расширений поддержки нереляционных баз данных для исправления найденных уязвимостей. Патчи исправляют проблему в методах слоя ActiveRecord: findOne() и findAll(), которые могут допустить SQL инъекцию, если входящие данные не подготовлены должным образом.

Мы рассматриваем это как уязвимость в Yii потому что документация для этих методов не содержала явного предупреждения о том, что в некоторых случаях передача нефильтрованых пользовательских данных может быть опасной. Мы благодарим Analitic1983 (GitHub) за обнаружение этой уязвимости.

Проблема относится в большей степени не к самому фреймворку, а к документации по использованию данных методов в приложении. Мы обновили документацию и дополнительно привели примеры кода, который может быть опасен. Однако, обновление документации не исправит приложения, в которых разработчики уже используют методы findOne() и findAll() небезопасно. Чтобы избежать наихудшего сценария – SQL инъекции, мы также изменили поведение этих методов и добавили принудительную фильтрацию входящих данных, которая ограничивает перечень возможных имён столбцов списком свойств модели ActiveRecord.

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

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js