Как стать автором
Обновить
8
Карма
0
Рейтинг
Станислав Гамаюнов @happyproff

Веб-разработчик

  • Публикации
  • Комментарии

Как в PHP улучшить читаемость регулярных выражений

Mail.ru GroupPHPАлгоритмыРегулярные выражения
Перевод
Tutorial

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

PHP использует диалект регулярных выражений PCRE — до версии PHP 7.3, и PCRE2 — в более новых версиях. Поэтому в PHP можно использовать различные продвинутые приемы, помогающие писать читаемые, самодокументируемые и поддерживаемые регулярные выражения. При этом не надо также забывать и о наличии в PHP функций фильтрации переменных, а также семейства функций ctype*, позволяющих валидировать такие распространенные значения как url-ссылки, адреса электронной почты и строки из букв и цифр — вообще без использований регулярный выражений. Во многих IDE есть подсветка регулярных выражений, помогающая их читать, а иногда даже и проверка выражений, с подсказками по их улучшению.

Читать далее
Всего голосов 37: ↑35 и ↓2 +33
Просмотры4.6K
Комментарии 14

Новости

Показать еще

Вышел .NET 5. И что?

КонтурПрограммирование.NETC#

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


image

Читать дальше →
Всего голосов 44: ↑44 и ↓0 +44
Просмотры37.8K
Комментарии 100

C# vs Kotlin

Java.NETРазработка мобильных приложенийC#Kotlin

Когда речь заходит о сахаре и модных фичах в языках программирования, среди первых вариантов в уме всплывают C# и Kotlin. Поскольку эти два языка занимают схожие ниши, то есть, строго типизированы, обладают сборкой мусора, кроссплатформенны, применяются как на бекенде, так и в мобильной разработке, то сегодня мы попытаемся сравнить их синтаксические возможности. Чтобы сравнение прошло честно, будем рассматривать последние версии обоих языков, а в конце нас ждет небольшой опрос, который и определит победителя. Оговорюсь о своей непредвзятости: мне одинаково нравятся оба языка, они находятся в непрерывном развитии и не отстают друг от друга. Эта статья является сравнительной, а не обучающей, поэтому некоторые заурядные синтаксические возможности могут быть опущены.

Поехали
Всего голосов 18: ↑14 и ↓4 +10
Просмотры8.6K
Комментарии 95

Functional C#: Non-nullable reference types (ненулевые ссылочные типы)

Программирование.NETC#ООПФункциональное программирование
Третья статья в серии «Функциональный C#».

Читать дальше →
Всего голосов 17: ↑14 и ↓3 +11
Просмотры17.4K
Комментарии 12

Null, великий и ужасный

Программирование.NETПроектирование и рефакторингC#ООП

Ошибка дизайна


Именно так и никак иначе: null в C# — однозначно ошибочное решение, бездумно скопированное из более ранних языков.


  1. Самое страшное: в качестве значения любого ссылочного типа может использоваться универсальный предатель — null, на которого никак не среагирует компилятор. Зато во время исполнения легко получить нож в спину — NullReferenceException. Обрабатывать это исключение бесполезно: оно означает безусловную ошибку в коде.
  2. Перец на рану: сбой (NRE при попытке разыменования) может находится очень далеко от дефекта (использование null там, где ждут полноценный объект).
  3. Упитанный пушной зверек: null неизлечим — никакие будущие нововведения в платформе и языке не избавят нас от прокаженного унаследованного кода, который физически невозможно перестать использовать.

Этот ящик Пандоры был открыт еще при создании языка ALGOL W великим Хоаром, который позднее назвал собственную идею ошибкой на миллиард долларов.

На самом деле все не так плохо
Всего голосов 56: ↑45 и ↓11 +34
Просмотры112.2K
Комментарии 290

Как «готовить» nullable reference types с добавлением appsettings.json

