Как стать автором
Обновить
max7 @max7 read-only

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

Рендеринг текста вас ненавидит

Время на прочтение 14 мин
Количество просмотров 28K
Разработка веб-сайтов *Работа с иконками *Типографика *Работа с векторной графикой *Браузеры
Перевод

Рендеринг текста: насколько сложным он может быть? Оказывается, невероятно сложным! Насколько мне известно, буквально ни одна система не выводит текст «идеально». Где-то лучше, где-то хуже.

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

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

Мы обсудим темы, которые не объединяются в рамках какой-то единой концепции, это просто вопросы, с которыми мне пришлось столкнуться за несколько лет работы над рендерингом текста в Firefox. Например, не будем слишком подробно обсуждать проблемы сегментации текста или управления различными текстовыми библиотеками для конкретной платформы, поскольку этим я не слишком интересуюсь.
Читать дальше →
Всего голосов 113: ↑112 и ↓1 +111
Комментарии 19

Печать гобелена «Игры престолов» на фискальном принтере с использованием Python

Время на прочтение 11 мин
Количество просмотров 10K
Python *
Туториал
Однажды в одном из проектов в мои руки попал фискальный принтер. Мы каждый день сталкиваемся с этими устройствами, когда совершаем платежи в магазинах, но мало кто догадывается что на самом деле они из себя представляют. Не буду вдаваться в подробности их работы, просто скажу, что это такие штучки, которые печатают чеки с данными о покупке на специальной термобумаге (да-да, почти во всех фискальных принтерах нет чернил!).

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

Такие принтеры позволяют печатать монохромные картинки. Когда я вдоволь наигрался с печатью котиков, эмблем и фотографий коллег, я решил замахнуться на печать длинного гобелена по мотивам сериала, в котором постоянно кого-то убивали со словами «зима близко».

На выходе получился вот такой ролик:


Подробные действия для печати гобелена на языке python под катом ниже.
Всего голосов 36: ↑36 и ↓0 +36
Комментарии 27

Узнаем паспортные данные физического лица по ФИО (если есть залоговое имущество)

Время на прочтение 1 мин
Количество просмотров 383K
Информационная безопасность *
А так же узнаем ФИО и паспортные данные по номеру автомобиля если он взят в кредит.
Без регистрации и СМС.
Читать дальше →
Всего голосов 102: ↑98 и ↓4 +94
Комментарии 87

Получение обычных SMS в мессенджеры Viber и Telegram (с помощью шлюзов GoIP)

Время на прочтение 3 мин
Количество просмотров 29K
Python *Сотовая связь
Во многих компаниях использующих IP-телефонию и применяющих GSM-шлюзы для корпоративной связи часто возникает вопрос приема и отправки СМС со своих номеров.

Для китайских моделей GOIP существует неплохое решение GOIP-SMS-Сервер, о котором неоднократно упоминалось на просторах интернета и в нашем Habr сообществе в том числе. Это простой, бесплатный и удобный продукт, но СМС через WEB, особенно с мобильных не совсем удобно.

Возникла идея приема и передачи СМС с помощью мессенджера — и была реализована за час с помощью простого скрипта на Python3.6 и бота Telegram (и спустя 2 месяца перенесена на Viber) Прошу под кат:
Читать дальше →
Всего голосов 13: ↑12 и ↓1 +11
Комментарии 32

Алексей Савватеев: Как бороться с коррупцией при помощи математики (Нобелевская премия по экономике за 2016 год)

Время на прочтение 7 мин
Количество просмотров 39K
Занимательные задачки Математика *Учебный процесс в IT Научно-популярное
image

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

image


Оливер Харт и Бенгт Хольмстрём.

Контракт. Что это такое? Я работодатель, у меня несколько сотрудников, я говорю им как будет устроена их зарплата. В каких случаях и что они будут получать. Эти случаи могут включать и поведение их коллег.

Приведу пять примеров. Три из них иллюстрируют, как попытка вмешательства привела к ухудшению ситуации.
Всего голосов 68: ↑61 и ↓7 +54
Комментарии 244

Telegram наносит ответный удар DPI и блокировкам — Fake TLS

Время на прочтение 5 мин
Количество просмотров 142K
Информационная безопасность *Мессенджеры *Open source *Сетевые технологии *
image

Telegram тестирует новый вариант обхода блокировок — маскировка трафика под обычный TLS (https).
Предистория: Попытки заблокировать Telegram происходят в разных странах, первый вариант блокировки был простым — блокировка IP адресов серверов Telegram.

Telegram достаточно успешно отбивается от этой атаки, переодически меняя IP с которых он доступен, однако это вызывает долгий первичный Connecting…

