Как стать автором
Обновить
9
Карма
0
Рейтинг
Андрей Черняев @DungeonLords

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

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

Задачка о функции-обертке, принимающей аргументы в произвольном порядке, и ее решение на C++17

Ненормальное программирование *C++ *
Recovery mode

Недавно на Хабре проскакивала новость о Magnit Tech++ Meet Up, и в ней упоминалась задачка, которая меня заинтересовала. В оригинале задачка формулируется так:

Определена функция с сигнатурой:

void do_something(bool a, int b, std::string_view c)

Определить функцию, принимающую в произвольном порядке аргументы типов boolintstd::string_view и вызывающую функцию do_something с переданными параметрами в качестве аргументов.

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

Итак, поехали...
Всего голосов 14: ↑13 и ↓1 +12
Просмотры 2.5K
Комментарии 16

Модные видео гличи на C++

Open source *Работа с видео *Программирование *C++ *API *
Tutorial

В этой статье рассказывается о способах создания видео фильтров на C++ для разных программ, а так же тут рекламируется моя опенсорс программа SEZE II с интересными эффектами на подобии пиксельной сортировки, эмулятора аналогового ТВ, случайного 3-битного дизеринга и прочим

Читать далее
Всего голосов 8: ↑8 и ↓0 +8
Просмотры 3.2K
Комментарии 0

Краткий курс компьютерной графики: пишем упрощённый OpenGL своими руками, статья 3.1 из 6

Программирование *C++ *Разработка игр *
Tutorial

Содержание основного курса


Улучшение кода



Общение вне хабра

Если у вас есть вопросы, и вы не хотите задавать их в комментариях, или просто не имеете возможности писать в комментарии, присоединяйтесь к jabber-конференции 3d@conference.sudouser.ru

Данная статья написана в тесном сотрудничестве (спасибо создателям XMPP) с haqreu, автором данного курса.Мы начали масштабный рефакторинг кода, направленный на достижение максимальной компактности и читаемости. Мы сознательно пошли на отказ от ряда возможных и даже очевидных оптимизаций для получения максимально доступного для понимания кода учебных примеров.
P. S haqreu буквально на днях выложит статью о шейдерах!
Познавательного чтения!
Всего голосов 51: ↑43 и ↓8 +35
Просмотры 25K
Комментарии 41

Регрессия гауссовского процесса с самого начала

Блог компании SkillFactory Математика *Машинное обучение *Читальный зал Искусственный интеллект
Перевод

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

Читать далее
Всего голосов 4: ↑4 и ↓0 +4
Просмотры 3.4K
Комментарии 0

Как я делаю цифровую минигитару

Беспроводные технологии *Развитие стартапа Производство и разработка электроники *Гаджеты DIY или Сделай сам
image

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

Меня зовут Дмитрий Дударев. Я занимаюсь разработкой электроники и очень люблю создавать различные портативные девайсы. Еще я люблю музыку. Полгода назад я взял у друга акустическую гитару чтобы попытаться научиться на ней играть по урокам из ютуба и табулатурам. Было тяжело. То ли я неправильно что-то делал, то ли плохо старался, то ли в обществе моих предков мелкая моторика вредила размножению. В любом случае, ничего кроме звуков дребезжащих струн у меня не выходило. Мое негодование усиливала постоянная расстройка струн. Да и окружающим тысячный раз слушать мою кривую Nothing else matters удовольствия не доставляло.

Но в этих муках про главное правило электронщика я не забыл. Если что-то существует, значит туда можно вставить микроконтроллер. Или, хотя бы, сделать портативную электронную модификацию.
Всего голосов 142: ↑142 и ↓0 +142
Просмотры 25K
Комментарии 79

Создание модели электронного компонента для Proteus на Lua

C *Lua *
Есть у меня несколько проектов-долгостроев, один из которых — создание компьютера на базе CDP1802. Основную плату моделировал на бумаге и в Proteus.
Довольно скоро встал ребром вопрос: как быть с элементами, которые отсутствуют в Proteus?
На многих ресурсах подробно описано, как создать свою модель на С++ в Visual Studio.
К сожалению, при сборке под линуксом этот вариант не очень удобен. Да и как быть, если не знаешь С++ или нужно редактировать модель на лету для отладки?
Да и просто хочется сосредоточиться на моделировании, максимально упростив все остальное.
Так появилась идея делать симуляторные модели с помощью скриптов — на Lua.
Заинтересовавшихся прошу под кат (гифки на 2Мб).


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

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

Блог компании SkillFactory Программирование *Читальный зал История IT Биографии гиков
Перевод

Говоря коротко, С работает везде. Этот язык — не просто большой динозавр, которому каким-то образом удалось дожить до наших дней. Он крайне практичен, поэтому невероятно успешен. Удивительно, но истоки С далеки от успехов. Он стал итогом десятилетий неудач, и, если бы не старания любящего программировать на каникулах школьного учителя, язык мог бы не появиться. Это история о невероятно медленных компьютерах, трёх Дэвидах и давнем наследии языка C. К старту курса о программировании на С++ делимся переводом статьи с краткой биографией Кристофера Стрэтчи.

Читать далее
Всего голосов 25: ↑19 и ↓6 +13
Просмотры 35K
Комментарии 108

Как выглядит тестирование электроники Flipper Zero

Блог компании Flipper Devices Inc. Тестирование IT-систем *Производство и разработка электроники *


Flipper Zero — проект карманного мультитула для хакеров в формфакторе тамагочи, который мы разрабатываем. Предыдущие посты [1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13],[14],[15],[16]

Электронику и корпуса для Flipper Zero производят на разных заводах в Китае. Сегодня мы перемещаемся на фабрику, где производят электронику, и посмотрим, как выглядит автоматическое электронное тестирование отдельных плат Флиппера.

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

В статье мы разберем первый этап — автоматическое электронное тестирование отдельных плат Flipper Zero.
Всего голосов 96: ↑94 и ↓2 +92
Просмотры 17K
Комментарии 96

Построение отказоустойчивой системы Embedded Linux на базе модуля Mars ZX3 фирмы Enclustra

Системное программирование *Разработка под Linux *FPGA *
Из песочницы
В связи с загруженностью специалистов, несколько лет назад мы вынуждены были отдать одну разработку контрагентам. Разработка велась на модуле Mars ZX3 фирмы Enclustra, в котором используется SOC ARM+FPGA Zynq-7020. Для сборки Linux использовался BSP от Enclustra (bsp-xilinx), который был немного модифицирован.

В процессе тестирования разработанного программного обеспечения, мы сразу же столкнулись с отказами ПО при выключении питания. При анализе, обнаружилось, что команды конфигурирования, отправляемые на устройство по сети, записывались в файлы, которые, при сбое питания, иногда оказывались пустыми или отсутствовали совсем. Это вынудило нас пересмотреть идеологию построения переданной нам сборки Linux. Сам процесс построения системы хорошо описан на сайте изготовителя модуля, поэтому не буду на нем останавливаться. Опишу только то, что позволило решить стоящую перед нами задачу повышения надежности и предотвращения отказов.
Читать дальше →
Всего голосов 10: ↑8 и ↓2 +6
Просмотры 4.4K
Комментарии 5

TTY — терминал, который не для домашнего использования

Настройка Linux *Системное администрирование **nix *


Возможно ли выжить используя только возможности TTY? Тут моя краткая история о том, как я мучился с TTY, желая добиться от него нормальной работы

Читать дальше →
Всего голосов 27: ↑14 и ↓13 +1
Просмотры 13K
Комментарии 23

Яндекс необъективно составляет свои топы новостей, говорится в жалобе, направленной в ФАС

