Pull to refresh
82
0
Виктор Супрун @POPSuL

Разработчик

Send message

Почему валидации email регуляркой недостаточно. Проверка MX-записей с примерами на PHP и Ruby

Reading time3 min
Views9.7K
Уж сколько раз твердили Миру… Существует давний и, вероятно, нескончаемый спор о том, какой именно регуляркой правильно и нужно проверять поле email пользователя.

Да, проверять регуляркой действительно нужно. Но ведь наши продукты работают в Сети. Так почему бы не использовать её настоящую мощь?
Читать дальше →

Grid Layout как основа современной раскладки

Reading time15 min
Views37K
В темные века верстальщики строили сайты на таблицах. Потом они освоили float и flexbox, и тьма отступила. В 2017-м наступила эпоха Просвещения с приходом CSS Grid Layout.

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



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

Об этом расшифровка доклада Сергея Попова на Frontend Conf: про спецификацию, про то, почему верстальщики боятся Grid и как решиться применять сетку в своих проектах, чтобы «Make your website great again!».

Пишем собственную виртуальную машину

Reading time24 min
Views57K
В этом руководстве я расскажу, как написать собственную виртуальную машину (VM), способную запускать программы на ассемблере, такие как 2048 (моего друга) или Roguelike (моя). Если вы умеете программировать, но хотите лучше понять, что происходит внутри компьютера и как работают языки программирования, то этот проект для вас. Написание собственной виртуальной машины может показаться немного страшным, но я обещаю, что тема удивительно простая и поучительная.

Окончательный код составляет около 250 строк на C. Достаточно знать лишь основы C или C++, такие как двоичная арифметика. Для сборки и запуска подходит любая Unix-система (включая macOS). Несколько API Unix используются для настройки ввода и отображения консоли, но они не являются существенными для основного кода. (Реализация поддержки Windows приветствуется).

Примечание: эта VM — грамотная программа. То есть вы прямо сейчас уже читаете её исходный код! Каждый фрагмент кода будет показан и подробно объяснён, так что можете быть уверены: ничего не упущено. Окончательный код создан сплетением блоков кода. Репозиторий проекта тут.
Читать дальше →

Как усилить защищенность веб-приложений при помощи HTTP заголовков

Reading time18 min
Views33K
image

Это третья часть серии по веб-безопасности: вторая часть была «Web Security: введение в HTTP», первая "Как работают браузеры — введение в безопасность веб-приложений".

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

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

Как и зачем красть деревья в git

Reading time15 min
Views28K

trees


В этой статье я расскажу об одном полезном, но малоизвестном приеме работы с git — как можно легко создать коммит, используя дерево из другого коммита. Проще говоря, как получить нужное состояние проекта на какой-либо ветке, если это состояние уже когда-то и где-то было в репозитории раньше. Будет приведено несколько примеров того, как это позволяет элегантно решать некоторые практические задачи. И в частности я расскажу о найденном мной методе, который позволяет значительно упростить исправление множественных конфликтов при rebase. Кроме того, эта статья — отличный способ понять на практике, что из себя представляет коммит в git-е.

Читать дальше →

Анонимный Дед Мороз 2018-2019: пост хвастовства новогодними подарками

Reading time1 min
Views16K
Логотип АДМ 2018

Анонимный Дед Мороз 2018-2019 набирает обороты: каждый пятый участник отметил подарок отправленным, а несколько человек даже нашли в себе силы встать из-за компьютера и забрать посылку на почте.

Что же именно дарят Хабравчане своим Хабравнукам, Хабравнучкам и тем, кто не заполняет поле «Пол» в Хабрапрофиле? Давайте зайдем в комментарии и все у них разузнаем!

С НАСТУПАЮЩИМ НОВЫМ 2019 ГОДОМ!

Ваши iCTPEJlOK и kafeman

Исследование: 22% пользователей Tumblr ходят на сайт для просмотра порно, особенно молодые девушки

Reading time3 min
Views44K

Распределение по возрасту разных групп производителей и потребителей порноконтента на Tumblr (вверху) и Flickr (внизу). Указан средний возраст, медианный возраст, стандартное отклонение и доля несовершеннолетних пользователей (до 18 лет). Источник: научная статья «Потребление порнографии в социальных медиа», опубликованная в журнале Proceedings of the 10th International AAAI Conference on Web and Social Media. ICWSM 2016, arXiv:1612.08157v2

Многие пользователи социальной сети Tumblr уже знают, что с 17 декабря 2018 года сайт запрещает публиковать порно на своей платформе. Владельцы сайта думают, что таким образом получат более качественный контент: см. сообщение в блоге «Лучший, более позитивный Tumlr». Но некоторые специалисты считают, что такими действиями Tumblr фактически рубит сук, на котором сидит — и это может стать началом конца социальной сети, которая традиционно обслуживает любителей «клубнички» и в значительной степени отождествляется с порно.
Читать дальше →