Совершенный код.NETC#
В данной статье хочу поделиться своими размышлениями о том, можно ли на современном C# писать код, безопасный от NullReferenceException. Этот зловредный тип исключения не говорит разработчику, в каком конкретно месте у него null. Конечно, от отчаяния можно?.начать?.писать?.обращение?.ко?.всем?.полям?.вот?.так?.вот, но есть адекватное решение — использовать аннотации типов от JetBrains или Microsoft. После этого компилятор начнет нам подсказывать (и «подсказывать» очень настойчиво, если включить опцию WarningsAsError), в каком конкретно месте нужно добавлять соответствующую проверку.

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


Читать дальше →
Всего голосов 16: ↑14 и ↓2 +12
Просмотры4.1K
Комментарии 22

Сохраняем музыку на C#

Программирование.NETВКонтакте APIC#
Из песочницы
image
В 2020ом мы пользуемся разными музыкальными сервисами, но как реликт ушедшей эпохи, в забытом профиле ВК, у многих хранится музыка. Функции для загрузки нет, но что если позарез нужно спасти аудиозапись?
Поскольку такого софта в открытом доступе не обнаружилось, кроме парочки веб-сервисов требующих авторизацию через ВК (что не очень то и безопасно), под катом мы рассмотрим процесс создания self-hosted утилиты на современном C# для загрузки своих аудио, не сливающей данные профиля сторонним сервисам.
Читать дальше →
Всего голосов 15: ↑13 и ↓2 +11
Просмотры6.8K
Комментарии 38

Какой язык программирования учить в 2020-м?

JUG Ru GroupУчебный процесс в ITКарьера в IT-индустрииИзучение языков

Статей с подобными заголовками существует уже множество. Но в них постоянно какая-то дичь! Смотрите, Google ещё до основных результатов советует такое:



HCL, Карл! Язык, который не просто очень далёк от «Самых Популярных», но ещё и создан для конфигурации, так что его вообще странно ставить в один ряд с языками общего назначения. Страшно представить приключения новичка, который решит строить карьеру по таким советам. Начнём с того, что по запросу «как выучить HCL» вместо туториалов по языку вылезают тексты о соляной кислоте.


Это только одна из многих дикостей, которые я встретил в подобных текстах. Поэтому захотелось объяснить, что с ними не так — и написать собственный текст получше, ссылку на который можно кидать начинающим. Конечно, аудитории Хабра информация для начинающих не очень требуется, зато хабравчане могут дополнить текст в комментариях, сделав его ещё полезнее.

Читать дальше →
Всего голосов 146: ↑131 и ↓15 +116
Просмотры164.1K
Комментарии 486

Как найти удаленную работу в зарубежной компании. 10 шагов

gms & g-mateКарьера в IT-индустрииЛайфхаки для гиковУдалённая работа


Каждый год Оксфордский словарь английского языка выбирает «Слово года». Но в 2020-м что-то пошло не так. Издательство Оксфордского университета описало 2020-й как «год, который лишил нас дара речи», и сказало, что к нему невозможно подобрать правильное слово.


Но на наш взгляд, такое слово всё-таки есть. С прошлого марта в мире резко возросло использование слова «удаленно». Большинство предприятий отошли от традиционной модели офисной работы и стали пытаться организовать труд сотрудников из дома. Для разработчиков из СНГ это прекрасная возможность начать работу в лучших мировых компаниях. Зарплаты за рубежом выше, а возможностей сейчас стало больше, чем когда-либо прежде.


Мы постоянно исследуем рынок. Публикуем сотни вакансий ежедневно. И сейчас 40% выручки получаем от иностранных компаний, которые в основном нанимают программистов для удаленной работы.


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

Читать дальше →
Всего голосов 32: ↑30 и ↓2 +28
Просмотры24.1K
Комментарии 16

Автоматическая проверка кода за 5 минут

PHPSymfonyYiiLaravel
Из песочницы
Данная инструкция показывает как автоматизировать проверку на code style в вашем php проекте.

Давайте посмотрим как будет выглядеть настройка в новом проекте.
Читать дальше →
Всего голосов 7: ↑7 и ↓0 +7
Просмотры2.6K
Комментарии 1

Идеальный бэкап за пять минут с ZFS

