Pull to refresh
15
0
Михаил Щербаков @yu5k3

Пользователь

Send message

Как мы поучаствовали в ICFPC 2021 и что из этого вышло

Reading time18 min
Views2.2K

Одна старая академическая конференция, International Conference on Functional Programming, уже больше двадцати лет организует соревнование по программированию своего имени. 1 задание, 72 часа, участвуют команды произвольного размера. На этом ограничения все. Задача может быть любой, решения — тем более.

Вас могут заставить писать ботов для игр или управлять марсоходом. Реализовывать виртуальные машины или разворачивать оригами. Искать кратчайшие маршруты в лабиринтах или разгадывать послания инопланетян. А в этом году мы пропихивали человечков в лямбды и клали песиков в гробы.

Под катом обзор контеста 2021 года и нашего участия в нем. А еще алгоритмы, теории, байки и разбор решений других команд.

Читать далее
Total votes 13: ↑13 and ↓0+13
Comments2

Поработать в Швеции

Reading time8 min
Views82K

Несколько лет назад я внезапно получил звонок от рекрутера с предложением поработать в Швеции в “хорошо финансируемом стартапе” (забавно, что моё резюме он нашёл на Odesk, где у меня давно был профиль, но ни одного завершённого проекта). Надо вам сказать, что в этой стране мне уже приходилось работать ранее, правда, находясь в затяжной командировке, как работник российской компании, потому неплохое представление о жизни в Швеции у меня уже было. С тех пор я обзавёлся детьми, и потому многие реалии шведской жизни мне предстояло открывать для себя впервые.

Читать дальше →
Total votes 115: ↑113 and ↓2+111
Comments247

Стриминг видео через браузер со сверхнизкими задержками (и WebRTC!)

Reading time4 min
Views8.5K

Пока первые early adopters примеряют в свои проекты наши новые видеоконференции (до 100 человек!) мы продолжаем рассказывать об интересном из мира передачи голоса и видео с участием браузера. Про видеоконференции тоже расскажем, но позже — когда накопится критическая масса пользователей и соберется интересная статистика. А сейчас я перевел и адаптировал для нас рассказ Dr. Alex о месте разных протоколов при передаче видео с низкими задержками. Рассказ по сути является ответом на другую статью, и автор вместе с рассказом указывает на ошибки и неточности, которые допустили его коллеги по цеху.
Читать дальше →
Total votes 21: ↑18 and ↓3+15
Comments11

Топ-10: лучшие доклады DotNext 2017 Moscow

Reading time12 min
Views9K

Привет, Хабр! В апреле мы официально выложили в открытый доступ лучшие видеозаписи с DotNext 2017 Moscow. В результате получился плейлист из 25 докладов. Просто напомню здесь об этом магическом плейлисте.


Я сейчас отсматриваю самые интересные видео и приглашаю присоединиться! Чтобы было легче влиться в просмотр записей конференции, под катом вас ждут короткие заметки о десяти докладах, которые получили наивысшие оценки от посетителей прошлого DotNext. Если из 25 штук вы чувствуете себя в силах посмотреть всего несколько докладов, смело выбирайте из этого списка.


Формально, чем ниже по списку, тем выше рейтинг. Но тут есть важное уточнение: все доклады из первой десятки имеют очень-очень высокий рейтинг, и их точное положение сильно зависит от нюансов подсчета. Например, если использовать soft quorum, то кейноут Андрея Акиньшина про перформанс-тестирование обгонит доклад Саши Гольдштейна про отладку и профилирование на Linux. Иначе говоря, смотрите всё :-)


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


Читать дальше →
Total votes 35: ↑32 and ↓3+29
Comments0

Книга «Хакинг: искусство эксплойта. 2-е изд.»

Reading time14 min
Views34K
image Каждый программист по сути своей — хакер. Ведь первоначально хакингом называли поиск искусного и неочевидного решения. Понимание принципов программирования помогает находить уязвимости, а навыки обнаружения уязвимостей помогают создавать программы, поэтому многие хакеры занимаются тем и другим одновременно. Интересные нестандартные ходы есть как в техниках написания элегантных программ, так и в техниках поиска слабых мест.