Форкни это: 8 проектов на Go, в исходном коде которых интересно покопаться

Reading time4 min
Views22K
Мы в Binary District проводим интенсивы по Go. За два дня можно научиться понимать идеологию и внутренности Go, писать чистый тестируемый код. Но это первый шаг, а дальше — практика, практика, практика: читать чужой код, писать и править свой.

Для этого идеально подходит open source:

  • Open source повышает насмотренность. Можно невозбранно изучать исходники.
  • Open source дает стимул писать максимально чистый код и документировать логику.
  • Вклад в open source движение улучшает карму.



Вместе с выпускником нашего Go-курса Сергеем Tolsi мы составили список открытых проектов разного уровня и направленности, которые подходят, чтобы учиться писать хороший код и заодно делать мир лучше.
Читать дальше →

Реальная скорость Wi-Fi (на предприятиях)

Reading time11 min
Views45K
Непрекращающийся хайп вокруг гигабитных скоростей Wi-Fi современных стандартов провоцирует инженеров прояснять эту тему понятным для всех образом.
Что пытаются натянуть за уши маркетологи? Что говорят инженеры? Где же истина?
Как всегда, где-то рядом. Какой пропускной способности ожидать в реальных условиях и почему – вы найдете ответ в этой статье. Если совсем нет времени читать, а хочется знать волшебную цифру – 75 Мбит/c на двухдиапазонную точку доступа, на всех. Кому интересны детали, читайте дальше.


Читать дальше →

Готовим идеальный CSS

Reading time13 min
Views59K
Привет, Хабр!

Не так давно я понял, что работа с CSS во всех моих приложениях — это боль для разработчика и пользователя.

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

Read more →

Горячие клавиши ctrl+shift+[key] и переключение языков по ctrl+shift (решено)

Reading time1 min
Views27K
Проблема: При настройке переключения раскладок на ctrl+shift горячие клавиши вида ctrl+shift+ отказываются работать.
Оказывается совсем недавно (буквально месяц назад) Илья Муравьев написал патч, исправляющий данное недоразумение. Суть сводится к тому что переключение языка после патча срабатывает не на нажатие, а на отпускание кнопок ctrl+shift.

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

Введение в ptrace или инъекция кода в sshd ради веселья

Reading time9 min
Views15K


Цель, которой я задался, была весьма проста: узнать введённый в sshd пароль, используя ptrace. Конечно, это несколько искусственная задача, так как есть множество других, более эффективных, способов достичь желаемого (и с гораздо меньшей вероятностью получить SEGV), однако, мне показалось клёвым сделать именно так.
Читать дальше →

Сравнение скриптов для сбора информации о поддоменах

Reading time2 min
Views7.2K

Всем привет!


Хочу поднять тему сбора поддоменов в рамках OSINT. Существует довольно большое количество тулзов для автоматизации этой задачи. Расскажу о тех с которыми сталкивался я. В качестве целевого домена использован group-ib.ru.

Читать дальше →

GeoPuzzle — собери мир по кусочкам

Reading time11 min
Views17K
image

Хочу рассказать о проекте, который развивал последние пару лет. Называется он GeoPuzzle и представляет собой игру-паззл на политической карте мира. Цель — расставить кусочки-страны на свои места. Идея подсмотрена в статье «Головоломка Mercator для знатоков географии», также в детстве играл в тетрис из стран (ещё под DOS), но название программы уже не припомню. Я был настолько вдохновлён идеей, что захотел сделать полноценный продукт, интересный не только школьникам, но и знатокам географии. За развитием проекта можно наблюдать на GitHub.
Читать дальше →

Радиоактивные предметы среди нас

Reading time9 min
Views108K

Длинный пролог


13 сентября 1987 года в жарком бразильском городе Гойяния произошла мелкая кража. Двое мужчин по имени Роберто Алвес и Вагнер Перейра, воспользовавшись отсутствием охраны, пробрались в заброшенный больничный корпус. Разобрав на металлолом странную медицинскую установку, они погрузили детали в тачку и покатили ее домой к Алвесу. Никто не знал, что это начало самого пугающего инцидента с радиоактивными материалами в гражданской сфере.

Да, сотрудники Гойянского Института радиотерапии были в курсе, что при переезде в новое здание установленный в 1977 году громоздкий аппарат лучевой терапии остался на прежнем месте. Но собственник здания открыл имущественный спор с организацией. В дело вступили страховщики, при поддержке полиции запретившие вывозить оставшееся оборудование. На это один из совладельцев Института, Карлос Фигуеиредо Безеррил, только сказал напоследок, что на президенте страховой компании Лисио Боргесе будет лежать ответственность за то, что произойдет с «цезиевой бомбой».
Читать дальше →

Protobuffers — это неправильно

