Pull to refresh
0
max7 @max7read⁠-⁠only

User

Send message

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

Reading time14 min
Views29K

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

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

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

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

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

Reading time11 min
Views10K
Однажды в одном из проектов в мои руки попал фискальный принтер. Мы каждый день сталкиваемся с этими устройствами, когда совершаем платежи в магазинах, но мало кто догадывается что на самом деле они из себя представляют. Не буду вдаваться в подробности их работы, просто скажу, что это такие штучки, которые печатают чеки с данными о покупке на специальной термобумаге (да-да, почти во всех фискальных принтерах нет чернил!).

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

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

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


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

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

Reading time1 min
Views453K
А так же узнаем ФИО и паспортные данные по номеру автомобиля если он взят в кредит.
Без регистрации и СМС.
Читать дальше →
Total votes 102: ↑98 and ↓4+94
Comments87

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

Reading time3 min
Views37K
Во многих компаниях использующих IP-телефонию и применяющих GSM-шлюзы для корпоративной связи часто возникает вопрос приема и отправки СМС со своих номеров.

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

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

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

Reading time7 min
Views40K
image

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

image


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

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

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

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

Reading time5 min
Views145K
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) трафиком.
Читать дальше →
Total votes 166: ↑160 and ↓6+154
Comments216

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

Reading time3 min
Views43K
В код клиентов Telegram добавили возможность маскировки под HTTPS (TLS + HTTP/2.0).



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

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

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

Reading time12 min
Views22K
Наталия Шергина, фрилансер-редактор и студентка Нетологии, специально для блога перевела лонгрид Richard Rutter о типографике веб-таблиц.



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

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

Reading time11 min
Views39K
image


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

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

Но так ли это на самом деле?
Читать дальше →
Total votes 90: ↑89 and ↓1+88
Comments67

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

Reading time28 min
Views29K
Данная статья о том как настроить современный почтовый сервер.
Postfix + Dovecot. SPF + DKIM + rDNS. С IPv6.
С шифрованием TLS. С поддержкой нескольких доменов — часть с настоящим SSL сертификатом.
С антиспам-защитой и высоким антиспам-рейтингом у других почтовых серверов.
С поддержкой нескольких физических интерфейсов.
С OpenVPN, подключение к которому через IPv4, и которое даёт IPv6.

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

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

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

Reading time19 min
Views57K
В данный момент ноутбуки и персональные компьютеры сильно отличаются друг от друга. Под системным блоком стационарного компьютера, как правило, понимается «башня» преимущественно стандарта midi-tower, весом килограмм в 15-20 (или больше), занимающий огромное пространство под столом. Чтобы перемещать системный блок с места на место, как правило, требуются большие усилия.

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

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

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

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

Reading time56 min
Views51K
В данной статье рассматривается перехват функций графического API на примере DirectX 9 под x64 применительно к игре Dota 2.

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



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

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

Reading time4 min
Views66K
Сервисы, предоставляющие временный номер для приема смс онлайн, появились после того как многие социальные сети, торговые площадки и прочие интернет ресурсы перешли с идентификации пользователя, при регистрации, через адрес электронной почты на идентификацию через отправленный код на телефонный номер, а зачастую и код на телефонный номер и подтверждение через электронную почту.

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


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

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

Reading time7 min
Views26K
image

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

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

image

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

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

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

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

Reading time4 min
Views29K
Не так давно передо мной встала задача предоставить зарегистрированным в моих каталогах, промышленной, автомобильной и риэлторской тематики, организация личный почтовый ящик с именем моего домена. Вместо того, чтобы выдавать пользователям каталога непосредственные контактные данные, было определено, что более продуктивно будет выдавать им контактные данные с названием моего домена. Что должно увеличить посещаемость, как среди пользователей, так и среди самих организаций.
Читать дальше →
Total votes 12: ↑4 and ↓8-4
Comments15

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

Reading time3 min
Views36K
Оказавшись обладателем среднего такого планшета с нерабочим сенсором (старшенький сынуля постарался) долго думал, куда приспособить. Гуглил, гуглил и нагуглил (раз, два, Хакер №227), а так же много других рецептов с участием spacedesk, iDispla и некоторых других. Вот только незадача — у меня Linux. Погуглив ещё, я нашел несколько рецептов и путем несложного шаманства получил приемлемый результат.

Читать дальше →
Total votes 72: ↑65 and ↓7+58
Comments35

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

Reading time14 min
Views102K


Введение


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

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

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

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

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

Читать дальше →
Total votes 181: ↑168 and ↓13+155
Comments143

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

Reading time8 min
Views8.5K
image

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

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

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

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

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

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

Точечная маршрутизация на роутере с OpenWrt. WireGuard и DNSCrypt

Level of difficultyMedium
Reading time13 min
Views125K
Данный материал не является призывом к действию и публикуется исключительно в образовательных целях.

UPD 14.10.2023
Эта статья немного устарела. Здесь можно узнать, как использовать готовые списки IP-адресов, что не совсем актуально. Актуальная статья с маршрутизацией по доменам: https://habr.com/ru/articles/767464/


UPD 16.10.2022


  • Исправлены конфиги для Openwrt 22
  • Добавлен community список
  • В скрипт добавлена проверка загрузки файлов. Которая решает проблему, если при старте устройства не удалось сразу загрузить списки
  • DNSCrypt изменён на DNSCrypt v2

UPD 15.03.2023


  • Добавлена логика для работы с доменами, используются список доменов из community
  • Изменена проверка загрузки файлов в скрипте
  • В Ansible playbook теперь можно выбрать определённые списки

UPD 20.04.2023
Если у вас роутер получает IPv6 адрес, то роутинг будет работать криво. Пока нет инструкции для IPv6, поэтому нужно будет его выключить на роутере.


Часть 2: Поиск и исправление ошибок


Чем отличается от подобных материалов?


  • Реализация на чистом OpenWrt
  • Использование WireGuard
  • Конфигурация роутера организуется с помощью конфигов OpenWrt, а не кучей в одном скрипте
  • Предусмотрены ситуации при рестарте сети и перезагрузке
  • Потребляет мало ресурсов роутера: подсети содержатся в ipset, а не в таблицах маршрутизации. Что позволяет развернуть это дело даже на слабых устройствах
  • Автоматизация конфигурации с помощью Ansible (не требуется python на роутере)
Читать дальше →
Total votes 62: ↑61 and ↓1+60
Comments106
1
23 ...

Information

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