Чуть позднее стали доступны Socks прокси, однако протокол не подразумевает шифрования и это позволяло достаточно просто смотреть «внутрь» socks туннеля определяя, что внутри него — Telegram, блокируя прокси.

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

Ответом на такое поведение стало введение новой версии протокола MTProto — с случайной длиной, теперь определить что перед нами Telegram туннель — сложнее, часть DPI начали классифицировать трафик как «другое» часть все же научились выявлять характерный паттерн и с некоторой вероятностью (не 100%) определять, что трафик относится к Telegram
Сейчас мы переходим на следующий этап (похоже финальный или пред-финальный) — стеганография.
Стеганогра́фия (от греч. στεγανός «скрытый» + γράφω «пишу»; букв. «тайнопись») — способ передачи или хранения информации с учётом сохранения в тайне самого факта такой передачи (хранения).
Другими словами — теперь Telegram будет притворяться обычным TLS (https) трафиком.
Читать дальше →
Всего голосов 166: ↑160 и ↓6 +154
Комментарии 216

Telegram научился маскироваться под HTTPS

Время на прочтение 3 мин
Количество просмотров 41K
Мессенджеры *Open source *Сетевые технологии *
В код клиентов Telegram добавили возможность маскировки под HTTPS (TLS + HTTP/2.0).



Для использования этой возможности добавили новый префикс секрета — «ee». Кроме того, добавили возможность кодировать секрет в адресе прокси сервера как base64, в дополнение к hex.

Перед тем, как углубиться в детали, попробуем разобраться как развивалась поддержка прокси-серверов в Telegram.
Читать дальше →
Всего голосов 93: ↑89 и ↓4 +85
Комментарии 155

Веб-типографика: создаем таблицы для чтения, а не для красоты

Время на прочтение 12 мин
Количество просмотров 20K
Блог компании Нетология Веб-дизайн *Типографика *
Перевод
Наталия Шергина, фрилансер-редактор и студентка Нетологии, специально для блога перевела лонгрид Richard Rutter о типографике веб-таблиц.



Хорошие дизайнеры не жалеют времени на типографику. Они тщательно подбирают шрифты, перебирают множество типографических шкал и скрупулезно применяют пробелы (white space) ради удобства пользователя. Затем появляется соблазн покреативить — и вот все мысли уже не о пользователе. Однако таблицы нужны в первую очередь, чтобы их читали и использовали, а не просто любовались.
Читать дальше →
Всего голосов 34: ↑33 и ↓1 +32
Комментарии 9

Торфон – мобильное приложение для анонимной телефонии

Время на прочтение 11 мин
Количество просмотров 38K
Криптография *C *Разработка систем связи *Звук
Из песочницы
image


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

  • существующие транспортные протоколы для телефонии работают поверх UDP, а Tor обеспечивает лишь TCP соединения;
  • Tor маршрутизирует пакеты через множество узлов, шифруя данные, что является причиной значительной латентности и делает дуплексную телефонную связь невозможной или крайне некомфортной.

Но так ли это на самом деле?
Читать дальше →
Всего голосов 90: ↑89 и ↓1 +88
Комментарии 67

Debian + Postfix + Dovecot + Multidomain + SSL + IPv6 + OpenVPN + Multi-interfaces + SpamAssassin-learn + Bind

Время на прочтение 28 мин
Количество просмотров 26K
Настройка Linux *Мессенджеры *DevOps *
Данная статья о том как настроить современный почтовый сервер.
Postfix + Dovecot. SPF + DKIM + rDNS. С IPv6.
С шифрованием TLS. С поддержкой нескольких доменов — часть с настоящим SSL сертификатом.
С антиспам-защитой и высоким антиспам-рейтингом у других почтовых серверов.
С поддержкой нескольких физических интерфейсов.
С OpenVPN, подключение к которому через IPv4, и которое даёт IPv6.

Если вы не хотите изучать эти все технологии, но хотите настроить такой сервер — тогда эта статья для вас.

В статье отсутствуют попытки пояснить каждую деталь. Пояснение идёт к тому, что настроено не стандартно или важно с точки зрения потребителя.
Читать дальше →
Всего голосов 34: ↑30 и ↓4 +26
Комментарии 31

Как совместить преимущества ноутбука и стационарного компьютера? Разбор проблемы и идеи решения

