Pull to refresh
4
0

C++/Qt

Send message

63 ядра заблокированы семью инструкциями

Reading time7 min
Views27K
Кажется, у меня появилась привычка писать о мощных машинах, где множество ядер простаивают из-за неправильных блокировок. Так что… Да. Опять про это.

Эта история особенно впечатляет. В самом деле, как часто у вас один поток несколько секунд крутится в цикле из семи команд, удерживая блокировку, которая останавливает работу 63 других процессоров? Это просто восхитительно, в каком-то ужасном смысле.

Вопреки распространённому мнению, у меня на самом деле нет машины с 64 логическими процессорами, и я никогда не видел этой конкретной проблемы. Но с ней столкнулся мой друг, этот ботан зацепил меня он попросил о помощи, и я решил, что проблема достаточно интересная. Он выслал трассировку ETW с достаточным количеством информации, чтобы коллективный разум в твиттере быстро решил проблему.
Читать дальше →
Total votes 69: ↑69 and ↓0+69
Comments24

Критика протокола и оргподходов Telegram. Часть 1, техническая: опыт написания клиента с нуля — TL, MT

Reading time60 min
Views70K

В последнее время на Хабре стали чаще появляться посты о том, как хорош Telegram, как гениальны и опытны братья Дуровы в построении сетевых систем, и т.п. В то же время, очень мало кто действительно погружался в техническое устройство — как максимум, используют достаточно простой (и весьма отличающийся от MTProto) Bot API на базе JSON, а обычно просто принимают на веру все те дифирамбы и пиар, что крутятся вокруг мессенджера. Почти полтора года назад мой коллега по НПО "Эшелон" Василий (к сожалению, его учетку на Хабре стёрли вместе с черновиком) начал писать свой собственный клиент Telegram с нуля на Perl, позже присоединился и автор этих строк. Почему на Perl, немедленно спросят некоторые? Потому что на других языках такие проекты уже есть На самом деле, суть не в этом, мог быть любой другой язык, где еще нет готовой библиотеки, и соответственно автор должен пройти весь путь с нуля. Тем более, криптография дело такое — доверяй, но проверяй. С продуктом, нацеленным на безопасность, вы не можете просто взять и положиться на готовую библиотеку от производителя, слепо ему поверив (впрочем, это тема более для второй части). На данный момент библиотека вполне работает на "среднем" уровне (позволяет делать любые API-запросы).


Тем не менее, в данной серии постов будет не так много криптографии и математики. Зато будет много других технических подробностей и архитектурных костылей (пригодится и тем, кто не будет писать с нуля, а будет пользоваться библиотекой на любом языке). Итак, главной целью было — попытаться реализовать клиент с нуля по официальной документации. То есть, предположим, что исходный код официальных клиентов закрыт (опять же во второй части подробнее раскроем тему того, что это и правда бывает так), но, как в старые времена, например, есть стандарт по типу RFC — возможно ли написать клиент по одной лишь спецификации, "не подглядывая" в исходники, хоть официальных (Telegram Desktop, мобильных), хоть неофициальных Telethon?

Ответ на этот вопрос неоднозначен
Total votes 187: ↑182 and ↓5+177
Comments240

Разработка демо для NES — HEOHdemo

Reading time24 min
Views5.9K
История проведения фестивалей компьютерного искусства, также известных как демопати, насчитывает в нашей стране уже четверть века. Люди со всех концов страны собираются, чтобы показать свои упражнения в извлечении невозможного из старых или современных компьютеров и сверхмалых объёмов кода. В первую пятилетку одним из главных демопати страны стал CAFe (внезапно, Computer Art Festival), проводившийся в Казани с 1999 по 2003 годы. Позже он надолго исчез с радаров, отдав пальму первенства более известным ныне Chaos Constructions и DiHalt, и только в этом году произошло довольно триумфальное его возвращение — если не по масштабу мероприятия, то по количеству разнообразных работ, показ которых затянулся до шести утра. Среди них была и моя, о создании которой пойдёт речь в этой статье.

Читать дальше →
Total votes 53: ↑53 and ↓0+53
Comments5

Как работает оптимизирующий компилятор