IT-компании
Recovery mode
По мнению редакции REGNUM, «Яндекс», являющийся фактическим монополистом рынка интернет-СМИ, манипулирует рейтингом в своем сервисе «Топ-5 Яндекс.Новости», создавая привилегированные условия для одних и тех же СМИ, тем самым систематически нарушает закон «О защите конкуренции», сообщает ИА «Красная весна».

image
Петр Данилов ИА Красная Весна

В обоснование своей жалобы редакция ИА REGNUM приводит результаты исследования, проводившегося в течение 43 дней с 15 ноября по 27 декабря 2017 года и собравшего 4118 замеров сервиса «Топ-5 Яндекс.Новости».
Читать дальше →
Всего голосов 33: ↑29 и ↓4 +25
Просмотры 15K
Комментарии 175

Как мы делали БелАЗ. Часть 3 – Пусконаладка на разрезе

Блог компании НПФ ВЕКТОР Промышленное программирование *Программирование микроконтроллеров *Производство и разработка электроники *


Это третья статья из цикла о самосвале (первая, вторая). Теперь мы едем на карьер, устанавливать электрооборудование на машину и выезжать в первый рейс! Но, конечно же, так просто, с наскоку, ничего не ездит, и я расскажу про множество проблем с которыми мы столкнулись во время командировки. Хоть мы и испытали в прошлой статье все оборудование на лабораторном стенде, реальность бьет совсем с другой стороны. В этой статье будет много видео и фотографий!
Всего голосов 117: ↑117 и ↓0 +117
Просмотры 27K
Комментарии 117

Архитектура ассемблера Go

Блог компании Badoo Программирование *Компиляторы *C *Go *
Перевод
image Привет, Хабр! Меня зовут Марко Кевац, я системный программист Badoo в команде «Платформа», и я очень люблю Go. Если сложить эти две вещи, то вы поймёте, насколько я люблю ассемблер в Go.

Совсем недавно мы рассказывали на Хабре о том, на каких конференциях побывали. Одной из них была GopherCon 2016, где практически всем запомнился доклад Роба «Командира» Пайка про Go-шный ассемблер. Представляю вам перевод его доклада, оформленный в виде статьи. Я постарался дать в тексте как можно больше ссылок на релевантные статьи в «Википедии».
Читать дальше →
Всего голосов 82: ↑79 и ↓3 +76
Просмотры 25K
Комментарии 35

Почему GitHub не может хостить ядро Linux

Системное программирование *Git *Системы управления версиями *GitHub Разработка под Linux *
Перевод
Некоторое время назад на отличной конференции maintainerati я пообщался с несколькими друзьями-мейнтейнерами о масштабировании по-настоящему больших проектов open source и о том, как GitHub подталкивает проекты к определённому способу масштабирования. У ядра Linux абсолютно иная модель, которую мейнтейнеры-пользователи GitHub не понимают. Думаю, стоит объяснить, почему и как она работает и чем отличается.

Ещё одной причиной для написания этого текста стала дискуссия на HN по поводу моего выступления «Мейнтейнеры не масштабируются», где самый популярный комментарий сводился к вопросу «Почему эти динозавры не используют современные средства разработки?». Несколько известных разработчиков ядра энергично защищали списки рассылки и предложение патчей через механизм, похожий на пулл-реквесты GitHub, Но по крайней мере несколько разработчиков графической подсистемы хотели бы использовать более современный инструментарий, который гораздо легче автоматизировать скриптами. Проблема в том, что GitHub не поддерживает тот способ, которым ядро Linux масштабируется на огромное число контрибуторов, и поэтому мы просто не можем перейти на него, даже для нескольких подсистем. И дело не в хостинге данных на Git, эта часть явно в порядке, а дело в том, как на GitHub работают пулл-реквесты, обсуждение багов и форки.
Читать дальше →
Всего голосов 90: ↑87 и ↓3 +84
Просмотры 44K
Комментарии 55

Помоги компилятору помочь тебе

Программирование *C++ *Компиляторы *