МаклаудХостингИнформационная безопасностьСерверное администрированиеРезервное копирование


Приветствуем в блоге компании «Маклауд»!
Сегодня мы поговорим о том, о чём должен помнить каждый — про бэкапы.

Программисты уже давно стараются использовать серьёзные production-ready решения для сохранения личных данных. Требования к инструментам растут, и если когда-то было принято держать домашние файлы на NAS и перекачивать снапшоты сервера через Rsync, то сейчас на передовой гораздо более сложные и функциональные проекты. Один из них — возможно, самый перспективный и мощный — файловая система ZFS. Оставив конкурента (btrfs) далеко позади и отстояв право на опен-сорс, она активно применяется как в хайлоаде, так и в личных системах хранения. Далее мы разберём её основные аспекты и за несколько минут поднимем рабочую систему бэкапа на удалённой VPSке. Поехали!
Читать дальше →
Всего голосов 39: ↑35 и ↓4 +31
Просмотры11.8K
Комментарии 52

Устройство поисковых систем: базовый поиск и инвертированный индекс

Поисковые технологииПрограммированиеАнализ и проектирование системАлгоритмыRust

Под капотом почти каждой поисковой строки бьется одно и то же пламенное сердце — инвертированный индекс. Именно инвертированный индекс принимает текстовые запросы и возвращает пользователю список документов, а пользователь смотрит на всё это дело и радуется котиками, ответам с StackOverflow и страничкам на вики.

В статье описано устройство поиска, инвертированного индекса и его оптимизаций с отсылками к теории. В качестве подопытного кролика взят Tantivy — реализация архитектуры Lucene на Rust. Статья получилась концентрированной, математикосодержащей и несовместимой с расслабленным чтением хабра за чашкой кофе, осторожно!
Читать дальше →
Всего голосов 37: ↑37 и ↓0 +37
Просмотры9.9K
Комментарии 6

Защищали ли кольчуги рыцарей?

Научно-популярное

Автор: Azirsan

В жизни каждого современного человека бывает момент, когда, проснувшись утром, он вдруг понимает, что сейчас XII век, нужно освобождать Святую Землю, да и неплохо было бы валлийцев привести к покорности. Узнали, знакомо? Откуда возникает очевидный вопрос, а защитит ли в этом ответственном деле нас доспех? Вот эту тему мы и будем разбирать. Причем разбирать мы будем с двух точек зрения: аутентичных источников и современных тестов экспериментальной археологии. Поскольку это заметка, а не научная статья, то, возможно, возникнет множество вопросов, которые я не смог затронуть, в силу формата – в квадратных скобках будут приводиться источники, если захотите углубиться в вопрос. Или же можете эти цифры просто игнорировать.

Читать далее
Всего голосов 219: ↑196 и ↓23 +173
Просмотры50.5K
Комментарии 196

Делаем вечную лампочку

LampTestГаджеты
На упаковках светодиодных ламп указывают срок службы 30, 40 или 50 тысяч часов, но многие лампочки не живут и года.

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

Читать дальше →
Всего голосов 243: ↑238 и ↓5 +233
Просмотры266.4K
Комментарии 361

Коротко о Shadowsocks, или OpenVPN не нужен (в каждом доме)

Системное администрирование
Из песочницы
В наши дни, когда всякие нехорошие элементы так и норовят влезть в ваш трафик и как-то там напакостить, стало модным шифрование трафика. Начинание это благое и полезное, вот только делают его зачастую избыточно. Если шифрование трафика до доверенного сервера, типа своего VPS, — ваша единственная цель, то OpenVPN для такой цели слишком наворочен. Его долго настраивать, легко обнаружить, а главное — есть подводные камни, не зная которых можно получить такую ситуацию, что VPN стоит, а трафик идёт в обход. Всё это потому, что OpenVPN задумывался больше как средство доступа к маленькой сети через Интернет, а не для доступа ко всему Интернету.
Читать дальше →
Всего голосов 56: ↑55 и ↓1 +54
Просмотры109.5K
Комментарии 74