Reading time10 min
Views57K
Значительную часть своей профессиональной жизни я выступаю против использования Protocol Buffers. Они явно написаны любителями, невероятно узкоспециализированы, страдают от множества подводных камней, сложно компилируются и решают проблему, которой на самом деле нет ни у кого, кроме Google. Если бы эти проблемы протобуферов остались в карантине абстракций сериализации, то мои претензии на этом и закончились бы. Но, к сожалению, плохой дизайн Protobuffers настолько навязчив, что эти проблемы могут просочиться и в ваш код.

Узкая специализация и разработка любителями

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

Давай просто не будем обсуждать эту тему. Полное раскрытие: мне доводилось работать в Google. Это было первое (но, к сожалению, не последнее) место, где я когда-либо использовал Protobuffers. Все проблемы, о которых я хочу поговорить, существуют в кодовой базе Google; это не просто «неправильное использование протобуферов» и тому подобная ерунда.
Читать дальше →

Написание собственной работоспособной ОС за полгода

Reading time4 min
Views90K
image

Предыстория


Здравствуйте! Всех категорически приветствую, сегодня хотел бы рассказать Вам о своём опыте написание работоспособной ОС под архитектуру x86.

Как-то весенней ночью у меня родилась гениальная идея — попробовать себя в написании собственной ОС, которая может позволить запускать программы, работать с устройствами, да и в общем выжимать всю мощь из Intel'овской архитектуры в своих нуждах: к примеру, для своей фабрики или чего-либо иного. Моей целью было и есть написание такой ОС, которая могла бы позволить максимальную производительность для каких-то конкретных задач, не тратя процессорное время на всяческие излишества. В основном я преследую лишь спортивный интерес, получение опыта для себя в системном программировании и написания драйверов для устройств, которые используются повсеместно. Что из этого вышло — решать вам, сразу говорю, что не надо писать комментарии про создание собственного дистрибутива линукса, и преследовал интерес написать всё «From scratch» — с нуля, дабы хорошо погрузиться в тему ОСдева. Сразу хочу выразить огромную благодарность Бенджамину Лунту и форуму OSDev, так же как их Вики. Бен помог мне разобраться с EHCI, что несомненно внесло огромный вклад в мою ОС — USB устройства, они везде! Так же передо мной стояла задача создать собственную архитектуру, удобную мне, не исключая использование стандартов ELF-файлов.
Читать дальше →

Сдвиг частот для SDR-радиоприемника — Ham it up v1.2 upconverter

Reading time2 min
Views51K
Некоторое время назад я писал об универсальных радио-приемниках за 20$ из TV-тюнеров на rtl2832. Самым большим их недостатком было то, что они не могут принимать ничего ниже 50Мгц (e4000 — не работает ниже 50Мгц, R820T — ниже 24Мгц), а в этом диапазоне — 3/4 всего интересного, что можно услышать в радиоэфире за счет того, что короткие волны отражаются от ионосферы — и дальность связи уже не ограничена прямой видимостью.

Устранить этот недостаток можно добавив к нему конвертор частоты. Сделать качественный (со всеми фильтрами) конвертер своими руками — достаточно сложно и дорого, потому пришлось купить готовый: Ham-it-up v1.2 c кварцем на 125Мгц (42.95$, из США шло чуть дольше месяца). Краткие результаты тестирования и несколько хитростей для успешного приема на коротких волнах — под катом.
Читать дальше →

Текстовый редактор — это вам не высшая математика, тут думать надо

Reading time17 min
Views98K
Современные текстовые редакторы умеют не только бибикать и не давать выйти из программы. Оказывается, внутри них кипит очень сложный метаболизм. Хотите узнать, какие ухищрения предпринимаются для быстрого пересчета координат, как к тексту приделываются стили, фолдинги и софтврапы и как это всё обновляется, при чем тут функциональные структуры данных и очереди с приоритетами, а также как обманывать пользователя — добро пожаловать под кат!



В основе статьи — доклад Алексея Кудрявцева с Joker 2017. Алексей уже лет 10 пишет Intellij IDEA в JetBrains. Под катом вы найдете видео и текстовую расшифровку доклада.
Читать дальше →

Science Art и звук: 4 впечатляющих проекта

Reading time4 min
Views5.2K
Давно хотелось сделать цикл, посвященный акустическому Science Art. Мы периодически касались темы на страницах этого блога, но, как правило, вскользь, теперь же появилось желание писать об этом системно. Этот обзор расскажет о четырех Science Art проектах, так или иначе связанных со звуком, наиболее впечатливших меня за последние несколько лет.



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

Information

Rating
8,784-th
Location
Южно-Сахалинск, Сахалин, Россия
Date of birth
Registered
Activity

Specialization

Backend Developer, DevOps
Senior
From 3,500 $
Git
PHP
Nginx
Golang
Linux