Время на прочтение 19 мин
Количество просмотров 54K
Компьютерное железо DIY или Сделай сам
Из песочницы
В данный момент ноутбуки и персональные компьютеры сильно отличаются друг от друга. Под системным блоком стационарного компьютера, как правило, понимается «башня» преимущественно стандарта midi-tower, весом килограмм в 15-20 (или больше), занимающий огромное пространство под столом. Чтобы перемещать системный блок с места на место, как правило, требуются большие усилия.

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

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

Для начала давайте скажем, что в этом посте речь зайдет не о переносных мониторах, мышках и другой периферии. В этом посте мы будем говорить практически полностью о корпусе компьютера. Каким должен быть корпус и какие комплектующие он должен в себя вмещать, чтобы при относительно компактном размере обеспечивать высокую производительность, а так же возможность собрать компьютер таким, каким его видит конечный потребитель?
Всего голосов 44: ↑36 и ↓8 +28
Комментарии 141

Визуализация времени возрождения Рошана

Время на прочтение 56 мин
Количество просмотров 49K
C++ *Разработка игр *Реверс-инжиниринг *
Из песочницы
В данной статье рассматривается перехват функций графического API на примере DirectX 9 под x64 применительно к игре Dota 2.

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



Disclaimer: Автор не несет ответственности за применение вами знаний полученных в данной статье или ущерб в результате их использования. Вся информация здесь изложена только в познавательных целях. Особенно для компаний разрабатывающих MOBA, чтобы помочь им бороться с читерами. И, естественно, автор статьи ботовод, читер и всегда им был.
Читать дальше →
Всего голосов 134: ↑133 и ↓1 +132
Комментарии 22

Зачем нужны сервисы приема SMS и с чем их едят

Время на прочтение 4 мин
Количество просмотров 61K
Информационная безопасность *Исследования и прогнозы в IT *
Из песочницы
Сервисы, предоставляющие временный номер для приема смс онлайн, появились после того как многие социальные сети, торговые площадки и прочие интернет ресурсы перешли с идентификации пользователя, при регистрации, через адрес электронной почты на идентификацию через отправленный код на телефонный номер, а зачастую и код на телефонный номер и подтверждение через электронную почту.

Для кого существуют сервисы, предоставляющие виртуальные номера онлайн?


Всю аудиторию пользователей ресурсов, предоставляющих услуги приема смс на телефонные номера онлайн, можно разделить на группы:
Читать дальше →
Всего голосов 32: ↑28 и ↓4 +24
Комментарии 25

Расширение Вселенной — величайшее заблуждение в истории науки

Время на прочтение 7 мин
Количество просмотров 25K
Физика Астрономия
Recovery mode
image

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

Графически оно выглядит так — Рис.1.

image

Рис.1 Графическое представление о космологическом красном смещении.

Красное смещение для галактик было обнаружено американским астрономом Весто Слайфером в 1912—1914 годах, а в 1929 году Эдвин Хаббл открыл, что красное смещение для далёких галактик больше, чем для близких, и возрастает приблизительно пропорционально расстоянию ( закон Хаббла).

Предлагались различные объяснения наблюдаемого смещения спектральных линий, например, гипотеза утомлённого света, но, в конечном итоге, связали с эффектом расширения межгалактического пространства по ОТО. Данное объяснение этого явления является общепринятым.
Читать дальше →
Всего голосов 83: ↑10 и ↓73 -63
Комментарии 137

Почтовый сервер на собственном сайте через sendmail

Время на прочтение 4 мин
Количество просмотров 28K
Разработка веб-сайтов *PHP *
Из песочницы
Не так давно передо мной встала задача предоставить зарегистрированным в моих каталогах, промышленной, автомобильной и риэлторской тематики, организация личный почтовый ящик с именем моего домена. Вместо того, чтобы выдавать пользователям каталога непосредственные контактные данные, было определено, что более продуктивно будет выдавать им контактные данные с названием моего домена. Что должно увеличить посещаемость, как среди пользователей, так и среди самих организаций.
Читать дальше →
Всего голосов 12: ↑4 и ↓8 -4
Комментарии 15

И снова о втором мониторе из планшета…

Время на прочтение 3 мин
Количество просмотров 34K
Настройка Linux *Гаджеты Мониторы и ТВ
Из песочницы
Оказавшись обладателем среднего такого планшета с нерабочим сенсором (старшенький сынуля постарался) долго думал, куда приспособить. Гуглил, гуглил и нагуглил (раз, два, Хакер №227), а так же много других рецептов с участием spacedesk, iDispla и некоторых других. Вот только незадача — у меня Linux. Погуглив ещё, я нашел несколько рецептов и путем несложного шаманства получил приемлемый результат.

Читать дальше →
Всего голосов 72: ↑65 и ↓7 +58
Комментарии 35