С чего начать? Чтобы перезаписывать память с помощью переполнения буфера, получать доступ к удаленному серверу и перехватывать соединения вам предстоит программировать на Си и ассемблере, использовать шелл-код и регистры процессора, познакомиться с сетевыми взаимодействиями и шифрованием и многое другое.

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

Мир без хакеров — это мир без любопытства и новаторских решений. (Джон Эриксон)
Читать дальше →
Total votes 10: ↑10 and ↓0+10
Comments5

Прокачиваем производительность C# с Федерико Луисом

Reading time19 min
Views25K

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


В качестве прототипа статьи был выбран доклад Федерико Луиса, основателя компании Corvalius (они занимаются R&D). Работая над движком базы данных для одного из клиентов, они посвятили около четырёх лет задачам оптимизации. Такое количество времени требуется для того, чтобы применить разного рода техники и достичь хороших показателей оптимизации. Требуется выявить все проблемы и узкие места, проследить поведение софта в соответствии со всеми имеющимися метриками и так далее. Примеры из этой статьи основаны на работе над RavenDB 4.0 (известная NoSQL база для .NET), которую компания Федерико тюнила до уровня наносекунд во всевозможных сложных кейсах.


Все примеры, которые встретятся вам в ходе рассказа (плюс некоторые дополнительные), доступны в специальном репозитории на GitHub.


Осторожно, трафик! В этом посте присутствует огромное количество картинок — слайдов и скриншотов с видео в формате 720p. На слайдах присутствует важный для понимания статьи код.

Читать дальше →
Total votes 46: ↑41 and ↓5+36
Comments0

Четыре факта о memcached-амплификации

Reading time6 min
Views6.4K

Это перевод оригинальной публикации Артема ximaera Гавриченкова «Understanding the facts of memcached amplification attacks», опубликованной в блоге APNIC (Азиатско-Тихоокеанский сетевой информационный центр).

Неделя с 25 февраля по 3 марта была высокоинтенсивной с точки зрения memcached-амплифицированных DDoS-атак во всех уголках мира, то есть в интернете.

Тем не менее, давайте еще раз вспомним все факты, которые нам известны об амплифицированных атаках.

Факт номер один: Амплификаторы были, есть и будут есть


NTP (Network Time Protocol) был первым протоколом, злонамеренно использованным в качестве амплификатора (усилителя) DDoS-атак еще в 2013 году. Тысячи и сотни тысяч NTP-серверов к тому моменту были развернуты по всей сети, так что использование данного вектора амплификации было вполне выгодно злоумышленникам. И NTP давал такую возможность, что вылилось в волну амплифицированных NTP DDoS-атак. В начале 2014 года на какое-то время NTP в качестве главного амплификатора стал даже популярнее протокола DNS (Domain Name System).
Total votes 40: ↑40 and ↓0+40
Comments1

Случайные эволюционные стратегии в машинном обучении

Reading time8 min
Views17K
Нейронные сети учатся совсем не так как люди. Оптимизация нейронной сети — на самом деле градиентный спуск по некоторой функции потерь $E(\theta)$, где переменными являются веса слоёв $\theta$. Это очень мощный подход к подстройке системы, который применяется также в физике, экономике и многих других областях. На данный момент предложено немало конкретных методов градиентного спуска, но все они предполагают, что градиент $E(\theta)$ хорошо себя ведёт: нет обрывов, где он скачкообразно возрастает, или плато, где он обращается в ноль. С первой проблемой можно разобраться при помощи gradient clipping, но вторая заставляет тщательно подумать. Кусочно-линейную или дискретную функцию нетривиально ограничить более приятной функцией


Как поступать в таких ситуациях?

Под катом много формул и гифок.
Читать дальше →
Total votes 48: ↑48 and ↓0+48
Comments15

ASP.NET Core: Механизмы предотвращения атак 2.0

Reading time20 min
Views24K

По встроенным механизмам безопасности ASP .NET Core написано мало статей. Даже официальная документация имеет пробелы. В этой статье мы пройдём по всем основным компонентам, имеющим отношение к безопасности, и разберём, как это работает внутри.


Если вы используете старый добрый ASP .NET, то для вас будет полезна информация по внутреннему устройству компонентов безопасности и лучшим практикам их использования. Здесь вы найдёте ответы на следующие вопросы: как реализованы современные анти-XSS механизмы и как их правильно использовать в ASP .NET Core? Как правильно работать с cookies и какие подводные камни там могут встретиться? Как был переписан механизм защиты от CSRF? Как правильно работать с криптографическими алгоритмами? Кроме того, рассказывается про опыт участия в Bug Bounty по поиску уязвимостей в ASP .NET Core.


Перед чтением рекомендуется освежить в памяти атаки из списка OWASP Top 10.


Прототипом статьи является доклад Михаила Щербакова на конференции DotNext 2017 Moscow. Михаил — Microsoft .NET MVP, участник .NET Core Bug Bounty Program, соорганизатор сообщества .NET программистов (Московское комьюнити называется MskDotNet, питерское — SpbDotNet). По работе последние 5 лет занимается безопасностью. Работал в Positive Technologies, в Cezurity, сейчас как консультант работает напрямую с заказчиками, по большей части в этой же сфере. Профессиональные интересы: статический и динамический анализ кода, информационная безопасность, автоматизация отладки кода, исследование внутреннего устройства .NET CLR.


В этом тексте огромное количество картинок со слайдов. Осторожно, трафик!

Читать дальше →
Total votes 54: ↑53 and ↓1+52
Comments2

DevDay на функционале. Запись докладов

Reading time1 min
Views3.6K


Возможно, вы уже знаете, что раз в месяц 2ГИС проводит DevDay — открытые встречи для общительных разработчиков. Так, 15 декабря мы собрали 140 человек, чтобы потолковать про функциональное программирование.

Делимся с вами записью двух выступлений. Первое видео будет полезно для входа в тему ФП, второе — расскажет о подводных камнях Akka Streams.
Давайте посмотрим
Total votes 20: ↑19 and ↓1+18
Comments0

.NET Security — это просто

Reading time17 min
Views17K

Представляем интервью с ведущими экспертами в области безопасности: Владимиром Кочетковым (руководителем отдела исследований анализа защищенности приложений в Positive Technologies) и Михаилом Щербаковым (независимым разработчиком и консультантом в области информационной безопасности).


О чем эта статья? Процитирую одну из реплик Михаила:


«Разработка защищенного приложения – это частный случай разработки приложения, не содержащего ошибок вообще. Кроме этого, ваше приложение использует сторонние библиотеки, защищенность которых тоже не гарантируется, далее оно выполняется на ОС и железе. Часто мы даже не можем сказать, на какой именно ОС и на каком железе. И все это со временем изменяется!»


Читать дальше →
Total votes 33: ↑30 and ↓3+27
Comments11

Как я нашел уязвимости в системе баг-трекинга Google и получил $15,600

Reading time6 min
Views31K
Вы когда-нибудь слышали о Google Issue Tracker? Наверное, нет, если вы не являетесь сотрудником Google или разработчиком, который недавно сообщил о проблемах в инструментах Google. И я тоже не знал, пока не заметил, что мои сообщения об уязвимостях теперь обрабатываются, путем открытия нового обсуждения, помимо обычных уведомлений по электронной почте.

Поэтому я сразу начал пытаться взломать его.

image

Так что же это за сайт? Согласно документации, Tracker Issue (также называемая Buganizer System) — это инструмент, используемый компанией Google для отслеживания ошибок и запросов о добавление новых фич во время разработки продукта. Он доступен за пределами Google для использования общественностью и пользователями-партнерами, которым необходимо сотрудничать с командой Google по конкретным проектам.

Другими словами, когда у кого-то проблема (issue) с продуктом Google, он идет в баг-трекер. Имеет смысл, не так ли? Мы, как внешние пользователи, видим только верхушку айсберга: небольшой набор предварительно одобренных категорий и проблем, связанной с добавлением сотрудником Google внешней учетной записи, например, сообщения об уязвимостях. Но сколько информации лежит под поверхностью?

image

Наблюдая за ID, назначенных на последние опубликованные баги, мы можем легко оценить, сколько применения этот инструмент получает изнутри. В рабочие часы в Mountain View открывается около 2000-3000 проблем за час. Похоже, утечка данных из этой системы будет иметь большую ценность. Давайте взломаем ее!
Total votes 44: ↑43 and ↓1+42
Comments19

Видеозаписи лучших докладов DotNext 2016 Moscow: Перфоманс, CLR и функциональное программирование на .NET

Reading time4 min
Views13K
Если у вас еще нет планов на выходные – у меня есть предложение: посмотрите доклады с DotNext 2016 Moscow, вчера мы выложили их в общий доступ.

Вообще, мой любимый формат поста про конференции – обзор лучших докладов. Жаль, делать его получается только один раз на конференцию… В любом случае, сегодня у нас есть о чем поговорить: мы открыли доступ к видеозаписям лучших докладов конференции DotNext 2016 Moscow и близимся к завершению программы DotNext 2017 Piter (Питер, 19-20 мая), о которой тоже скажу пару слов.



Все видео под катом.
Total votes 33: ↑31 and ↓2+29
Comments1

Митап MSK.NET Community

Reading time3 min
Views4.5K


Всем привет, друзья!

В июне 2015 года состоялась первая встреча SPB.NET Community. Уверен, что многие из вас не только слышали о таком коммьюнити, но и смотрели отличные выступления с митапов SPB.NET (а многие и посещали встречи). Коммьюнити стало развиваться очень бодро и энтузиасты из Москвы, подхватив хороший настрой, решили создать своё локальное коммьюнити — MSK.NET.
Читать дальше →
Total votes 23: ↑23 and ↓0+23
Comments2

Анонс DotNext 2017 Piter: Jon Skeet в Петербурге

Reading time4 min
Views5.1K
19-20 мая в Петербурге состоится восьмая по счету .NET-конференция DotNext 2017 Piter. За четыре года многое поменялось, конференция выросла как по количеству участников, так и по уровню спикеров. За примерами далеко ходить не нужно: в декабре 2016 года 500 участников могли за один день послушать более 20 докладов, 10 из которых готовили Microsoft MVP со всего мира.



Что мы сделали, чтобы следующий DotNext 2017 Piter смог стать еще лучше?

  • На ней выступит Jon Skeet и другие MVP;
  • Конференция пройдет в течение двух дней;
  • Доклады будут ориентированы на практическую применимость;
  • Возможно, организуем тренинг Sasha Goldshtein;

Подробности под катом.
Читать дальше →
Total votes 34: ↑34 and ↓0+34
Comments50

Категория: суть композиции

Reading time7 min
Views61K
Это вторая статья в цикле «Теория категорий для программистов».

Категория — очень простая концепция.

Категория состоит из объектов и стрелок, которые направлены между ними. Поэтому, категории так легко представить графически. Объект можно нарисовать в виде круга или точки, а стрелки — просто стрелки между ними. (Просто для разнообразия, я буду время от времени рисовать объекты, как поросят а стрелки, как фейерверки.) Но суть категории — композиция. Или, если вам больше нравится, суть композиции — категория. Стрелки компонуются так, что если у вас есть стрелка от объекта А к объекту B, и еще одна стрелка из объекта B в C, то должна быть стрелка, — их композиция, — от А до С.

image
Читать дальше →
Total votes 37: ↑36 and ↓1+35
Comments128

Sasha Goldshtein, гуру .NET Performance, выступит на .NET-конференции в Питере

Reading time3 min
Views11K
В июне к нам на конференцию DotNext приедут две звезды .NET-программирования мирового уровня — Dino Esposito и Sasha Goldshtein.

Оба наших супергостя знамениты двумя вещами:
  • они авторы прекрасных книг;
  • они замечательные спикеры.

