Обновить
0
0
Владимир Савин@WowaBBS

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

Отправить сообщение

Аутизм и мозг

Время на прочтение9 мин
Охват и читатели74K
Шелдон Купер, Шерлок по версии BBC и Эбед из "Сообщества" заходят в бар. Бармен поднимает взгляд и говорит: «Это что, будет анекдот про чрезмерное использование образа аутиста в кино?».

image
Симптомы аутизма: нестандартное обращение с игрушками; неумение налаживать отношение с другими; смех или плач невпопад; гиперактивность или пассивность; слишком большая или маленькая чувствительность к звукам; странная привязанность к объектам; плохая речь или её отсутствие; сложности с изменением привычек; невнимание к опасности.
Читать дальше →

Изменение размера изображения с учётом содержимого

Время на прочтение10 мин
Охват и читатели20K

Изменение размера изображения с учётом содержимого (Content Aware Image Resize), жидкое растяжение (liquid resizing), ретаргетинг (retargeting) или вырезание шва (seam carving) относятся к методу изменения размера изображения, где можно вставлять или удалять швы, или наименее важные пути, для уменьшения или наращивания изображения. Об этой идее я узнал из ролика на YouTube, от Shai Avidan и Ariel Shamir.


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


Для подопытной картинки, я поискал по запросу1 "sample image", и нашел её2:


image

Читать дальше →

Pix2Pix: Как работает генератор кошечек

Время на прочтение3 мин
Охват и читатели60K

Вы все, наверное, уже видели сверх-реалистичных кошечек, которых можно рисовать вот тут.


image


Давайте разбираться, что же там внутре.

Читать дальше →

Считаем до трёх

Время на прочтение4 мин
Охват и читатели33K

Троичные вычисления


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



Я выбрал сбалансированную троичную систему, в которой один трит может представлять одно из трёх значений -1, 0 или 1. Весьма подробно о ней можно почитать тут.

На любые вопросы из разряда «зачем?!» я отвечаю заранее: «Because I can».


Читать дальше →

Нейронные сети в картинках: от одного нейрона до глубоких архитектур

Время на прочтение7 мин
Охват и читатели99K
Многие материалы по нейронным сетям сразу начинаются с демонстрации довольно сложных архитектур. При этом самые базовые вещи, касающиеся функций активаций, инициализации весов, выбора количества слоёв в сети и т.д. если и рассматриваются, то вскользь. Получается начинающему практику нейронных сетей приходится брать типовые конфигурации и работать с ними фактически вслепую.

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

Рождение нового алгоритма по имени Broo и сравнение с Brotli и остальными

Время на прочтение11 мин
Охват и читатели8.7K
Доброго времени суток хабравчане и гости сайта, речь пойдет об алгоритме сжатия без потерь, который является совместным «ребенком». В данной статье будут приведены промежуточные результаты которых удалось добиться, в виде таблиц сравнения с популярными алгоритмами.

Коротко об алгоритме


Основная идеология для алгоритма была составлена в нескольких характеристиках:
Читать дальше →

Самая простая в мире lock-free хеш-таблица

Время на прочтение6 мин
Охват и читатели20K
image

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

Модель Акторов и C++: что, зачем и как?

Время на прочтение20 мин
Охват и читатели44K

Данная статья является доработанной текстовой версией одноименного доклада с конференции C++ CoreHard Autumn 2016, которая проходила в Минске в октябре прошлого года. Желание сделать эту статью возникло под впечатлением о том, что в мире C++ разработчики как бы делятся на два больших и не пересекающихся лагеря. В первом лагере находятся матерые спецы, которые все видели, все знают и все умеют, за плечами у которых десятки собственноручно написанных реализаций Модели Акторов, внутрях у которых хитрые, конечно же самостоятельно сделанные, lock-free очереди и state-of-the-art механизмы обслуживания сообщений. Такие проффи сами часами могут рассказывать про тонкости многопоточного программирования (только почему-то редко это делают). Во втором лагере — зеленые новички, которых волею судьбы занесло в мир C++, которые пока слабо представляют себе различия между unique_ptr и shared_ptr, про шаблоны только слышали, а в области многопоточности имеют поверхностное впечатление только о std::thread, std::mutex и, может быть, std::condition_variable. Для людей из первого лагеря я вряд ли что-нибудь интересное расскажу, а вот разработчикам из второго лагеря попробую вкратце рассказать о том, что Модель Акторов в C++ — это нормально. И что есть ряд готовых инструментов, на примере которых можно увидеть, что же это такое.

Читать дальше →

Практика метапрограммирования на C++: бинарное дерево поиска на этапе компиляции

Время на прочтение27 мин
Охват и читатели57K
Создатели шаблонов в C++ заложили основу целого направления для исследований и разработки: оказалось, что язык шаблонов C++ обладает полнотой по Тьюрингу, то есть метапрограммы (программы, предназначенные для работы на этапе компиляции) C++ в состоянии вычислить всё вычислимое. На практике мощь шаблонов чаще всего применяется при описании обобщенных структур данных и алгоритмов: STL (Standard Template Library) тому живой пример.