Reading time23 min
Views19K

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

В этой статье мы рассмотрим некоторые из основных методик приведения (inference techniques) в оптимизирующих компиляторах: как спроектировать программу, с которой компилятору будет легко работать; какие приведения можно сделать в вашей программе и как использовать их для её уменьшения и ускорения.
Читать дальше →
Total votes 78: ↑75 and ↓3+72
Comments14

Как мы сделали хакатон в поезде и что из этого получилось

Reading time12 min
Views21K

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


Осторожно, трафик.


Total votes 53: ↑50 and ↓3+60
Comments32

Время не ждет: чем Windows 10 Timeline может быть полезен криминалисту

Reading time5 min
Views16K


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

Обработка носителей информации для подготовки таймлайна (например, с помощью Plaso) — это процесс, отнимающий много времени. Поэтому компьютерные криминалисты сильно обрадовались, узнав, что в очередном обновлении Windows 10 появился новый функционал — Windows 10 Timeline.

«Когда я впервые узнал о новой функции Windows, я подумал: «Здорово! Теперь не придется тратить время на генерацию таймлайнов». Однако, как оказалось, радость моя была преждевременна», — признается Игорь Михайлов, специалист Лаборатории компьютерной криминалистики Group-IB. Специально для читателей «Хабра» Игорь рассказывает, какое отношение Windows 10 Timeline — новый вид артефактов Windows 10 — имеет к традиционным видам таймлайна и какие сведения в нем содержатся.
Читать дальше →
Total votes 20: ↑17 and ↓3+14
Comments11

Суверенный интернет — уточняющие приказы

Reading time5 min
Views19K


Подготовка к реализации закона «О суверенном интернете», подписанного президентом в мае этого года, идёт полным ходом. К работе подключился и Роскомнадзор, разместив на Федеральном портале проектов нормативных правовых актов целый ряд документов. Давайте посмотрим, чем хочет нас порадовать данное ведомство.
Читать дальше →
Total votes 29: ↑21 and ↓8+13
Comments27

Решение задания с pwnable.kr 01 — fd. Файловые дескрипторы и процессы

Reading time3 min
Views5.8K
image

В данной статье разберем: что же такое файловый дескриптор, как процессы получают доступ к определенным потокам ввода/вывода, и решим первое задание с сайта pwnable.kr.
Читать дальше →
Total votes 14: ↑13 and ↓1+12
Comments1

Анатомия IPsec. Проверяем на прочность легендарный протокол

Reading time13 min
Views190K


В современном мире различные VPN-технологии используются повсеместно. Некоторые (например, PPTP) со временем признаются небезопасными и постепенно отмирают, другие (OpenVPN), наоборот, с каждым годом наращивают обороты. Но бессменным лидером и самой узнаваемой технологией для создания и поддержания защищенных частных каналов по-прежнему остается IPsec VPN. Иногда при пентесте можно обнаружить серьезно защищенную сеть с торчащим наружу лишь пятисотым UDP-портом. Все остальное может быть закрыто, пропатчено и надежно фильтроваться.

В такой ситуации может возникнуть мысль, что здесь и делать-то особо нечего. Но это не всегда так. Кроме того, широко распространена мысль, что IPsec даже в дефолтных конфигурациях неприступен и обеспечивает должный уровень безопасности. Именно такую ситуацию сегодня и посмотрим на деле. Но вначале, для того чтобы максимально эффективно бороться c IPsec, нужно разобраться, что он собой представляет и как работает. Этим и займемся!
Читать дальше →
Total votes 25: ↑23 and ↓2+21
Comments13

«Преодолевая» закон Мура: чем заменить традиционные планарные транзисторы

Reading time4 min
Views11K

Обсуждаем альтернативы подходы к разработке полупроводниковых изделий.



/ фото Taylor Vick Unsplash

В прошлый раз мы говорили о материалах, которые могут заменить кремний в производстве транзисторов и расширить их возможности. Сегодня обсуждаем альтернативные подходы к разработке полупроводниковых изделий и какое применение они найдут в дата-центрах.
Читать дальше →
Total votes 21: ↑20 and ↓1+19
Comments3