Скрипт удаляет «неудаляемые» мусорные приложения Android

Open sourceРазработка под AndroidСмартфоныСофт


На Хабре уже публиковались инструкции, как удалить со смартфона «неудаляемый» мусор, который туда добавляют производители и операторы сотовой связи. Для этого не требуются рутовые права. Все операции можно выполнить вручную, подключив смартфон к компьютеру по ADB. Подробнее см. статью «Как удалить «неудаляемые» приложения со смартфона».

Сейчас на Gitlab опубликован универсальный bash-скрипт Universal Android Debloater, который автоматизирует большинство операций на большинстве популярных моделей смартфонов.
Читать дальше →
Всего голосов 44: ↑43 и ↓1 +42
Просмотры57.8K
Комментарии 37

Владельцы MAPS.ME отменили изменения и вернули старое приложение. Надолго ли?

VDSina.ruOpen sourceOpenStreetMapГеоинформационные сервисыСофт

Слева — старое приложение, справа — декабрьская версия от южнокорейцев. Источник: «Смерть MAPS.ME?»

В ноябре 2020 года Mail.Ru Group продала MAPS.ME южнокорейской компании Daegu Limited (входит в состав платёжной системы Parity.com), и уже 20 декабря 2020 года новые владельцы выпустили обновление, которое практически убило приложение.

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

К счастью, новые владельцы осознали глубину своей ошибки и откатили изменения. В апдейте от 30 декабря 2020 года восстановлена вся функциональность. Казалось бы, победа? Справедливость восторжествовала? Нет, в это слабо верится.
Читать дальше →
Всего голосов 70: ↑63 и ↓7 +56
Просмотры32.6K
Комментарии 55

Шуховский гиперболоид вращения

Mail.ru GroupНаучно-популярное


Почти 94 года назад началось широкое радиовещание с одного из инженерных шедевров того времени — радиобашни, построенной в Москве по проекту Владимира Григорьевича Шухова. Талантливейший инженер, к тому времени уже ставший академиком, возведший множество сложных сооружений по всей стране, Владимир Григорьевич воплотил в своей башне замечательную идею — выполнил несущую конструкцию в виде гиперболоида вращения. Высокая прочность, ветровая устойчивость, дешевизна производства и простота возведения, помноженные на визуальную легкость и изящество башни, по праву сделали ее одним из символов инженерно-архитектурного мастерства. И хотя Шухов спроектировал и построил немало более сложных и совершенных объектов, именно башня стала самым известным его творением.


Читать дальше →
Всего голосов 47: ↑45 и ↓2 +43
Просмотры26K
Комментарии 45

Лучшие практики при написании безопасного Dockerfile

Swordfish SecurityИнформационная безопасностьСистемное администрированиеDevOps

В данной статье мы рассмотрим небезопасные варианты написания собственного Dockerfile, а также лучшие практики, включая работу с секретами и встраивание инструментов статического анализа. Тем не менее для написания безопасного Dockerfile наличия документа с лучшими практиками мало. В первую очередь требуется организовать культуру написания кода. К ней, например, относятся формализация и контроль процесса использования сторонних компонентов, организация собственных Software Bill-of-Materials (SBOM), выстраивание принципов при написании собственных базовых образов, согласованное использование безопасных функций, и так далее. В данном случае отправной точкой для организации процессов может служить модель оценки зрелости BSIMM. Однако в этой статьей пойдет речь именно о технических аспектах.

Читать далее
Всего голосов 77: ↑75 и ↓2 +73
Просмотры20.9K
Комментарии 20

Необычный вариант вечернего освещения в комнате

Лайфхаки для гиков

Поздним вечером, когда хочется очень теплого, но яркого света - невольно вспоминаешь о светодиодах.

Про пары ртути далее
Всего голосов 43: ↑42 и ↓1 +41
Просмотры37.7K
Комментарии 115

Информация

В рейтинге
5,769-й
Откуда
Екатеринбург, Свердловская обл., Россия
Дата рождения
Зарегистрирован
Активность