Как стать автором
Обновить
62
Карма
0
Рейтинг
Дмитрий Лобашевский @0decca

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

  • Подписчики 23
  • Подписки 2
  • Публикации
  • Комментарии

Быстрое сравнение double

Высокая производительностьНенормальное программированиеC
Вчера здесь вышла статья о быстром парсинге double, я зашёл во блог к её автору, и нашёл там ещё один интересный трюк. При сравнении чисел с плавающей точкой особое внимание приходится уделять NaN (восемь лет назад я писал про них подробнее); но если сравниваемые числа заведомо не NaN, то сравнить их можно быстрее, чем это делает процессор!

Положительные double сравнивать очень просто: нормализация гарантирует нам, что из чисел с разной экспонентой больше то, чья экспонента больше, а из чисел с равной экспонентой больше то, чья мантисса больше. Стандарт IEEE 754 заботливо поместил экспоненту в старшие биты, так что положительные double можно сравнивать просто как int64_t.



С отрицательными числами немного сложнее: они хранятся в прямом коде, тогда как int64_t — в дополнительном. Это значит, что для использования целочисленного сравнения младшие 63 бита double необходимо инвертировать (при этом получится -0. < +0., что не соответствует стандарту, но на практике не представляет проблемы). Явная проверка старшего бита и условный переход уничтожили бы всю выгоду от перехода к целочисленному сравнению; но есть способ проще!

inline int64_t to_int64(double x) {
	int64_t a = *(int64_t*)&x;
	uint64_t mask = (uint64_t)(a >> 63) >> 1;
	return a ^ mask;
}

inline bool is_smaller(double x1, double x2) {
	return to_int64(x1) < to_int64(x2);
}

a>>63 заполняет все 64 бита копиями знакового бита, и затем >>1 обнуляет старший бит.
Читать дальше →
Всего голосов 52: ↑50 и ↓2+48
Просмотры9.6K
Комментарии 83

Превращаем дисковый телефон в цифрового помощника с использованием Google Assistant и Raspberry Pi

Блог компании SelectelРазработка на Raspberry PiГаджетыИстория ITDIY или Сделай сам

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

Речь идет о преобразовании телефона в цифрового секретаря, который всегда готов прийти на помощь. Для реализации проекта нужна плата Raspberry Pi Zero и подключение к Google Assistant. Ну а теперь — подробнее о проекте.
Читать дальше →
Всего голосов 38: ↑35 и ↓3+32
Просмотры6K
Комментарии 7

Взлом Wi-Fi-сетей, защищённых WPA и WPA2

Блог компании RUVDS.comИнформационная безопасностьСетевые технологии
Перевод
Автор статьи, перевод которой мы сегодня публикуем, хочет рассказать о том, как взломать Wi-Fi-сеть, для защиты которой используются протоколы WPA и WPA2.


Статья написана исключительно в ознакомительных целях

Читать дальше →
Всего голосов 61: ↑44 и ↓17+27
Просмотры81K
Комментарии 53

Коты в коробочках, или Компактные структуры данных

Блог компании Mail.ru GroupПрограммированиеАлгоритмыМатематика
🔥 Технотекст 2020

image


Как быть, если дерево поиска разрослось на всю оперативку и вот-вот подопрет корнями соседние стойки в серверной? Что делать с инвертированным индексом, жадным до ресурсов? Завязывать ли с разработкой под Android, если пользователю прилетает «Память телефона заполнена», а приложение едва на половине загрузки важного контейнера?


В целом, можно ли сжать структуру данных, чтобы она занимала заметно меньше места, но не теряла присущих ей достоинств? Чтобы доступ к хэш-таблице оставался быстрым, а сбалансированное дерево сохраняло свои свойства. Да, можно! Для этого и появилось направление информатики «Succinct data structures», исследующее компактное представление структур данных. Оно развивается с конца 80-х годов и прямо сейчас переживает расцвет в лучах славы big data и highload.


А тем временем на Хабре найдется ли герой, способный пересковоговорить три раза подряд
[səkˈsɪŋkt]?

Читать дальше →
Всего голосов 127: ↑127 и ↓0+127
Просмотры24K
Комментарии 42

Визуализация больших графов для самых маленьких

Блог компании Open Data ScienceData MiningВизуализация данныхМашинное обучениеИскусственный интеллект


Что делать, если вам нужно нарисовать граф, но попавшиеся под руку инструменты рисуют какой-то комок волос или вовсе пожирают всю оперативную память и вешают систему? За последние пару лет работы с большими графами (сотни миллионов вершин и рёбер) я испробовал много инструментов и подходов, и почти не находил достойных обзоров. Поэтому теперь пишу такой обзор сам.
Читать дальше →
Всего голосов 95: ↑94 и ↓1+93
Просмотры39K
Комментарии 30

Про установку и использование LineageOS 16, F-Droid

Информационная безопасность
Предлагаю вашему вниманию инструкцию как оптимально (по моему мнению) перейти на свободное программное обеспечение при использовании смартфона на примере операционной системы LineageOS (далее сокращённо LOS) и приложений из F-Droid.

Я думаю, что это статья будет вам интересна, даже если вы не можете установить себе LOS, так как в данной статье также рассмотрены стандартные настройки Android, настройки и методика использования полезных приложений, магазин приложений F-Droid, разрешения Android, которые нельзя ограничить и другие, возможно полезные для вас нюансы.
Читать дальше →
Всего голосов 74: ↑72 и ↓2+70
Просмотры201K
Комментарии 175

Погружаемся в opensource-экосистему Android

Open sourceСмартфоны
Disclaimer о том, что пост не призывает к радикальным формам фанатизма

Каждый выбирает свой "уровень погружения". Вам не обязательно следовать каждому пункту из этого поста. Моя цель — показать, насколько хорошо развита экосистема на данный момент и чего вы можете и не можете от неё получить. Делайте выводы самостоятельно. Хотите — меняйте прошивку полностью и переходите на microg. Хотите — просто поставьте на свой телефон f-droid прямо рядом с gplay. Хотите — не делайте ничего.


Давайте поговорим об экосистеме приложений свободных приложений с открытым исходным кодом на Android. Попробуем установить MicroG — свободную реализацию сервисов Google на Android. Посмотрим, как и зачем со всем этим жить.


Несколько причин, почему стоит об этом задуматься


Google Play далеко "не торт"


Далеко ходить не нужно, в соседних постах можно найти множество примеров того, как разработчиков выгоняют из Google Play по тем или иным причинам, заставляя общаться с ботами без возможности реальной аппеляции. Некоторые типы приложений теперь принципиально невозможно распространять (например, блокировщики рекламы, да и в принципе приложения обхода любых ограничений).


Мне, как параноику, не нравится, что у стороннего лица появляется практически полный доступ к моему устройству. Google способен как минимум удалить с моего телефона любое приложение в любой момент и собрать с него произвольные данные. Более того, google play service — это огромное (стандартная поставка — 600Мб, минимальная — 95Мб) количество постоянно обновляющегося кода, часть которая работает с системными привилегиями. Для сравнения, дистрибутив MicroG может весить всего 4Мб.

Читать дальше →
Всего голосов 39: ↑39 и ↓0+39
Просмотры47K
Комментарии 21

Sampler. Консольная утилита для визуализации результата любых shell команд

Open sourceПрограммированиеGoВизуализация данныхDevOps

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


Sampler


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


Код доступен на гитхабе. Инструкции по установке — для Linux, macOS и (экспериментально) Windows.

Читать дальше →
Всего голосов 298: ↑297 и ↓1+296
Просмотры77K
Комментарии 54

Обучение машины — забавная штука: современное распознавание лиц с глубинным обучением

Обработка изображенийМашинное обучение
Перевод
Вы заметили, что Фейсбук обрёл сверхъестественную способность распознавать ваших друзей на ваших фотографиях? В старые времена Фейсбук отмечал ваших друзей на фотографиях лишь после того, как вы щёлкали соответствующее изображение и вводили через клавиатуру имя вашего друга. Сейчас после вашей загрузки фотографии Фейсбук отмечает любого для вас, что похоже на волшебство:
Читать дальше →
Всего голосов 121: ↑121 и ↓0+121
Просмотры90K
Комментарии 22

Совсем не нейронные сети

Блог компании RecognitorОбработка изображенийМашинное обучение


Недавно ZlodeiBaal писал о достижениях в сверточных нейронных сетях (CNN) (и, кстати, тут же успешно настроил и обучил сеть для поиска области автомобильного номера).
А я хочу рассказать про принципиально иную и, наверное, более сложную модель, которую сейчас развивает Алексей Редозубов (@AlexeyR), и про то, как мы, конечно проигнорировав некоторые важные элементы, и ее применили для распознавания автомобильных регистрационных знаков!

В статье несколько упрощенно напомню о некоторых моментах этой концепции и покажу, как оно сработало в нашей задаче.
Читать дальше →
Всего голосов 66: ↑61 и ↓5+56
Просмотры48K
Комментарии 104

Видеоаналитика 2.0 или при чём тут оставленные предметы. Часть 1

Блог компании ООО «ВИДЕОИНТЕЛЛЕКТ»АлгоритмыОбработка изображенийМатематика
image

Какие мысли у вас возникают, когда вы слышите понятие «Видеоаналитика 2.0»?
Решение каких актуальных задач можно было бы поручить гипотетическим технологиям видеоанализа следующего поколения?

Среди популярных ответов наверняка встретятся «некооперативное распознавание личности человека среди идущей толпы с вероятностью, близкой к 100%», «выявление злоумышленников среди посетителей», “межкамерное одновременное сопровождение множества объектов без срыва трекинга”, “распознавание и классификация без ошибок всего, что видно в кадре”.

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

А самый умный кто-то скажет, что видеоаналитика 2.0 возможна только при наличии искусственного интеллекта, что на текущем уровне развития технологий невозможно. Поэтому нам ничего не остается, кроме как наблюдать за лидерами рынка аналитики, которые и так выжимают максимально возможное из имеющихся вычислительных ресурсов и ждать массового внедрения квантовых компьютеров. Надеясь, что оно все же произойдет.

Читать дальше →
Всего голосов 23: ↑21 и ↓2+19
Просмотры23K
Комментарии 8

go-скрипт который делает аудиокнигу из текстового файла используя один из лучших синтезаторов речи — Ivona от Amazon

Amazon Web ServicesAPIGo
Указываем в скрипте путь на книгу в txt — на выходе получаем папку с озвучкой хорошим синтезом.
Читать дальше →
Всего голосов 42: ↑34 и ↓8+26
Просмотры38K
Комментарии 36

Использование Google Speech API для управления компьютером

DelphiGoogle API
Из песочницы
Добрый день всем хабражителям.

На хабре уже писалось несколько статей о использовании Google Speech API, в том числе о его применении при создании Умного дома.

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

Кому интересно, прошу под кат.
Читать дальше →
Всего голосов 7: ↑6 и ↓1+5
Просмотры71K
Комментарии 12

Использование облачной АТС pbxes.com для расширения возможностей VoiP / SIP телефонии

Разработка систем связи
Так сложилось, что у меня есть несколько SIP номеров от разных VoiP операторов в разных странах мира (США, Израиль, Украина, Россия). В какой-то момент, получив очередной звонок с предложением «купить слона» на мой израильский номер в 4 часа утра (я в США, а израильский телемаркетолог об этом, естественно, не догадывается), я понял, что надо что-то делать.

В случае с израильским провайдером все было просто — в личном кабинете провайдера изменил настройки, перенаправив все звонки от незнакомых номеров (которые не в «белом списке») в voice mail с 9 вечера до 7 утра.

Все бы ничего, но через какое-то время я стал получать звонки с предложением купить украинского слона (на украинские номера от Атлантис Телеком и Интертелеком) и российского слона (на номер от Задарма). А тут уже хуже — в личных кабинетах этих трех провайдеров нет возможности перенаправить звонок в voice mail по расписанию или заблокировать какой-то номер. В Задарма и Интертелекоме вообще нет voicemail, с переадресацией тоже не все хорошо (в Задарма — только безусловная переадресация), в Атлантис Телекоме и Интертелекоме — переадресация только на телефонные номера, но не на SIP URI.

В итоге, было найдено решение с использованием облачной АТС pbxes.com.

Кому интересно, приложением под катом (много картинок)

Читать дальше →
Всего голосов 6: ↑6 и ↓0+6
Просмотры9.3K
Комментарии 1

Как компьютер сам свой код улучшал, или программируем процесс программирования

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



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

Например вот такая забавная оптимизация набора арифметических инструкций (взятых из какой-то подвернувшейся под руку математической библиотеки), соответствующих формулам: , которая на 6 джаве с выключенным JIT у меня давала около 10% ускорения, при этом на первый взгляд даже не очевидно что эти формулы эквивалентны (ОТКУДА ТУТ OR? ЭТО ВООБЩЕ ЗАКОННО?!), хотя это так. Под катом я расскажу, как именно получались такие результаты и каким образом компьютер придумывал лучший код чем тот, который мог написать я сам.
Читать дальше →
Всего голосов 45: ↑43 и ↓2+41
Просмотры33K
Комментарии 39

Основы Urho3D

Open sourceРазработка игр
Из песочницы
Tutorial
С удивлением обнаружил, что на Хабре отсутствует информация о таком замечательном движке как Urho3D. Поэтому спешу исправить это досадное упущение. В этой вводной статье я постараюсь заострить внимание на тех вещах, которые пригодятся новичкам сразу же, но в тоже время не буду залезать в глубокие дебри, чтобы сходу не перегрузить большим объемом информации.

image

Что это за зверь?


Не будет преувеличением сказать, что Urho3D по возможностям сопоставим с Unity3D и работать с ним так же легко. При этом он бесплатен без каких-либо оговорок (лицензия MIT), доступен для многих платформ (Windows, Linux, Mac OS X, Android, iOS, Raspberry Pi, HTML5), невероятно быстр и легковесен. Позволяет писать игры на AngelScript (синтаксис похож на C#), LUA и C++. Если вы заинтересовались, то добро пожаловать под кат.
Читать дальше →
Всего голосов 36: ↑36 и ↓0+36
Просмотры45K
Комментарии 36

Получаем банковскую карту, находясь за границей

Платежные системы


Есть несколько вопросов, которые встают перед фрилансерами, использующими кредитки или карты-рассрочки перед выездом за границу. Один из важнейших — это средство хранения денег и платежей. Карты русских банков по ряду причин становятся неудобны при длительном пребывании за границей — например, в случае утери, блокировки и необходимости восстановления. Или, например, при необходимости завести новый счёт в другой валюте — не полетишь же специально в Россию за этим? В последнее время добавились и политические риски. Но в итоге всё сводится к вопросу чисто логистическому: как получить банковскую карту, находясь за пределами родной страны.
Читать дальше →
Всего голосов 94: ↑88 и ↓6+82
Просмотры257K
Комментарии 174

Построение системы координат по набору расстояний

Математика
Из песочницы

Введение


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

Допустим, у нас имеется (n > 2) точек и известны все расстояния между ними. Потенциальная мерность пространства равна (n-1). Надо определить, пространству какой мерности принадлежат заданные точки, а также координаты точек в данном пространстве.
Читать дальше →
Всего голосов 15: ↑15 и ↓0+15
Просмотры16K
Комментарии 8

Искусство командной строки

Open source


Вот уже как неделю английская версия the art of command line висит в секции trending на Github. Для себя я нашел этот материал невероятно полезным и решил помочь сообществу его переводом на русский язык. В переводе наверняка есть несколько недоработок, поэтому милости прошу слать пулл-реквесты мне сюда или автору оригинальной работы Joshua Levy вот сюда. (Если PR отправите мне, то я после того, как пересмотрю изменения отправлю их в мастер-бранч Джоша). Отдельное спасибо jtraub за помощь и исправление опечаток.

Enjoy!
Всего голосов 127: ↑122 и ↓5+117
Просмотры240K
Комментарии 143

Развертывание кластера Postgres-xl для чайников

PostgreSQL
Из песочницы
Здравствуйте. Хочу поделиться с хабровчанами своим опытом развертывания кластера Postgres-xl в виде мини-инструкции для «чайников». Статей и мануалов на тему развертывания кластера postgres-xl не то чтобы много, но достаточно. И в них всех есть пару существенных недостатков на взгляд такого человека как я, который никогда прежде не занимался кластеризацией и тем более никогда прежде не работал в линукс-подобных осях. Все статьи подобного рода написаны для людей уже более-менее знакомых с линуксом и развертыванием postgresql/postgres-xl на таком окружении.

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

Так как много статей «для опытных» уже написано, и на хабре тоже, я опущу описание самого Postgres-xl, его компонентов и их типов (ролей).
Читать дальше →
Всего голосов 22: ↑21 и ↓1+20
Просмотры18K
Комментарии 20

Информация

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