Как стать автором
Обновить
10
0
Volodymyr Polishchuk @NorthDakota

PHP Developer

Отправить сообщение

Двоичные и побитовые операции в PHP

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

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

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

А теперь к делу! В этой статье я расскажу много интересного о побитовых операциях, двоичной и шестнадцатеричной обработке, которые будут полезны в ЛЮБОМ языке.
Читать дальше →
Всего голосов 29: ↑26 и ↓3+35
Комментарии11

Ищем свободное парковочное место с Python

Время на прочтение14 мин
Количество просмотров64K
image

Меня зовут Рушан, и я автор Telegram‑канала Нейрон. Не забудьте поделиться с коллегами или просто с теми, кому интересны такие статьи.

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

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

image

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

Поэтому давайте немного развлечёмся и напишем точную систему уведомлений о свободной парковке с помощью Python и глубокого обучения
Читать дальше →
Всего голосов 110: ↑107 и ↓3+104
Комментарии53

Раскрываем возможности map в nginx

Время на прочтение6 мин
Количество просмотров136K
map — мощная директива, которая может сделать ваши конфиги простыми и понятными.
Возможно, это самая недооцененная директива, из за того, что не все знают всех её возможностей.
Она в компактной форме помогает обрабатывать переменные, GET параметры, заголовки, куки и наборы бекендов (upstream).
Попробую раскрыть её возможности хабрапользователям.
Раскрыть возможности map
Всего голосов 91: ↑91 и ↓0+91
Комментарии11

PHP-Дайджест № 194 (1 – 14 декабря 2020)

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

Свежая подборка со ссылками на новости и материалы. В выпуске: Enum в PHP 8.1, удаление Serializable и ограничение $GLOBALS, а также другие новости из PHP Internals, PhpStorm 2020.3, Symfony UX, порция полезных инструментов, видео, и первый PHP Дайджест Стрим.

Приятного чтения!


Всего голосов 49: ↑49 и ↓0+49
Комментарии44

CrowdSec — современная альтернатива Fail2Ban и коллективный иммунитет для Интернета

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

CrowdSec

Инструмент Fail2Ban хорошо известен админам. Программа анализирует логи на сервере и подсчитывает количество попыток доступа с конкретных IP-адресов по указанным протоколам. В случае нарушения правила данный IP-адрес блокируется на заданный отрезок времени. Например, джейл для авторизации по SSH включён с дефолтными настройками 5 попыток авторизации за 10 минут, после чего происходит бан IP-адреса на 10 минут. Отличный способ отфильтровать мусорный трафик от разных сканеров и защита от DDoS.

Fail2Ban и SSHGuard — лучшие инструменты в своей области. Однако новый опенсорсный проект CrowdSec представляется интересной альтернативой. Это локальная замена Fail2Ban, а потенциально нечто большее — глобальная база репутации IP-адресов типа иммунной системы интернета.
Читать дальше →
Всего голосов 30: ↑28 и ↓2+33
Комментарии64

Как лицензируется и чем отличаются лицензии Elastic Stack (Elasticsearch)

Время на прочтение3 мин
Количество просмотров15K
В этой статье расскажем как лицензируется Elastic Stack, какие бывают лицензии, что туда входит (ключевые возможности), немножечко сравним Elastic с OpenDistro от AWS и другими известными дистрибутивами.


Читать дальше →
Всего голосов 15: ↑13 и ↓2+16
Комментарии2

11 инструментов, делающих Kubernetes лучше

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


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


Здесь и появляются дополнения, расширения и прочие ништяки для этого оркестратора контейнеров, поддерживаемые широчайшим сообществом. В этой статье будет 11 лучших вещей, найденных нами. Нам самим в Southbridge они очень даже интересны, и мы планируем разобраться с ними практически — на винтики и гаечки разобрать и посмотреть, что внутри. Часть из них прекрасно дополнит любой кластер Kubernetes, другие же помогут решить частные задачи, не реализованные в типовой поставке Kubernetes.

Читать дальше →
Всего голосов 16: ↑16 и ↓0+16
Комментарии2

Процессы разработки, или сколько стоит сделать сайт

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

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

— Ваш дом в аварийном состоянии, требуется реконструкция, - сказал прораб. — Мы протянем силовой кабель, чтобы запитать оборудование, выроем котлован, сделаем водоотведение, зальем фундамент…— Нет, нет! — прервал его владелец дома, — мне не нужен котлован, мне нужны стены! Дом!— В таком случае, может быть, Вы подумаете о покупке модульного дома? — предложил прораб. 

В прошлом месяце я общался со стартапом. У него есть работающий веб-сервис, который разные люди писали несколько лет, и теперь руководство думает что с ним делать. Основатели попросили составить список того, что я предлагаю им сделать

Читать далее
Всего голосов 7: ↑6 и ↓1+9
Комментарии9

Шпаргалка по Redis

Время на прочтение8 мин
Количество просмотров381K
Про Redis (официальный сайт, материалы на Хабре) написано много, но мне до сего дня не хватало материала, который послужил бы шпаргалкой по его практическому использованию, а так же справочником по базовым теоретическим моментам. Постараюсь заполнить этот пробел в богатой базе знаний Хабра.

Я поставил перед собой цель показать возможности Redis с помощью примеров кода. После публикации приму любые предложения по улучшению материала.

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

Ключи


Redis — хранилище данных в формате «ключ-значение». Факты о ключах:
  • Ключи в Redis — бинарно-безопасные (binary safe) строки.
  • Слишком длинные ключи — плохая идея, не только из-за занимаемой памяти, но так же и в связи с увеличением времени поиска определенного ключа в множестве в связи с дорогостоящим сравнением.
  • Хорошая идея — придерживаться схемы при построении ключей: «object-type:id:field».


Типы данных Redis


  • Строки (strings). Базовый тип данных Redis. Строки в Redis бинарно-безопасны, могут использоваться так же как числа, ограничены размером 512 Мб.
  • Списки (lists). Классические списки строк, упорядоченные в порядке вставки, которая возможна как со стороны головы, так и со стороны хвоста списка. Максимальное количество элементов — 232 — 1.
  • Множества (sets). Множества строк в математическом понимании: не упорядочены, поддерживают операции вставки, проверки вхождения элемента, пересечения и разницы множеств. Максимальное количество элементов — 232 — 1.
  • Хеш-таблицы (hashes). Классические хеш-таблицы или ассоциативные массивы. Максимальное количество пар «ключ-значение» — 232 — 1.
  • Упорядоченные множества (sorted sets). Упорядоченное множество отличается от обычного тем, что его элементы упорядочены по особому параметру «score».

Про типы данных Redis есть отдельная хорошая статья: «Структуры данных, используемые в Redis».
Читать дальше →
Всего голосов 47: ↑43 и ↓4+39
Комментарии16

Никто не умеет управлять программистами — и все придумывают костыли, вместо решений

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


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

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

Если коротко — все ещё хуже, чем выглядело со стороны.
Читать дальше →
Всего голосов 74: ↑46 и ↓28+37
Комментарии103

Пять промахов при развертывании первого приложения на Kubernetes

Время на прочтение8 мин
Количество просмотров7K
Fail by Aris-Dreamer

Многие считают, что достаточно перенести приложение на Kubernetes (либо с помощью Helm, либо вручную) — и будет счастье. Но не всё так просто.

Команда Mail.ru Cloud Solutions перевела статью DevOps-инженера Джулиана Гинди. Он рассказывает, с какими подводными камнями его компания столкнулась в процессе миграции, чтобы вы не наступали на те же грабли.
Читать дальше →
Всего голосов 35: ↑35 и ↓0+35
Комментарии2

Как спокойно спать, когда у вас облачный сервис: основные архитектурные советы

Время на прочтение6 мин
Количество просмотров7.2K
LOST by sophiagworld

В этой статье собраны некоторые общие шаблоны, помогающие инженерам работать с масштабными сервисами, к которым делают запросы миллионы пользователей. 

По опыту автора, это не исчерпывающий список, но действительно эффективные советы. Итак, начнем.

Переведено при поддержке Mail.ru Cloud Solutions.
Читать дальше →
Всего голосов 37: ↑37 и ↓0+37
Комментарии22

Путеводитель по репликации баз данных

Время на прочтение15 мин
Количество просмотров108K
Повторяться, но каждый раз по-новому – разве не это есть искусство?

Станислав Ежи Лец, из книги «Непричёсанные мысли»

Словарь определяет репликацию как процесс поддержания двух (или более) наборов данных в согласованном состоянии. Что такое «согласованное состояние наборов данных» – отдельный большой вопрос, поэтому переформулируем определение проще: процесс изменения одного набора данных, называемого репликой, в ответ на изменения другого набора данных, называемого основным. Совсем не обязательно наборы при этом будут одинаковыми.



Поддержка репликации баз данных – одна из важнейших задач администратора: почти у каждой сколько-нибудь важной базы данных есть реплика, а то и не одна.

Среди задач, решаемых репликацией, можно назвать как минимум

  • поддержку резервной базы данных на случай потери основной;
  • снижение нагрузки на базу за счёт переноса части запросов на реплики;
  • перенос данных в архивные или аналитические системы.

В этой статье я расскажу о видах репликации и о том, какие задачи решает каждый вид репликации.
Читать дальше →
Всего голосов 6: ↑5 и ↓1+7
Комментарии11

USB-флешки: заряжать нельзя игнорировать

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


В интернете прошла смута под названием «зачем заряжать флешку». На первый взгляд смешно, но предлагаю еще раз подумать и разобраться в вопросе. После прочтения этой статьи вы тоже начнете заряжать свои флешки.
Читать дальше →
Всего голосов 179: ↑171 и ↓8+215
Комментарии282

Vue Storefront: Импорт каталога из Magento 2

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

Наконец-то получилось увидеть данные из Magento (категории и продукты) в приложении Vue Storefront (VSF). Это уже четвёртая статья (1, 2, 3), в которой я описываю процесс изучения возможностей интеграции VSF с электронным магазином на базе Magento 2, и первая, где данные из Magento проскочили в браузер покупателя.


КДПВ


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

Читать дальше →
Всего голосов 3: ↑3 и ↓0+3
Комментарии0

Content Security Policy в Magento 2

Время на прочтение4 мин
Количество просмотров6.2K
Всем привет!

Наверняка вы, установив Magento 2.3.5 обнаружили в своих браузерных консолях что-то вроде

[Report Only] Refused to load the script '***' because it violates the following Content Security Policy directive: «script-src *». Note that 'script-src-elem' was not explicitly set, so 'script-src' is used as a fallback.



О том, что делать, расскажу под катом
Читать дальше →
Всего голосов 3: ↑3 и ↓0+3
Комментарии3

Создание интерфейса для игры

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

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

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




Читать дальше →
Всего голосов 14: ↑13 и ↓1+21
Комментарии28

13 инструментов для обработки текста в командной оболочке

Время на прочтение17 мин
Количество просмотров99K
Здесь представлен фрагмент будущей книги «Основные инструменты и практики для начинающего разработчика программного обеспечения» Бальтазара Рубероля и Этьена Броду. Книга должна помочь образованию подрастающего поколения разработчиков. Она охватит такие темы, как освоение консоли, настройка и эффективная работа в командной оболочке, управление версиями кода с помощью git, основы SQL, инструменты вроде Make, jq и регулярные выражения, основы сетевого взаимодействия, а также лучшие практики разработки программного обеспечения и совместной работы. В настоящее время авторы упорно работают над этим проектом и приглашают всех поучаствовать в списке рассылки.

Содержание


Читать дальше →
Всего голосов 46: ↑43 и ↓3+50
Комментарии65

Безопасность через ограничение пользователей или как создать уязвимость

Время на прочтение12 мин
Количество просмотров6.1K
В 2019 году выявили уязвимость CPDoS Cache Poisoned Denial of Service) на сети CDN, которая позволяет отравить HTTP кэш CDN провайдера и вызвать отказ в обслуживании. Много хайпа уязвимость пока не собрала, так как не была замечена в реальных атаках. Но об одном из способов отравления кэша хочется поговорить отдельно. HTTP Method Override.


Если другие варианты эксплуатации уязвимости так или иначе опираются на баги или особенности модификации запросов посредником, то в основе варианта Method Override лежит одноименная тактика, которая не является частью стандарта HTTP, несет вместе с собой дополнительные проблемы, и которая возникла и распространилась из-за небрежного отношения к безопасности. Вот ее мы и рассмотрим.
Читать дальше →
Всего голосов 6: ↑6 и ↓0+6
Комментарии2

Не New Relic’ом одним: взгляд на Datadog и Atatus

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


В среде SRE-/DevOps-инженеров никого не удивишь, что однажды появляется клиент (или система мониторинга) и сообщает, что «всё пропало»: сайт не работает, оплаты не проходят, жизнь — тлен… Как бы ни хотелось помочь в такой ситуации, сделать это без простого и понятного инструмента бывает очень сложно. Зачастую проблема скрыта в коде самого приложения — нужно лишь локализовать её.

И в горе, и в радости…


Так сложилось, что мы уже весьма давно и сильно полюбили New Relic. Он был и остаётся отличным средством для мониторинга производительности приложения, а также позволяет инструментировать микросервисную архитектуру (с помощью своего агента) и многое-многое другое. И всё могло быть замечательно, если бы не изменения в ценовой политике сервиса: его стоимость с 2013 года выросла в 3+ раза. Вдобавок, с прошлого года для получения trial-аккаунта требуется общение с персональным менеджером, что затрудняет презентацию продукта потенциальному заказчику.
Читать дальше →
Всего голосов 38: ↑37 и ↓1+36
Комментарии10

Информация

В рейтинге
Не участвует
Откуда
Abazë, Durres, Албания
Дата рождения
Зарегистрирован
Активность