Что не так с федеральным законом «Об электронной подписи» (63-ФЗ), и как это можно исправить

Reading time24 min
Views43K

Рисовальная машина за работой, © axisdraw.com

Электронная подпись в России впервые появилась в январе 2002 года вместе с принятием первого закона «Об электронной цифровой подписи» (1-ФЗ). Затем, спустя 9 лет, в апреле 2011 появился новый закон «Об электронной подписи» (63-ФЗ). Спустя еще 8 лет, в начале лета 2019, в СМИ стали появляться леденящие душу публикации о том, как с помощью электронной подписи воруют квартиры, как мошенники оформляют на ничего не подозревающих граждан фиктивные фирмы, и так далее, и тому подобное.

Давайте без лишних эмоций попробуем разобраться в сложившихся проблемах и подумаем, как их можно исправить.

Читать дальше →
Total votes 51: ↑50 and ↓1+49
Comments182

Правильные способы исключения файлов в Git

Reading time1 min
Views208K
Иногда встречаю в файле .gitignore то, чего там быть никак не должно. Например, папка .idea, в которой лежат конфиги известных IDE от JetBrains. Это часть вашего рабочего окружения и она никаким боком не относится к проекту и репозиторию. Если над проектом работает несколько человек и каждый из них добавит конфиги своего окружения в .gitignore, то он превратится в нечитаемую помойку.

В этом топике я расскажу о правильных способах исключения файлов и о том когда какой способ использовать.
Читать дальше →
Total votes 98: ↑74 and ↓24+50
Comments68

Bug Inside: крохотный шанс сделать громадную ошибку на Pentium

Reading time23 min
Views26K
«Ошибка в Pentium настолько специфичная, что обычный пользователь столкнется с ней раз в 27000 лет»
— руководство Intel

«Вот вам правдоподобный сценарий, когда пользователь будет сталкиваться с ошибкой каждые 3 миллисекунды»
— Воэн Пратт (дизайнер логотипа SUN и соавтор алгоритма Кнута-Морриса-Пратта)

66 MHz Intel Pentium (sSpec=SX837) with the FDIV bug

Вопрос: Сколько нужно разработчиков Pentium чтобы вкрутить лампочку?
Ответ: 1.99904274017, такой ответ должен удовлетворить людей без технического образования.

А теперь главный вопрос: «Чем занимался Томас Найсли с начала июня до конца октября 1994 года?»
Читать дальше →
Total votes 82: ↑67 and ↓15+52
Comments30

Немного о типах DDoS-атак и методах защиты

Reading time5 min
Views36K
Согласно проведенным исследованиям, масштабы DDoS-атак выросли примерно в 50 раз за последние несколько лет. При этом злоумышленники «метят» как в локальные инфраструктуры, так и публичные облачные площадки, на которых сосредотачиваются решения клиентов.

«Успешно реализованные атаки имеют непосредственное влияние на бизнес клиентов и носят деструктивные последствия», – комментирует Даррен Ансти (Darren Anstee), представитель компании Arbor Networks, поставляющей решения для обеспечения безопасности в сетях.

При этом частота атак также увеличивается. В конце 2014 года их число составляло 83 тыс., а в первом квартале 2015 года цифра увеличилась до 126 тыс. Поэтому в нашем сегодняшнем материале мы бы хотели рассмотреть различные виды DDoS-атак, а также способы защиты от них.


/ Flickr / Kenny Louie / CC
Читать дальше →
Total votes 23: ↑18 and ↓5+13
Comments2

Археология программиста

Reading time6 min
Views25K


В прошедшую субботу решил провести «субботник» и наконец-то навести порядок на полках и в шкафах.

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

Дело было так. В далеком-далеком году мы получили заказ на разработку прошивки для микросхемы Cypress CY7C63723. Это был такой PS/2-USB микроконтроллер. Задача: написать прошивку к этой микросхеме. Но был один нюанс. Микросхема предназначена для преобразования протокола из PS/2 в USB, а нужно было подключить два устройства PS/2, то есть нужно подключить PS/2 мышь и PS/2 клавиатуру с помощью одной такой микросхемы USB конвертера. Микросхема должна была бы устанавливаться на материнскую плату Jetway (если память не изменяет).