Однако, с приходом C++11 с его variadic-шаблонами, библиотекой type_traits, кортежами и constexpr'ами метапрограммирование стало более удобным и наглядным, открыв дорогу к реализации многих идей, которые раньше можно было воплотить только с помощью расширений конкретного компилятора или сложных многоэтажных макросов.

В данной статье будет разработана реализация бинарного дерева поиска времени компиляции: структуры данных, являющейся логическим «расширением» кортежа. Мы воплотим бинарное дерево в виде шаблона и попрактикуемся в метапрограммировании: переносе рекурсивных и не только алгоритмов на язык шаблонов C++.
Читать дальше →

А что если учить школьников одновременно ПЛИС-ам и микроконтроллерам? Более объемная картина мира или шарики за ролики?

Время на прочтение5 мин
Охват и читатели23K
В последние семь лет ко мне неоднократно обращались преподаватели детских кружков с вопросом, что бы такое придумать для детей в области электроники, чтобы было 1) интересно 2) конвертировалось бы в будущую специальность и 3) давало бы что-нибудь качественно другое, чем уже устоявшиеся среди преподавателей лего-ардуины-и-разберри-паи.

Подход, который я хотел бы предложить в этой заметке — это конструирование устройств на основе макентной платы, используя примитивы разных уровней абстракции. Прежде чем описать суть предложения, я приведу аналогию. Допустим, нам нужно исследовать местность между городом A и городом B. Из A в B можно проехать на автомашине, рассматривая окрестности дороги. Но еще лучше — проехать не только на автомашине, но и потом проплыть тот же маршрут на подводной лодке, пролететь его на самолете, походить в некоторых местах пешком, а также прорубить кусок шахты на участке между городами на проходческом комбайне. По ходу дела ученик получит не только опыт вождения автомобиля, но и представление о структуре недр, морской экосистеме, нравах жителей и общей карте местности.


Теперь суть предложения. Ученик за несколько дней выполняет серию простых электронных проектов, которые имеют сходную функциональность, но используют в качестве строительных кубиков разные объекты, в том числе:

1. Микросхемы малой степени интеграции, по несколько логических элементов в каждой
2. Программируемые логические интегральные схемы, десятки тысяч ячеек с изменяемой логической функцией
3. Микроконтроллеры
4. Встраиваемые процессоры
Читать дальше →

Движение в Галактике: гифки

Время на прочтение4 мин
Охват и читатели29K


Наблюдая ясной ночью купол звездного неба легко поверить в его незыблемость и неподвижность, однако еще древние люди заметили, что движутся в небе не только Солнце и Луна. Наблюдая ночь за ночью, первые астрономы обнаружили планеты, что означает “бродячие”, и это было только самое начало. На самом деле, вся Вселенная находится в движении, и лишь наш короткий человеческий век не позволяет наблюдать всю масштабность и величие этого процесса. Пока наблюдение движения в космосе нам доступно в пределах Солнечной системы, но успехи астрономии позволяют заглянуть и дальше.
Читать дальше →

Создание вредоносных программ. Ответственность

Время на прочтение12 мин
Охват и читатели36K
Я не работаю по RU и СНГ в частности, а значит, чист перед законом. Не надо меня тыкать в УК РФ, его знаю отлично и не нарушаю. Такое у нас УПК, что не считает нарушением 272/273, если не причинило вред Российской Федерации. Таким образом, я отказываюсь от ответственности от сказанного мною тут, а также не несу никакой ответственности за причиненные действия после прочтения этой статьи. И вообще — я завязал. Я добрый, хольте и лелейте.

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

Красота рендеринга игровых кадров: Краткий обзор инструментов + Интересное видео

Время на прочтение5 мин
Охват и читатели21K
Пытливость ума и желание знать как все работает изнутри выделяет технаря из массы пользователей. В этом небольшом посте я бы хотел поделиться с любознательным сообществом небольшими роликами и кратким рецептом использования профилирующего софта для 3D приложений.


Кому любопытно, прошу пройти

Генераторы в действии

Время на прочтение8 мин
Охват и читатели104K

Небольшое вступление


Не так давно я решил для себя, что пора восполнить большой пробел в знаниях и решил прочитать про переходы между версиями PHP, т.к. понимал, что остался где-то между 5.2 и 5.3 и этот пробел необходимо как-то устранить. До этого я читал про namespaces, traits и т.д, но дальше чтения не уходило. И вот тут я заметил генераторы, почитал документацию, одну из статей на хабре на этот счет и после этого возникла мысль — а как раньше без них жили-то?

Данным переводом хочу помочь хотя бы новичкам, поскольку на php.net документация по генераторам на английском и, на мой взгляд, должным образом не раскрывает всю идею и места применения. Текста много, кода чуть меньше, картинок нет. Потребуются общие знания, например, про итераторы. Очевидный код комментировать не буду, а вот сложные для понимания примеры постараюсь объяснить в силу своих знаний.

UPD1: Изменил расплывчатую формулировку, про которую говорили в комментариях.
UPD2: Добавил решение с принудительным break.

И сразу под хабракат

Иллюзии мозга. Иллюзия «конца истории»

Время на прочтение4 мин
Охват и читатели24K

Рисунок: Randy Mora

Иллюзия конца истории — очень интересный феномен, который проявляется у людей практически всех возрастов (исследование 2013 года проводили на выборке более 19 000 респондентов в возрасте от 18 до 68 лет). Суть этой иллюзии в том, что люди любого возраста считают, что их личность сильно изменилась в прошлом, но слабо изменится в будущем. Эффект очень стабильный и, повторим, проявляется в любом возрасте.
Читать дальше →

Управление памятью: Взгляд изнутри

Время на прочтение26 мин
Охват и читатели77K

Доброго времени суток!
Хочу представить вашему вниманию перевод статьи Джонатана Барлетта (Jonathan Bartlett), который является техническим директором в компании New Medio. Статья была опубликована 16 ноября 2004 года на сайте ibm.com и посвящена методам управления памятью. Хотя возраст статьи достаточно высок (по меркам IT), информация в ней является фундаментальной и описывает подходы к распределению памяти, их сильные и слабые стороны. Всё это сопровождается «самопальными» реализациями, для лучшего усвоения материала.

Аннотация от автора
Решения, компромиссы и реализации динамического распределения памяти
Получите представление о методах управления памятью, которые доступны Linux разработчикам. Данные методы не ограничиваются языком C, они также применяются и в других языках программирования. Эта статья даёт подробное описание как происходит управление памятью, на примерах ручного подхода (manually), полуавтоматического (semi-manually) с использованием подсчёта ссылок (referencing count) или пула (pooling) и автоматического при помощи сборщика мусора (garbage collection).

Читать далее...

Reedy – Скорочтение, которое действительно можно использовать

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели247K
Reedy – продвинутая реализация технологии скоростного чтения

В последнее время наблюдается рост интереса к скорочтению на основе технологии RSVP. Однако большинство приложений и расширений на эту тему, при более близком знакомстве, увы, оказываются не очень удобны для ежедневного использования. А ведь в потенциале они могу помочь значительно экономить время и быстрее получать информацию. Мой друг OlegCherr решил доработать технологию, создав реализацию пригодную для постоянного использования, а я ему в этом помогаю. После двух месяцев постоянной практики чтения, тестирования, исследований и улучшений решил написать статью с разбором того, что получилось в результате, потому что результат, смею считать, будет интересен и другим. На текущий момент всё выполнено в виде расширения к браузеру Chrome и названо Reedy. Приложение под Android на подходе.
Подробности

Интеграция FATFS библиотеки для организации чтения дискового устройства на iOS

Время на прочтение5 мин
Охват и читатели5.1K

Введение


Статья посвящена внедрению open source библиотеки на iOS для чтения/записи данных с MFI дискового устройства на основе FAT12/FAT16/FAT32/Exfat. Представлен способ построения архитектуры приложения, на основе FATFS библиотеки, а также методы отладки и тестирования проводных MFI-устройств. Статья практически не содержит кода из-за соблюдения NDA.
Читать дальше →

Новый кодек Codec2 700C сжимает речь до 700 бит/c

Время на прочтение4 мин
Охват и читатели32K

В программе для цифровой радиопередачи FreeDV скоро можно будет проверить новый кодек в работе

Автор свободного голосового кодека Codec2, предназначенного для сверхплотного кодирования речи на голосовых каналах, выпустил новую версию Codec2 700C, в которой ему удалось закодировать различимую человеческую речь всего в 700 бит/с. Это значит, что трёхсекундная голосовая передача с различимой речью займёт всего лишь 260 байт.

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

Реализация блочного шифра «Кузнечик» с режимом CFB на С++

Время на прочтение10 мин
Охват и читатели29K
Сегодня речь пойдёт о новом алгоритме блочного шифрования «Кузнечик» из стандарта ГОСТ Р 34.12 2015. В последнее время выходит множество публикаций, посвященных этому стандарту. В них с теоретической точки зрения описываются приведённый алгоритм, изучаются особенности отельных преобразований, а так же предлагаются способы оптимизации, путём включения вставок кода на языке ассемблера.

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

Структура программы


Программа состоит из трех частей
  • набор вспомогательных функций и классов — mycrypto.cpp mycrypto.hpp
  • блочный шифр «Кузнечик» — Kuznyechik.cpp Kuznyechik.hpp
  • режим шифрования Cipher Feed Back — modes.hpp
Читать дальше →

Информация

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