Про Дино я уже пару раз писал, и наверное напишу и в этот раз. А сегодня я расскажу вам про Сашу.

Саша Голдштейн / Sasha Goldshtein


Саша Голдштейн — ведущий мировой эксперт по производительности .NET-платформы, восьмикратный Microsoft MVP, автор прекрасной (и, наверное, единственной) серьезной книги по производительности .NET «Pro .NET Performance» (eng, rus).


Читать дальше →
Total votes 13: ↑12 and ↓1+11
Comments3

Теория и практика парсинга исходников с помощью ANTLR и Roslyn

Reading time23 min
Views40K

В нашем проекте PT Application Inspector реализовано несколько подходов к анализу исходного кода на различных языках программирования:


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

Наш цикл статей посвящен структуре и принципам работы модуля сигнатурного поиска (PM, pattern matching). Преимущества такого анализатора — скорость работы, простота описания шаблонов и масштабируемость на другие языки. Среди недостатков можно выделить то, что модуль не в состоянии анализировать сложные уязвимости, требующие построения высокоуровневых моделей выполнения кода.



К разрабатываемому модулю были, в числе прочих, сформулированы следующие требования:


  • поддержка нескольких языков программирования и простое добавление новых;
  • поддержка анализа кода, содержащего синтаксические и семантические ошибки;
  • возможность описания шаблонов на универсальном языке (DSL, domain specific language).

В нашем случае все шаблоны описывают какие-либо уязвимости или недостатки в исходном коде.


Весь процесс анализа кода может быть разбит на следующие этапы:


  1. парсинг в зависимое от языка представление (abstract syntax tree, AST);
  2. преобразование AST в независимый от языка унифицированный формат;
  3. непосредственное сопоставление с шаблонами, описанными на DSL.

Данная статья посвящена первому этапу, а именно: парсингу, сравнению функциональных возможностей и особенностей различных парсеров, применению теории на практике на примере грамматик Java, PHP, PLSQL, TSQL и даже C#. Остальные этапы будут рассмотрены в следующих публикациях.

Читать дальше →
Total votes 37: ↑34 and ↓3+31
Comments19

Анонс .NET-конференции DotNext 2016 Piter

Reading time1 min
Views5.4K


В пятницу, 3 июня, в Санкт-Петербурге пройдет .NET-конференция DotNext 2016 Piter. Это будет уже пятая по счету конференция DotNext, третья в Петербурге. Второй раз подряд конференцию примет гостиница «Radisson Пулковская».

Что мы припасли для вас на этот раз? Как всегда, крутейшие темы от крутейших докладчиков.

В частности, на конференции выступят:
  • Авторы крутейших книг о .NET Dino Esposito и Sasha Goldshtein;
  • Разработчики ReShaper и новой IDE для C# под названием Rider;
  • Сотрудники Microsoft, как евангелисты, так и инженеры, причем самого крутого уровня
  • Лучшие хаброавторы, лидеры .NET-хаба;
  • Лучшие докладчики предыдущих конференций DotNext;
  • Организаторы и спикеры SPb .NET Community;
  • Традиционные спонсоры DotNext — JetBrains и Futurice;
  • Кто-то из вас — мы ждем от вас заявок!

Читать дальше →
Total votes 19: ↑18 and ↓1+17
Comments12

Взломать PayPal за 73 секунды

Reading time3 min
Views77K
image

В декабре 2015 года я обнаружил критически опасную уязвимость в одном из сайтов PayPal для бизнеса, которая позволяла мне выполнять произвольные команды на веб-серверах внутри корпоративной сети. При отправке веб-формы на сайте manager.paypal.com в одном из скрытых параметров передавались закодированные данные в виде сериализованного объекта Java. Данный параметр можно было подделать, изменив название класса и значения его свойств, что и привело к выполнению произвольного кода на серверах. Я немедленно сообщил об этой проблеме в PayPal, и она была быстро исправлена.
Читать дальше →
Total votes 67: ↑64 and ↓3+61
Comments30
1

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Works in
Registered
Activity