Умножение матриц: эффективная реализация шаг за шагом

Время на прочтение 14 мин
Количество просмотров 90K
C++ *Алгоритмы *Обработка изображений *Машинное обучение *


Введение


Умножение матриц — это один из базовых алгоритмов, который широко применяется в различных численных методах, и в частности в алгоритмах машинного обучения. Многие реализации прямого и обратного распространения сигнала в сверточных слоях неронной сети базируются на этой операции. Так порой до 90-95% всего времени, затрачиваемого на машинное обучение, приходится именно на эту операцию. Почему так происходит? Ответ кроется в очень эффективной реализации этого алгоритма для процессоров, графических ускорителей (а в последнее время и специальных ускорителей матричного умножения). Матричное умножение — один из немногих алгоритмов, которые позволяет эффективно задействовать все вычислительные ресурсы современных процессоров и графических ускорителей. Поэтому не удивительно, что многие алгоритмы стараются свести к матричному умножению — дополнительная расходы, связанные с подготовкой данных, как правило с лихвой окупаются общим ускорением алгоритмов.

Так как реализован алгоритм матричного умножения? Хотя сейчас существуют множество реализаций данного алгоритма, в том числе и в открытых исходных кодах. Но к сожалению, код данных реализаций (большей частью на ассемблере) весьма сложен. Существует хорошая англоязычная статья, подробно описывающая эти алгоритмы. К моему удивлению, я не обнаружил аналогов на Хабре. Как по мне, этого повода вполне достаточно, чтобы написать собственную статью. С целью ограничить объем изложения, я ограничился описанием однопоточного алгоритма для обычных процессоров. Тема многопоточности и алгоритмов для графических ускорителей явно заслуживает отдельной статьи.

Процесс изложения будет вестись ввиде шагов с примерами по последовательному ускорению алгоритма. Я старался писать максимально упрощая задачу, но не более того. Надеюсь у меня получилось…
Читать дальше →
Всего голосов 90: ↑90 и ↓0 +90
Комментарии 49

Вы опасно некомпетентны в криптографии

Время на прочтение 7 мин
Количество просмотров 139K
Криптография *
Из песочницы
От переводчика: Хоть посыл статьи Najaf Ali, переведённой ниже, и носит слегка рекламный оттенок («оставьте криптографию нам, экспертам»), но описанные в ней примеры показались мне довольно интересными и заслуживающими внимания.
Кроме того, никогда не будет лишним повторить прописную истину: не придумывайте свою крипто-защиту. И эта статья отлично иллюстрирует почему.

Читать дальше →
Всего голосов 181: ↑168 и ↓13 +155
Комментарии 143

REST? Возьмите тупой JSON-RPC

Время на прочтение 4 мин
Количество просмотров 162K
PHP *JavaScript *API *
В последнее время на Хабре разгорелось много споров по поводу того, как правильно готовить REST API.

Вместо того, чтобы бушевать в комментариях, подумайте: а нужен ли вам REST вообще?
Что это — осознанный выбор или привычка?

Возможно, именно вашему проекту RPC-like API подойдет лучше?
Читать дальше →
Всего голосов 233: ↑229 и ↓4 +225
Комментарии 255

Новая хронология Ийона Тихого

Время на прочтение 8 мин
Количество просмотров 8.2K
Научная фантастика
image

Станислав Лем — великий писатель. Но, неаккуратный.

По крайней мере, так думал я, когда был ребёнком. Потому что в его циклах нет внутренней хронологии. Пилот Пиркс, живший до появления межзвездных перелетов, запросто мог, в одном из рассказов, оказаться на Йоте дробь 116, дробь 47 Проксимы Водолея, а странствующий по галактике Ийон Тихий числил в друзьях живущего в послевоенной Польше профессора Тарантогу.

Я годами вертел эти факты, пытаясь выстроить непротиворечивую историю. Получалось как-то не очень — особенно, если учесть что сам пан Станислав, постоянно подбрасывал мне уголька — пиша романы, которые еще больше расшатывали хронологию.

Современным детям проще. У них есть мультивселенная. Бэтмен может сделать с Женщиной кошкой абсолютно все: подружиться, поссориться, оказаться ей — и это никак не скажется на достоверности. Миры-то разные, понимаете?

Урезав дальнейшее повествование, сразу перейду к выводам. Я сумел собрать непротиворечивую историю.

Представляю на ваш суд своё дополнение к «Дневника Йона Тихого». Не воспринимайте серьёзно!
Читать дальше →
Всего голосов 33: ↑23 и ↓10 +13
Комментарии 26

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность