Как стать автором
Обновить
0
0

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

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

Рюкзак с ЭКГ своими руками

Время на прочтение10 мин
Количество просмотров4.9K

У кампусов современных колледжей есть одна общая черта: напряжённые студенты!

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

В этом семестре наш класс изучал различные биометрические инструменты, способные измерять всяческие биологические сигналы, испускаемые телом пациента, как-то: сокращение мускулов, мозговые волны и сердечные волны. Мы хотели разработать медицинский инструмент, который можно было бы использовать для отслеживания уровня стресса студентов на основе пульса. Наш «ЭКГ-рюкзак» оборудован датчиком ЭКГ, отслеживающим пульс пациента, и даёт мгновенную обратную связь через светодиоды и приложение для телефона, с которым он связывается через Bluetooth. ЭКГ-рюкзак предупредит пользователя при помощи светодиодов, когда его уровень стресса значительно превысит нормальный, исходя из пульса в покое. Данные с мобильного приложения можно экспортировать в Excel и использовать для дальнейшего анализа.
Всего голосов 5: ↑4 и ↓1+6
Комментарии2

Простой шейдер мультяшной графики в OpenGL своими руками

Время на прочтение17 мин
Количество просмотров12K
Недавно я заинтересовался рисунками, состоящими только из контуров, и решил попытаться воспроизвести нечто подобное для трехмерной графики.


Suzanne, неофициальный маскот Blender, отрендеренный с получившимся шейдером

В этом посте я расскажу, как написать отрисовку контуров с плавным переходом веса линий на OpenGL, хотя метод может использоваться в любом другом графическом API. Всем заинтересованным — добро пожаловать под кат.
Всего голосов 15: ↑14 и ↓1+18
Комментарии11

Суперсовременный OpenGL. Часть 1

Время на прочтение7 мин
Количество просмотров43K


Всем привет. Все кто хоть немного разбирался в теме OpenGL знают, что существует большое количество статей и курсов по этой теме, но многие не затрагивают современный API, а часть из них вообще рассказывают про glBegin и glEnd. Я постараюсь охватить некоторые нюансы нового API начиная с 4-й версии. Ссылка на вторую часть статьи
Читать дальше →
Всего голосов 53: ↑52 и ↓1+51
Комментарии25

Суперсовременный OpenGL. Часть 2

Время на прочтение7 мин
Количество просмотров19K


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

Возможно повезет и я смогу весь оставшийся материал впихнуть в эту статью, это не точно…
Читать дальше →
Всего голосов 16: ↑16 и ↓0+16
Комментарии17

Как скомпилировать декоратор — C++, Python и собственная реализация. Часть 1

Время на прочтение6 мин
Количество просмотров8.3K

Данная серия статей (как выяснилось, целых две) будет посвящена возможности создания декоратора в языке С++, особенностям их работы в Python, а также будет рассмотрен один из вариантов реализации данного функционала в собственном компилируемом языке, посредством применения общего подхода для создания замыканий — closure conversion и модернизации синтаксического дерева. Вторая часть уже доступна: здесь.



Дисклеймер
В данной статье под декоратором понимается не паттерн проектирования, а декоратор в Python — способ изменить поведение функции. Декоратор в Python это функция, применяемая к другой (декорируемой). Функция-декоратор создает замыкание (новую функцию), вызывающее декорируемую функцию внутри себя и делающее что-то еще нужное программисту (логгирование вызовов, захват ресурсов и т.д.), а интерпретатор Python затем «привязывает» к названию целевой функции получившееся замыкание.
Читать дальше →
Всего голосов 11: ↑11 и ↓0+11
Комментарии8

Ускорение сборки проекта на CMake+GCC: предварительная компиляция заголовочных файлов

Время на прочтение8 мин
Количество просмотров9K

Есть несколько причин, почему проект на С++ в среднем собирается дольше сравнимых по величине проектов на других языках, например на Java или C#. Соответственно, есть и несколько способов уменьшить время сборки. Одним из самых известных является использование предварительной компиляции заголовочных файлов (precompiled headers). Сегодня я расскажу, как использование этого способа позволило мне существенно уменьшить время сборки моего проекта.

Читать дальше →
Всего голосов 11: ↑11 и ↓0+11
Комментарии11

10 отличных Github репозиториев для разработчиков (часть 2)

Время на прочтение4 мин
Количество просмотров17K

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



Как и в прошлом случае, перевод будет довольно вольным: я опустил предисловие и эмоциональные похвалы автора оригинала, чтобы оставить только суть. Еще, обновил цифры, чтобы информация была более актуальной к моменту публикации этого перевода. Итак, поехали.
Читать дальше →
Всего голосов 10: ↑7 и ↓3+6
Комментарии5

10 отличных Github репозиториев, которые должен знать каждый веб-разработчик

Время на прочтение3 мин
Количество просмотров98K

Кроме огромных репозиториев с источниками для подготовки к интервью, здесь много чего интересного


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


image


А я его перевел, т.к. показалось, что пост многим будет интересен. Перевод очень вольный: я опустил нерелевантные промо-ссылки и гипер эмоциональные похвалы автора оригинала, чтобы оставить только суть. Еще, обновил цифры, чтобы информация была более актуальной к моменту публикации этого перевода. Итак, перейдем к списку.
Читать дальше →
Всего голосов 63: ↑56 и ↓7+62
Комментарии8

Не говорите «I feel myself», и другие правила английского языка, которые вгоняют в ступор

Время на прочтение6 мин
Количество просмотров149K
Английский язык на первый взгляд довольно логичный. Когда только принимаешься за его изучение, практически все правила кажутся понятными. Но среди них есть и ужасно странные правила и нормы.

Сегодня мы расскажем о некоторых правилах английского языка, при знакомстве с которыми хочется сказать: «Да что ты, черт побери, такое несешь?». Готовы? Поехали!


Всего голосов 40: ↑32 и ↓8+37
Комментарии82

Chrome расширение для скрытия отвлекающих рекомендации на YouTube

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

YouTube можно использовать не только для развлечений, но и для обучения чему угодно.


Рекомендации на YouTube очень полезны, так как подсказывают релевантные видео к текущему, но и опасны потому что содержат ещё и в принципе интересные и отвлекающие ролики (не на тему видео).




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

Читать дальше →
Всего голосов 19: ↑19 и ↓0+19
Комментарии45

Как разрабатываются моды для Unity-игр: внедряемся в код игры

Время на прочтение15 мин
Количество просмотров21K

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


В этой статье мы рассмотрим, какие методы используется для того, чтобы игра, написанная на Unity, могла запускать сторонние моды: модификации библиотек игры и самого движка, подмена адресов в таблице импорта dll, вмешательство в загрузку Mono Runtime и другие.


Всего голосов 16: ↑16 и ↓0+16
Комментарии3

Алгоритм быстрого и простого объёмного рендеринга

Время на прочтение9 мин
Количество просмотров14K

Недавно я написал небольшой ShaderToy, выполняющий простой объёмный рендеринг, а затем решил опубликовать пост с объяснением его работы. Сам интерактивный ShaderToy можно посмотреть здесь. Если вы читаете с телефона или ноутбука, то рекомендую посмотреть эту быструю версию. Я включил в пост фрагменты кода, которые помогут вам понять работу ShaderToy на высоком уровне, но в них есть не все подробности. Если вы хотите разобраться глубже, то рекомендую сверяться с кодом ShaderToy.

У моего ShaderToy были три основные задачи:

  1. Выполнение в реальном времени
  2. Простота
  3. Физическая корректность (… или типа того)

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

  1. Трассировка лучей непрозрачных объектов. Все объекты являются примитивами с простыми пересечениями с лучами (1 плоскость и 3 сферы)
  2. Для вычисления освещения используется затенение по Фонгу, а в трёх сферических источниках света применется настраиваемый коэффициент затухания света. Лучи теней не требуются, потому что мы освещаем только плоскость.

Вот как это выглядит:

ShaderToy screenshot
Читать дальше →
Всего голосов 52: ↑52 и ↓0+52
Комментарии6

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

Время на прочтение8 мин
Количество просмотров22K
Статья Программист не должен решать задачи бизнеса вызвала неслабое обсуждение (и даже ответ с прямо противоположным утверждением).

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

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

В своей первой статье на Хабре я рассматривал ситуацию с позиции нанимателя (бизнеса), и объяснял, принципы, которыми руководствуюсь, чтобы найти людей, которые решат задачи бизнеса. И почему это так важно.

Но есть один нюанс, и он в том, что люди, которых на дух не переносят собеседователи вроде меня, при должной сноровке добиваются большего, чем те, кто приносят пользу. И этому есть веское обоснование, — они успешно максимизируют скилл, который наиболее коррелирует с доходом программиста, — умение продать себя. Каким образом, — расскажу в этом посте.
Читать дальше →
Всего голосов 48: ↑44 и ↓4+52
Комментарии85

Кругом сплошные плюсы: топ-10 докладов конференции C++ Russia 2019 Piter

Время на прочтение3 мин
Количество просмотров9.6K
C++ требует серьезного подхода. Поэтому мы верим, что большинство плюсовиков — серьезные профессионалы, и если на праздниках требуется сидеть дома — они не будут выбираться на шашлыки тайными тропами, а предпочтут в это время расти как специалисты. И таким профессионалам на этих праздниках пригодится наш топ-10 докладов с конференции C++ Russia 2019 Piter:


Всего голосов 21: ↑20 и ↓1+25
Комментарии2

Kinda Heroes — devstory милой RPG с чибиками

Время на прочтение3 мин
Количество просмотров4.3K
Привет! Имея за плечами довольно серьезный опыт разработки игр и приложений, я долгое время боялся браться за RPG. Я имею ввиду полноценную ролевую игру, а не казуальный кликер или айдлер (idle). Итак, я поделюсь с вами историей о том, как по-быстрому за 1 месяц сделать свою RPG, с блэкджеком и всем остальным.


Читать дальше →
Всего голосов 7: ↑7 и ↓0+7
Комментарии4

Использование VueJS вместе с Django

Время на прочтение4 мин
Количество просмотров30K
Перевод статьи подготовлен в преддверии старта курса «Web-разработчик на Python».




Введение


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

Я использую весь функционал Django, который ускоряет разработку, и я не хотел бы упускать из виду его шаблонизатор. Поэтому бэкенд на Django и фронтенд на JavaScript SPA – это для меня не вариант. Однако даже самый заядлый бэкенд-разработчик должен признать, что некоторые вещи нужно реализовывать на стороне клиента. Незначительные действия пользователя не должны требовать перезагрузки страницы. Помимо этого, некоторые части веб-приложения, которое я создаю, требуют довольно сложного взаимодействия с пользователем.

По традиции, можно было бы смешать Django и jQuery, чтобы получить желаемое поведение. Но сейчас есть более новые технологии JavaScript, такие как React и Vue. Поскольку наша цель состоит в том, чтобы найти фреймворк, который мы сможем использовать вместе с Django не переписывая все с нуля, мы воспользуемся Vue, как более легкой альтернативой. В этой статье я покажу, как начать пользоваться Vue вместе с Django с минимальными усилиями.
Читать дальше →
Всего голосов 9: ↑9 и ↓0+9
Комментарии0

Насколько медленны iostreams?

Время на прочтение7 мин
Количество просмотров80K
Потоки ввода-вывода в стандартной библиотеке C++ просты в использовании, типобезопасны, устойчивы к утечке ресурсов, и позволяют простую обработку ошибок. Однако, за ними закрепилась репутация «медленных». Этому есть несколько причин, таких как широкое использование динамической аллокации и виртуальных функций. Вообще, потоки — одна из самых древних частей стандартной библиотеки (они начали использоваться примерно в 1988 году), и многие решения в них сейчас воспринимаются как «спорные». Тем не менее, они широко используются, особенно когда надо написать какую-то простую программу, работающую с текстовыми данными.

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

Сегодня в комментариях у посту возникло обсуждение о медленности iostreams. В частности, freopen пишет
Забавно смотреть на ваши оптимизации, расположенные по соседству со считыванием через cin :)

а aesamson даёт такую рекомендацию
Можно заменить на getchar_unlocked() для *nix или getchar() для всех остальных.
getchar_unlocked > getchar > scanf > cin, где ">" означает быстрее.


В этом посте я развею и подтвержу некоторые мифы и дам пару рекомендаций.
Читать дальше →
Всего голосов 90: ↑88 и ↓2+86
Комментарии80

Компания National Instruments выпустила бесплатные LabVIEW 2020 и NXG 5.0 Community Edition

Время на прочтение4 мин
Количество просмотров32K
Здравствуйте, коллеги!

В конце апреля произошло событие, которого так ждали поклонники рисования кода мышкой: компания National Instruments наконец-то выпустила бесплатную редакцию своей системы графического программирования — LabVIEW Community Edition.

image

Название перекликается с Visual Studio Community, но в отличие от Студии среда разработки LabVIEW абсолютно бесплатна лишь для некоммерческих проектов, и для обучения в школах (для ВУЗов потребуется Academic Site License).

Ну а теперь все желающие могут приобщиться к увлекательному миру графического программирования, скачать LabVIEW и играть с ней так долго, насколько хватит желания (и терпения).
Читать дальше →
Всего голосов 20: ↑20 и ↓0+20
Комментарии25

Опять про BLE, температуру и датчики Xiaomi

Время на прочтение7 мин
Количество просмотров22K

Не так давно, удалось мне обзавестись известными датчиками температуры и влажности от Xiaomi. Эти датчики заслуженно приобрели широкую известность, так как при своей достаточно низкой цене, достаточно удобны в использовании, а также умеют передавать свои показания по протоколу BLE в тот же Mi Home. К тому же весь Интернет завален вариантами подключения этих сенсоров к Home Assistant, MajorDoMo и другим системам.


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



Быстрое гугление показало: ESP32 — это то, что мне нужно. Он умеет Bluetooth и WiFi, программируется из Arduino IDE и позволит мне получить показания с датчика и отправить их по WiFi куда нужно (хоть на домашний сервер, хоть в облако). К тому же, очень быстро нашелся простой и понятный туториал, который как раз решал мою задачу. Но как выяснилось, не все так просто...

Читать дальше →
Всего голосов 20: ↑20 и ↓0+20
Комментарии18

Мультиплеер в быстрых играх (части I, II)

Время на прочтение7 мин
Количество просмотров143K


  1. Части I, II (синглплеер с авторитарным сервером)
  2. Часть III (Появление врага)
  3. Часть IV (Хэдшот!)


Предлагаю вашему вниманию перевод статьи Fast-Paced Multiplayer (Part I): Introduction.

Разработка игры — само по себе непростое занятие. Но мультиплеерные игры создают совершенно новые проблемы, требующие разрешения. Забавно, что у наших проблем всего две причины: человеческая натура и законы физики. Законы физики привнесут проблемы из области теории относительности, а человеческая натура не даст нам доверять сообщениям с клиента.
Читать дальше →
Всего голосов 136: ↑132 и ↓4+128
Комментарии109

Информация

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