Предисловие


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


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


Давайте же исправим эту вопиющую несправедливость, и прольём свет истины на возможности компилятора по предотвращению ошибок.

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

Рекуррентное соотношение Мюллера: проблемы с округлением чисел с плавающей точкой

Программирование *
Перевод
Некоторое время назад я натолкнулся на упражнение, которое выглядит не так уж и сложно:

Пусть последовательность xn определена так:

посчитайте x30.

Это не так уж и трудно закодировать, возможно реализовав xi как рекурсивную функцию. С обычными числами с плавающей запятой двойной точности, по мере увеличения i, результат красиво сходится к 100. Супер!

К сожалению, 100 даже близко не является правильным ответом. На самом деле последовательность сходится к 5.
Читать дальше →
Всего голосов 60: ↑59 и ↓1 +58
Просмотры 35K
Комментарии 116

Старт в музыкальном программировании — для начинающих достаточно и простого браузера

Блог компании Аудиомания Программирование *Звук

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

Читать далее
Всего голосов 9: ↑8 и ↓1 +7
Просмотры 5.6K
Комментарии 0

Металингвистический совратитель Си. Опус I: Предварительные ласки

Ненормальное программирование *Программирование *Совершенный код *C++ *C *

Предисловие


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


Но не всё так радужно… после моих экспериментов в написании нетривиальных метапрограмм на связке Boost/Preprocessor + Boost/VMD я осознал, что с текущими ограничениями удобное и предсказуемое метапрограммирование препроцессора — нечто недостижимое (вы сами в этом убедитесь). И это не решается только бережностью по отношению к коду, это решается обёрткой над стандартным языком препроцессора в виде встроенного метаязыка.


Такой метаязык я создал, и назвал его Metalang99. Его цель — сделать встроенное в Си метапрограммирование удобоваримым (по сравнению с тем, что было). Это высокоуровневый язык программирования сам по себе, ведь он поставляет управляющие конструкции, типы данных (примитивные и пользовательские), коллекции и другие вещи, свойственные ЯВУ.


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


Сегодняшняя программа:


  1. Уточним терминологию из CS.
  2. Рассмотрим базовые техники, без которых макросоводство на базе стандартного языка препроцессора невозможно.
  3. Разработаем предметно-ориентированный язык для тестирования ПО.

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

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

Как разработать микросхему. Собственный процессор (почти)

FPGA *Разработка робототехники *Программирование микроконтроллеров *Схемотехника *Производство и разработка электроники *

Как же разработать свою микросхему. Задался я этим вопросом, когда я захотел создать собственный процессор. Пошёл я гуглить и ничего годного не нашёл. Ответы в основном два։ "Ты не сделаешь свой процессор, потому что слишком сложно" и "Забей и собери компьютер из комплектующих".

Очевидно что это меня не устаивает, поэтому я решил изучить вопрос серьезнее. Оказалось можно сделать свой процессор описав его с помощью Verilog и FPGA. Купил плату в Китае, 3 года спокойным темпами написал свой процессор, оттестировал, скомпилировал и залил на FPGA. Но мне этого не достаточно.

Читать далее
Всего голосов 89: ↑85 и ↓4 +81
Просмотры 27K
Комментарии 28

Выводим цифровую фоторамку в интернет

Программирование микроконтроллеров *DIY или Сделай сам
image
Наверное многие, глядя на цифровую фоторамку, задумывались — можно ли выводить на нее собственную информацию, меняющуюся во времени? Поскольку я уже несколько лет являюсь владельцем фоторамки, то такая мысль приходила в голову и мне — рамка отлично подошла бы для отображения прогноза погоды и информации с «умного дома». О том, как же реализовать подобный функционал, не вмешиваясь при этом в конструкцию рамки — читайте под катом.
Читать дальше →
Всего голосов 28: ↑28 и ↓0 +28
Просмотры 32K
Комментарии 10
1

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность