Pull to refresh
62
0
Дмитрий Лобашевский @0decca

User

Send message

Некоторые малоизвестные фичи, фокусы и причуды языка C

Reading time19 min
Views28K

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

Конечно же, здесь я не берусь перечислять абсолютно всё, так как факты из разряда «функция nan() не может устанавливать errno, поскольку в определённых ситуациях поведёт себя как strtod()» не слишком интересны.

ВНИМАНИЕ: сам факт попадания тех или иных вещей в эту подборку  не означает автоматически, что я рекомендую или, наоборот, не рекомендую ими пользоваться! Некоторые из приведённых примеров никогда не должны просачиваться за пределы списков наподобие этого, тогда как другие примеры невероятно полезны! Уверен, что могу положиться на ваш здравый смысл, дорогие читатели.

Читать далее
Total votes 82: ↑81 and ↓1+100
Comments45

Synthetic Minority Oversampling Technique

Reading time6 min
Views798

В datascience все уже знают о важности данных для успеха любого проекта с машинным обучением. Часто бывает, что сами данные представляют собой гораздо большую ценность, чем модель, которая на них обучилась, поскольку процесс получения этих данных может быть гораздо сложнее, опаснее, дороже, чем обучение модели. Поэтому набирает популярность генерация наборов данных, создаются специальные фреймворки. Сегодня речь пойдет об одном из таких фреймворков, SMOTE, или же Synthetic Minority Oversampling Technique. За два последних десятилетия накопилось довольно много материала по этой технике. Ключевое отличие этой статьи в экспериментах, которые проводились в ходе исследования работоспособности такого типа овэрсэмплинга.

Постановка проблемы

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

Читать далее
Total votes 4: ↑4 and ↓0+4
Comments0

Как работает генерация видео в open source проекте Wunjo CE

Level of difficultyEasy
Reading time9 min
Views1.7K

Генерация видео теперь open source? Наконец-то я нашёл время, чтобы добавить генерацию видео из текста и изображений в свой open source проект Wunjo CE. В этой статье мы рассмотрим, как это работает, сравним его с похожими решениями, изучим основы подхода и его альтернативы.

Смотрим
Total votes 14: ↑12 and ↓2+14
Comments6

Ирина — опенсорс русский голосовой помощник. Offline-ready

Reading time9 min
Views54K

- Ирина, таймер...
- Ставлю таймер на пять минут.

Вполне себе обыденная история из моего быта. Я таки сделал собственного автономного голосового помощника.

TL;DR> Ирина вполне неплохо работает дома 24x7.

Потребуется установить Python 3.5+ и зависимости через pip (немного знаний Python).

Скиллы "из коробки": таймер, погода, контроль медиа (громче/тише/дальше), контроль плеера MPC-HC, запуск медиа из папки, расписание ближайших электричек, "подбрось кубик/монетку".

Плагинами добавляются: другие скиллы, Text-to-Speech и Speech-to-Text движки.

Интересно? Поехали >
Total votes 91: ↑89 and ↓2+106
Comments88

Ноутбук с процессором RISC-V: современный лэптоп на базе ОС Linux. Что это за девайс?

Reading time4 min
Views10K

Похоже на то, что популярность архитектуры RISC-V постепенно растет. Это и неудивительно, учитывая ее бесплатность и отсутствие необходимости выплачивать лицензионные отчисления кому бы то ни было. Устройств на базе новых чипов тоже все больше. На днях появился ноутбук с крайне оригинальным названием Laptop II, выпущен он брендом DC-ROMA. Подробности — под катом.

Читать далее
Total votes 11: ↑8 and ↓3+12
Comments56

Об управлении esp32-машинками (и не только) через wifi/websocket-ы с помощью пульта на базе смартфона

Level of difficultyMedium
Reading time10 min
Views10K
Картинка Freepik

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

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

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

Читать дальше →
Total votes 36: ↑35 and ↓1+46
Comments18

Делаем резервное копирование кластера ClickHouse: простая инструкция

Reading time4 min
Views3.3K

Делаем резервное копирование кластера ClickHouse: простая инструкция

Меня зовут Леонид Блынский и я администратор баз данных в Лиге Цифровой Экономики. В этой небольшой статье расскажу, как я делаю резервное копирование кластера ClickHouse размером 20 ТБ.

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

Читать далее
Total votes 5: ↑5 and ↓0+6
Comments2

Создание своего UEFI приложения

Level of difficultyMedium
Reading time5 min
Views43K

Привет, Хабр! Мне 16 лет, я студент, учусь на первом курсе колледжа на программиста. Начал увлекаться низкоуровневым программированием на Ассемблере и C/C++

Я заметил что на Хабре есть множество статей о написании своих простых "загрузчиков" для BIOS-MBR, которые выводят на экран "Hello World!". И при этом практически нет ни одной статьи о создании того же самого, но только для UEFI, хотя будущее именно за ним, ведь BIOS уже давно устарел! Это я и хочу исправить в этой статье.

Читать далее
Total votes 72: ↑71 and ↓1+84
Comments80

InstantID: Создание персонализированных изображений по одному фото. И лучший бесплатный генератор нейро-аватарок

Level of difficultyEasy
Reading time8 min
Views23K

Друзья, всем привет, вышла в свет новая удивительная технология, на гите она подписана как InstantID : Zero-shot Identity-Preserving Generation in SecondsНо по факту это самый крутой генератор аватарок в мире, который по одной лишь вашей фотографии может создать персонализированное изображение с вашим лицом в любом стиле по текстовому запросу используя SDXL модели Stable Diffusion. Так что к концу этой статьи, у вас так же как и у меня будет десяток новых аватарок и совершенно бесплатно.

В статье много красивых и тяжелых картинок.

Читать далее
Total votes 43: ↑39 and ↓4+43
Comments18

Как (быстро) сделать русский локальный ChatGPT

Level of difficultyMedium
Reading time7 min
Views42K

Эта история началась в начале марта этого года. ChatGPT тогда был в самом расцвете. Мне в Telegram пришёл Саша Кукушкин, с которым мы знакомы довольно давно. Спросил, не занимаемся ли мы с Сашей Николичем языковыми моделями для русского языка, и как можно нам помочь.

И так вышло, что мы действительно занимались, я пытался собрать набор данных для обучения нормальной базовой модели, rulm, а Саша экспериментировал с существующими русскими базовыми моделями и кустарными инструктивными наборами данных.

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

Читать далее
Total votes 70: ↑69 and ↓1+88
Comments54

STM32. Подготавливаем среду разработки в Linux

Level of difficultyEasy
Reading time21 min
Views26K
В недавнем времени получилось так, что у меня появилась пара интересных проектов, где одна из составных частей — микроконтроллер STM32. И каждый раз при смене ноутбука или ОС на домашнем компе приходится настраивать окружение для разработки как в первый раз. Плюсом, последние проекты, которые я делал для STM32 — выполнял в Windows, в демо-версии Keil uVision. Но поскольку я давно переехал в Linux — возникла необходимость основательно разобраться и изложить процесс настройки окружения для будущих применений.

Всем, кому интересно — добро пожаловать под кат.

Читать дальше →
Total votes 53: ↑52 and ↓1+61
Comments36

Что нам стоит д̶о̶м̶ голограмму построить?

Reading time9 min
Views12K
Картинка freepik

Голограмма… Известное многим слово, за которым скрываются высокие технологии, сулящие большие перспективы в деле хранения информации, защиты, а также художественном самовыражении.

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

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

Как научить бабушку писать мемуары на самоизоляции с помощью VOSK-API. «Речь в текст» спешит на помощь

Reading time10 min
Views7.8K
В ряде статей, опубликованных на этом сайте, есть описание того, что на рынок вышла новая Open Source платформа AI «речь в текст» VOSK-API. Ее инсталляция и один из способов применения расписан достаточно подробно в ее документации. Привожу ссылку на Гитхаб VOSK-API, рекомендую пробовать октябрьскую версию 2020 года.



Ознакомившись с комментариями и критикой в статье мне захотелось рассказать о моем полугодовом опыте работы с данной системой, привести четыре примера решенных на ней задач.
Читать дальше →
Total votes 5: ↑5 and ↓0+5
Comments4

Неочевидные лайфхаки 3D реконструкции людей

Reading time4 min
Views7.3K

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

Читать далее
Total votes 18: ↑18 and ↓0+18
Comments12

Transformer — новая архитектура нейросетей для работы с последовательностями

Reading time7 min
Views85K

Необходимое предисловие: я решил попробовать современный формат несения света в массы и пробую стримить на YouTube про deep learning.


В частности, в какой-то момент меня попросили рассказать про attention, а для этого нужно рассказать и про машинный перевод, и про sequence to sequence, и про применение к картинкам, итд итп. В итоге получился вот такой стрим на час:



Я так понял по другим постам, что c видео принято постить его транскрипт. Давайте я лучше вместо этого расскажу про то, чего в видео нет — про новую архитектуру нейросетей для работы с последовательностями, основанную на attention. А если нужен будет дополнительный бэкграунд про машинный перевод, текущие подходы, откуда вообще взялся attention, итд итп, вы посмотрите видео, хорошо?


Новая архитектура называется Transformer, была разработана в Гугле, описана в статье Attention Is All You Need (arxiv) и про нее есть пост на Google Research Blog (не очень детальный, зато с картинками).


Поехали.

Читать дальше →
Total votes 64: ↑61 and ↓3+58
Comments7

Как развитие алгоритмов сжатия остановилось 20 лет назад, или о новом конкурсе на 200 тысяч евро

Reading time18 min
Views72K

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

Пост набрал 206 «плюсов», вышел на 2 место топа недели и вызвал оживленную дискуссию, в которой мне больше всего понравился комментарий: «Коммерческого интереса эффективность по сжатию алгоритмов сжатия без потерь сегодня не представляет, в силу отсутствия принципиально более эффективных алгоритмов. Деньги сегодня — в сжатии аудио-видео. И там и алгоритмы другие. Тема сжатия без потерь удобна именно лёгкостью верификации алгоритма, и не слегка устарела. Лет на 20.» 

Поскольку я сам уже 20 лет в области сжатия видео, с ее бурным развитием мне спорить сложно. А вот что сжатие без потерь развиваться перестало… Хотя логика тут понятна каждому. Я до сих пор пользуюсь ZIP, все мои друзья пользуются ZIP с 1989 года — значит, ничего нового не появляется. Так ведь? Похоже рассуждают сторонники плоской земли. ))) Я не видел, знакомые не видели, и даже некоторые авторитеты утверждают, значит, это так! 

О том, как Intel просили меня не прекращать читать курс по сжатию, ибо людей нет новые алгоритмы делать, я в прошлый раз писал. Но тут и Huawei в ту же дуду дует! Вместо того, чтобы раздать призы и должности победителям, а затем успокоиться, поскольку развитие давно встало, эти эксцентричные люди посчитали конкурс крайне успешным и запустили новый с призовым фондом 200 тысяч EUR.

Развивались ли алгоритмы сжатия без потерь в последние 20 лет? Чем закончился прошлый конкурс и на сколько опередили baseline? Сколько денег получили русские таланты, а сколько зарубежные? И есть ли вообще жизнь на Марсе в сжатии без потерь? 

Кому интересно — добро пожаловать под кат! 
Читать дальше →
Total votes 198: ↑197 and ↓1+255
Comments134

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

Reading time1 min
Views15K
Вчера здесь вышла статья о быстром парсинге 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 обнуляет старший бит.
Читать дальше →
Total votes 35: ↑33 and ↓2+48
Comments83

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

Reading time4 min
Views7.9K

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

Речь идет о преобразовании телефона в цифрового секретаря, который всегда готов прийти на помощь. Для реализации проекта нужна плата Raspberry Pi Zero и подключение к Google Assistant. Ну а теперь — подробнее о проекте.
Total votes 33: ↑30 and ↓3+32
Comments7

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

Reading time3 min
Views287K
Автор статьи, перевод которой мы сегодня публикуем, хочет рассказать о том, как взломать Wi-Fi-сеть, для защиты которой используются протоколы WPA и WPA2.


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

Читать дальше →
Total votes 43: ↑26 and ↓17+27
Comments53

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

Reading time12 min
Views28K

image


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


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


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

Читать дальше →
Total votes 127: ↑127 and ↓0+127
Comments43
1
23 ...

Information

Rating
Does not participate
Location
Одесса, Одесская обл., Украина
Date of birth
Registered
Activity