Точнее, дело было даже так: эта задача уже делалась каким-то разработчиком, но у него чего-то не получалось. Нам отдали его исходники и сказали, что нужно срочно починить и переделать, но чтоб работало. Кроме исходных текстов нашего неудачливого предшественника тогда мы получили вот это…
Читать дальше →
Total votes 71: ↑68 and ↓3+65
Comments10

7 мер защиты сервера

Reading time10 min
Views77K

В прошлый раз мы рассказывали о том, как выбрать серверы и как установить их в офисе своими руками.

Теперь пришло время позаботиться о следующем шаге — наладить ИТ-инфрастуктру, чтобы работать с приложениями, веб-сервисами и базами данных. Это непростая задача, но без должной защиты вся инфраструктура окажется под угрозой.
Читать дальше →
Total votes 27: ↑19 and ↓8+11
Comments11

Методы удаленного доступа к Linux GUI

Reading time11 min
Views343K
В службу технической поддержки RUVDS регулярно обращаются по поводу GUI и удаленного доступа к нему на виртуальных серверах с Linux, несмотря на то что в интернете достаточно много материалов освещающих эту проблему. Поэтому, для наших пользователей мы решили собрать всё по этой теме в одну статью.


Читать дальше →
Total votes 39: ↑34 and ↓5+29
Comments42

Ни единого разрыва: как мы создавали беспроводную сеть для 3000 устройств

Reading time12 min
Views27K

Wireless Society by JOSS7

Wi-Fi в офисах Mail.Ru Group за последние десять лет пережил несколько смен оборудования, подходов к построению сети, схем авторизации, администраторов и ответственных за его работу. Начиналась беспроводная сеть, наверное, как и во всех компаниях — с нескольких домашних роутеров, которые вещали какой-то SSID со статичным паролем. Долгое время этого было достаточно, но количество пользователей, площади и количество точек доступа стало расти, домашние D-Linkʼи постепенно заменили на Zyxel NWA-3160. Это уже было относительно продвинутым решением: одна из точек могла выступать в качестве контроллера для остальных и давала единый интерфейс для менеджмента всей сети. Какой-то более глубокой логики и автоматизации софт NWA-3160 не давал, только возможность настройки подключенных к контроллеру точек, пользовательский трафик обрабатывался каждым устройством независимо. Следующей сменой оборудования стал переход на контроллер Cisco AIR-WLC2006-K9 + несколько точек доступа Aironet 1030. Уже совсем взрослое решение, с безмозглыми точками доступа и обработкой всего трафика контроллером беспроводной сети. После еще была миграция на пару AIR-WLC4402-K9, сеть уже выросла до сотни точек Cisco Aironet 1242AG, 1130AG, 1140AG.
Читать дальше →
Total votes 61: ↑57 and ↓4+53
Comments25

Лента – все еще лидер в резервном копировании данных

Reading time4 min
Views49K
Что-то давно мы не рассказывали о классических системах резервного копирования данных – ленточных библиотеках. Ведь что бы не говорили некоторые вендоры СХД (сосредоточенные исключительно на дисковых устройствах), ленточные библиотеки остаются важнейшим средством резервного копирования и долгосрочного архивирования. В 2012 году был проведен опрос среди севроамериканских ИТ-директоров на предмет их планов по использованию лент. Так вот, 87% подтвердили, что будут увеличивать их применение или, как минимум, оставят его на прежнем уровне. А кто же является ведущим производителем ленточных библиотек? По данным storagenewsletter.com лидирует компания НР, в 2012 г. продавшая 31% устройств, почти в два раза больше ближайшего конкурента. Несмотря на то, что НР поддерживает стандарты DDS и LTO, сегодня мы поговорим только о последнем, т.к. продажи LTO составляют 94% от всех типов приводов.
Читать дальше →
Total votes 28: ↑23 and ↓5+18
Comments59

JSON-сериализатор на быстрых шаблонах

Reading time37 min
Views28K


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

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

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

Читать дальше →
Total votes 44: ↑43 and ↓1+42
Comments19
1

Information

Rating
Does not participate
Registered
Activity