Pull to refresh
0
0

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

Send message

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

Reading time60 min
Views69K

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


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

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

Беспилотный автомобиль: оживляем алгоритмы. Доклад Яндекса

Reading time11 min
Views15K
Подробная расшифровка еще одного доклада со встречи Яндекс.Железо — про разработку устройств для беспилотника.



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

Total votes 32: ↑30 and ↓2+28
Comments38

Пишем презентации в LaTeX

Reading time6 min
Views59K

В процессе подготовки доклада на GolangConf'2019 я использовал LaTeX. Несмотря на некоторые устаревшие вещи, немного необычное поведение, скудную или сложную документацию, я внезапно получил удовольствие. Я не стал "гуру" LaTeX, но я смог делать весьма неплохие слайды. И я хочу описать основные точки создания современной презентации на LaTeХ. Особенно это должно "зайти" айтишникам, которые по роду занятий программируют. Программировать свою презентацию — это увлекательно.


Читать дальше →
Total votes 62: ↑59 and ↓3+56
Comments116

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

Reading time10 min
Views7.6K
При первом знакомстве с квазиньютоновскими методами можно удивиться дважды. Во-первых, после беглого взгляда на формулы охватывают сомнения, что это вообще может работать. Однако же они работают. Дальше кажется сомнительным, что они будут работать хорошо. И тем удивительнее видеть то, насколько они превосходят по скорости разнообразные вариации градиентного спуска, причем не на специально построенных задачах, а на самых настоящих, взятых из практики. И если после этого еще остаются сомнения вперемешку с интересом — то нужно разбираться в том, почему вообще работает это нечто.
Читать дальше →
Total votes 9: ↑9 and ↓0+9
Comments3

Вопросы будущему работодателю

Reading time3 min
Views55K


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

Под катом список тем, которые покажут проблемные места там, где о них не любят упоминать.
Читать дальше →
Total votes 114: ↑108 and ↓6+102
Comments87

Как не сделать самый быстрый strlen и найти недоработку в Visual Studio 2019 Community

Reading time8 min
Views9.1K
На размышления меня натолкнула статья об использовании «странной» инструкции popcount в современных процессорах. Речь пойдет не о подсчете числа единичек, а об обнаружении признака окончания Си строки (нуль-терминированная строка).
Нуль-терминированная строка — способ представления строк в языках программирования, при котором вместо введения специального строкового типа используется массив символов, а концом строки считается первый встретившийся специальный нуль-символ (NUL из кода ASCII, со значением 0).

Для определения длины таких срок применяется стандартная функция

size_t __cdecl strlen(char const* str)

Алгоритм работы которой можно описать на языке Си как:


size_t strlen_algo(const char* str)
{
	size_t length = 0;
	while (*str++)
		length++;
	return length;
}

Посмотрим, во что его превращает компилятор MS Visual Studio 2019 community (Release, x86):

08811F7h:
mov         al,byte ptr [ecx]  
inc         ecx  
test        al,al  
jne         main+0D7h (08811F7h) 
Читать дальше →
Total votes 29: ↑29 and ↓0+29
Comments10

6 английских фраз, которые можно использовать при переговорах о зарплате с зарубежными компаниями

Reading time3 min
Views22K
image

Тема поиска работы за рубежом довольно популярна на хабре в последние годы. Однако если с профессиональными навыками у отечественных инженеров, как правило, все отлично, то уровень английского языка не всегда на должном уровне. Это может вызывать сложности – например, мало кто хочет показаться грубым или обидеть собеседника в процессе обсуждения будущих обязанностей или размера зарплаты. При этом и соглашаться на меньшие деньги только из-за стеснения никому не захочется.

Я нашел интересный пост с подборкой фраз для использования при ведении «денежных» переговоров с потенциальными работодателями из-за рубежа, и подготовил его адаптированный перевод.
Читать дальше →
Total votes 46: ↑35 and ↓11+24
Comments28

Похождения электронной подписи в России

Reading time16 min
Views59K
Государства вмешиваются в некогда гиковскую информационную область всё больше и устанавливают там правила. Один из институтов государственного регулирования в информационном пространстве — механизм «квалифицированной электронной подписи», условно неподделываемого доверенного идентификатора субъекта, которым он может заверять различного рода сделки в электронном виде от своего имени в инфопространстве. На самом деле, идея ЭП не нова и развивается давно, но в России в какой-то момент что-то пошло немного не так. Эта статья — субъективное пространное рассуждение на тему института электронной подписи в России без излишнего погружения в технологическую матчасть. Ну и немного хейта, как же без этого.


CC-BY-SA, Vadim Rybalko
Читать дальше →
Total votes 150: ↑145 and ↓5+140
Comments340

Mozilla собирается использовать WASI для всех устройств, компьютеров и операционных систем

Reading time3 min
Views7.3K

Всем привет! На связи TestMace и мы продолжаем знакомить вас с самыми горячими новостями из мира JavaScript. На очереди перевод статьи о WASI — технологии, которая позволит использовать WebAssembly вне браузеров


Один формат, чтоб править всеми



Компания Mozilla на этой неделе представила проект под названием WASI (WebAssembly System Interface), призванный стандартизировать взаимодействие WebAssembly-кода с операционной системой. Если проект окажется успешным, он будет выполнять те же функции, что и виртуальная машина Oracle Java, но гораздо эффективнее и с расширенным функционалом.

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

Установка разъёма для кабеля связи в Super Game Boy

Reading time2 min
Views4.3K

Картридж Super Game Boy, позволяющий играть в игры для Game Boy на SNES, аппаратно во многом похож на обычный Game Boy. У них совпадают процессор, распределение адресного пространства. Но нет разъёма для кабеля связи, хотя на плате есть все контактные площадки, необходимые для его подключения. Чтобы его добавить, потребуются следующие компоненты:

  1. Разъём от неисправного Game Boy'я
  2. Три резистора на 220 Ом
  3. Три конденсатора на 100 пФ
  4. Три сдвоенных диода (или шесть обычных германиевых диодов)
Читать дальше →
Total votes 28: ↑27 and ↓1+26
Comments1

Основы компьютерных сетей. Тема №5. Понятие IP адресации, масок подсетей и их расчет

Reading time18 min
Views791K


Приветствую вас на очередном выпуске. И сегодня речь пойдет о том, какие бывают IP-адреса, и как ими пользоваться. Что такое маска подсети, как она считается, и для чего она нужна. Как делить сети на подсети и суммировать их. Заинтересовавшихся приглашаю к прочтению.
Читать дальше →
Total votes 24: ↑23 and ↓1+22
Comments23

В AWS представили Firecracker — «микровиртуализацию» для Linux

Reading time4 min
Views27K


На AWS re:Invent 2018, что проходит в эти дни в Лас-Вегасе, состоялся анонс Firecracker — новой технологии виртуализации с открытым кодом, основанной на Linux KVM. Авторы обещают, что с ней «в доли секунды можно запускать легковесные микровиртуальные машины (microVMs) в невиртуализированной среде, получив преимущества и традиционных ВМ — в виде безопасности и изоляции рабочих нагрузок, и контейнеров — в виде эффективного использования ресурсов».
Читать дальше →
Total votes 58: ↑56 and ↓2+54
Comments44

Российский беспилотный автомобиль StarLine проехал от Санкт-Петербурга до Казани

Reading time3 min
Views28K


Команда НПО «СтарЛайн» разработала умный беспилотный автомобиль StarLine, проект реализуется по программе освоения пяти уровней автономности. В настоящий момент робомобиль достиг 3-го уровня, в мае 2018 года он прошел испытания в полевых условиях, преодолев расстояние в несколько десятков километров. Сейчас робомобиль преодолел более 2500 километров, проехав от Санкт-Петербурга до Казани.

Беспилотник, по словам разработчиков, умеет ориентироваться в дорожной обстановке. Он может следовать по заданному маршруту, держать дистанцию, считывать разметку и знаки, обходить препятствия и экстренно тормозить.
Total votes 56: ↑51 and ↓5+46
Comments105

А сколько вы потратили времени на фильмы?

Reading time4 min
Views23K

Возникновение идеи


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

Читать дальше →
Total votes 31: ↑23 and ↓8+15
Comments71

Уязвимость в Telegram позволяет скомпрометировать секретные чаты

Reading time16 min
Views91K

Публикация к юбилею Telegram


В секретных чатах Telegram используется «сквозное шифрование», и что? End to end encryption Telegram слабо защищает переписку пользователей. Простой пример: злоумышленник достал приватный ключ.pgp Алисы, естественно, чтобы расшифровать сообщение, зашифрованное для Алисы необходим пароль от этого ключа, который невозможно сбрутить, придерживаясь современной доктрины парольной защиты. В Telegram end to end encryption на Android — это становится возможно с вероятностью 100%. Обход двухфакторной аутентификации, восстановление пин-кода и угон секретных чатов в Telegram об этой уязвимости и будет статья.
Читать дальше →
Total votes 117: ↑75 and ↓42+33
Comments84

Стоимость операций в тактах ЦП

Reading time17 min
Views72K
Всем доброго! Вот мы и добрались до тематики С++ на наших курсах и по нашей старой доброй традиции делимся тем, что мы нашли достаточно интересным при подготовке программы и то, что будем затрагивать во время обучения.

Инфографика:



Когда нам нужно оптимизировать код, мы должны отпрофилировать его и упростить. Однако, иногда имеет смысл просто узнать приблизительную стоимость некоторых популярных операций, чтобы не делать с самого начала неэффективных вещей (и, надеюсь, не профилировать программу позже).
Читать дальше →
Total votes 100: ↑97 and ↓3+94
Comments16

Уязвимость BlueBorne в протоколе Bluetooth затрагивает миллиарды устройств

Reading time1 min
Views37K
image
 
Исследователи из компании Armis обнаружили восемь критичных уязвимостей в реализациях Bluetooth. Уязвимости получили следующие CVE: CVE-2017-0781, CVE-2017-0782, CVE-2017-0783, CVE-2017-0785 (Android); CVE-2017-1000251, СVE-2017-1000250 (Linux); CVE-2017-8628 (Windows). Устройства на iOS пока не получили CVE-идентификатора. Все уязвимости объединены под общим названием: BlueBorne.
Total votes 56: ↑54 and ↓2+52
Comments31

«Киев-30»: как я снимал на «шпионский» фотоаппарат

Reading time5 min
Views57K
Я уже писал, что снимаю фотоаппаратами прошлого века, использующими пленку формата 127 (ширина 46 мм). Чтобы ее получить, приходится разрезать вдоль пленку формата 120 (ширина 62 мм), а оставшуюся полоску (16 мм) выбрасывать. При нынешней цене на фотоматериалы это барство и расточительство. Чтобы не рыдать каждый раз над мусоропроводом, я купил «Киев-30» — советский «шпионский» фотоаппарат, использующий 16-миллиметровую пленку.


Читать дальше →
Total votes 100: ↑98 and ↓2+96
Comments79

Ранний релиз или выдержанный?

Reading time7 min
Views8.5K

Что общего между mutt, mplayer и gzip помимо того, что это качественные проекты с открытым кодом? В качестве подсказки даю наводящий вопрос: вы можете точно назвать месяц выхода очередной версии Debian Linux, до официального объявления на вебсайте?




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

график или ad-hoc?
Total votes 21: ↑20 and ↓1+19
Comments10

Домен .TP будет удален

Reading time1 min
Views14K
Количество национальных доменных зон в ближайшее время сократится, так как ICANN планирует удалить домен .TP.

12 февраля Совет директоров ICANN примет окончательное решение по вопросу удаления домен .TP, делегированного для государства Португальский Тимор. На совещании будет задокументировано единое мнение членов руководства ICANN, дебатов на этому тему проводиться не будет.
Читать дальше →
Total votes 14: ↑13 and ↓1+12
Comments6

Information

Rating
Does not participate
Location
Москва и Московская обл., Россия
Date of birth
Registered
Activity