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

Team Lead

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

Ещё пара неочевидных вещей, которые вам могут не рассказать до лазерной коррекции зрения

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

Сегодня без «жести», как вы просили

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

— Если я посмотрю в сторону во время работы лазера, что случится?

У вас попросту не выйдет. На самом деле сразу после обезболивания глаз прижимается к специальному пневмозахвату. Моргнуть у вас тоже не выйдет из-за фиксации (это небольно и недолго). Единственный момент, где можно серьёзно нарушить ход операции — это сильно дёрнуть головой, серьёзным волевым усилием вытащив её из подголовника. В этом случае операция мгновенно прекратится. Точнее, она прекратится даже до потери захвата (детали ниже).

— Как должна быть подготовлена операционная?

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

Быстрее быстрого или глубокая оптимизация Медианной фильтрации для GPU Nvidia

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

Введение


В предыдущем посте я постарался описать, как легко можно воспользоваться преимуществом GPU для обработки изображений. Судьба сложилась так, что мне подвернулась возможность попробовать улучшить медианную фильтрацию для GPU. В данном посте я постараюсь рассказать каким образом можно получить еще больше производительности от GPU в обработке изображений, в частности, на примере медианной фильтрации. Сравнивать будем GPU GTX 780 ti с оптимизированным кодом, запущенном на современном процессоре Intel Core i7 Skylake 4.0 GHz с набором векторных регистров AVX2. Достигнутая скорость фильтрации квадратом 3х3 в 51 GPixels/sec для GPU GTX 780Ti и удельная скорость фильтрации квадратом 3х3 в 10.2 GPixels/sec на 1 TFlops для одинарной точности на данное время являются самыми высокими из всех известных в мире.

Интересуешься оптимизациями для GPU Nvidia? - читать далее
Всего голосов 33: ↑33 и ↓0+33
Комментарии2

CPU vs GPU. Distance field

Время на прочтение5 мин
Количество просмотров22K
Привет всем. Я уже однажды писал про Distance Field и приводил реализацию «эвристическим» кодом, дающую неплохую скорость: «Честный glow и скорость».

Зачем он нужен?


DField можно применять:
  • Для значительного повышения качества шрифтов
  • Для эффектов например горения контура. Один из эффектов я приводил в своей предыдущей статье
  • Для эффекта «metaballs» но в 2д и для любых сложных шейпов. (возможно я когда-нибудь приведу пример реализации этого эффекта)
  • А в данный момент DField мне нужен для качественного сглаживания углов и удаления мелких деталей.

И если в первых двух случаях мы можем заранее вычислить DField, то для других эффектов нам нужно просчитывать его в реальном времени.
В статье будет рассмотрен наиболее популярный, я бы сказал классический Chamfer distance (CDA) с кучей картинок, объясняющих принцип его работы, а так же рассмотрен двухпроходный алгоритм на GPU.
Оба алгоритма реализованы в демонстрационных программах на FPC.
Читать дальше →
Всего голосов 39: ↑37 и ↓2+35
Комментарии24

Рендеринг теней при помощи алгоритма Parallel-Split Shadow Mapping

Время на прочтение18 мин
Количество просмотров33K
imageПривет, Хабр! Мой предыдущий пост, посвященный программированию графики, был благодушно воспринят сообществом, и я отважился ещё на один. Сегодня я расскажу об алгоритме рендеринга теней Parallel-Split Shadow Mapping (PSSM), с которым я впервые столкнулся, когда возникла рабочая необходимость отображать тени на большом расстоянии от игрока. Тогда я был ограничен набором возможностей Direct3D 10, сейчас я реализовал алгоритм на Direct3D 11 и OpenGL 4.3. Подробнее алгоритм PSSM описывается в GPU Gems 3 как с математической точки зрения, так и с точки зрения реализации на Direct3D 9 и 10. За подробностями прошу под кат.
Читать дальше →
Всего голосов 60: ↑60 и ↓0+60
Комментарии12

Как сделать процессорный звук в Жигулях

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

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


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


Под катом будет много схем и графиков.
Всего голосов 64: ↑63 и ↓1+62
Комментарии38

Тестирование радиомодемов LoRa/LoRaWAN RN2483. Часть 1, LoRa

Время на прочтение5 мин
Количество просмотров81K
Одна из интересных технологий “интернета вещей” — сети LoRa/LoRaWAN, однако в рунете они практически не описаны. Пора восполнить этот пробел, и тем более интересно попробовать “вживую”, как это работает.



Что такое LoRa?


Это технология связи на большие (Long Range) расстояния, запатентованная компанией Semtech, и реализованная в их чипах SX1272 and SX1276. LoRa это протокол низкого уровня, поверх которого могут реализовываться более высокоуровневые протоколы, например LoRaWAN.

Особенность стандарта LoRa — это передача небольших пакетов данных с невысоким энергопотреблением. По заверениям производителя, дальность на открытом воздухе может достигать 10км, а время работы от батареи может составлять несколько лет. Рабочие частоты зависят от страны, и составляют 433 или 868МГц (EU-версия) или 915МГц (USA-версия).

Как это работает? Подробности под катом.
Читать дальше →
Всего голосов 18: ↑17 и ↓1+16
Комментарии38

Миф о RAM и O(1)

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


Городская библиотека Стокгольма. Фото minotauria.


В этой статье я хочу рассказать о том, что оценивать время обращения к памяти как O(1) — это очень плохая идея, и вместо этого мы должны использовать O(√N). Вначале мы рассмотрим практическую сторону вопроса, потом математическую, на основе теоретической физики, а потом рассмотрим последствия и выводы.


Введение


Если вы изучали информатику и анализ алгоритмической сложности, то знаете, что проход по связному списку это O(N), двоичный поиск это O(log(N)), а поиск элемента в хеш-таблице это O(1). Что, если я скажу вам, что все это неправда? Что, если проход по связному списку на самом деле O(N√N), а поиск в хеш-таблице это O(√N)?


Не верите? Я вас сейчас буду убеждать. Я покажу, что доступ к памяти это не O(1), а O(√N). Этот результат справедлив и в теории, и на практике. Давайте начнем с практики.


Измеряем


Давайте сначала определимся с определениями. Нотация “О” большое применима ко многим вещам, от использования памяти до запущенных инструкций. В рамках этой статьи мы O(f(N)) будет означать, что f(N) — это верхняя граница (худший случай) по времени, которое необходимо для получения доступа к N байтов памяти (или, соответственно, N одинаковых по размеру элементов). Я использую Big O для анализа времени, но не операций, и это важно. Мы увидим, что центральный процессор подолгу ждет медленную память. Лично меня не волнует, что делает процессор пока ждет. Меня волнует лишь время, как долго выполняется та или иная задача, поэтому я ограничиваюсь определением выше.

Читать дальше →
Всего голосов 128: ↑107 и ↓21+86
Комментарии96

Защита устройств от неправильной подачи полярности питания

Время на прочтение3 мин
Количество просмотров216K
image
При проектировании промышленных приборов, к которым предъявляются повышенные требования по надёжности, я не раз сталкивался с проблемой защиты устройства от неправильной полярности подключения питания. Даже опытные монтажники порой умудряются перепутать плюс с минусом. Наверно ещё более остро подобные проблемы стоят в ходе экспериментов начинающих электронщиков. В данной статье рассмотрим простейшие решения проблемы — как традиционные так и редко применяемые на практике методы защиты.
Читать дальше →
Всего голосов 41: ↑41 и ↓0+41
Комментарии71

Математика на пальцах: давайте посчитаем хотя бы один ряд Фурье в уме

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

Нужно ли вам читать этот текст?


Давайте проверим. Прочтите следующее:

Тригонометрическим рядом Фурье функции  называют функциональный ряд вида



где







Страшно, но всё же хочется понять, что это значит?


Значит, вам под кат. Постараюсь формул не использовать.
Читать дальше →
Всего голосов 86: ↑76 и ↓10+66
Комментарии99

Трассировка печатной платы в KiCAD

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


Введение



Одним из критических замечаний к предыдущей статье было следующее: дескать фу таким быть, стрелять из пушки по воробьям да ещё проприетарным софтом за 10000$, к тому же наверняка украденным с торрентов. Оставляя за кадром моральную сторону вопроса, а так же презумпцию невиновности, обратимся к следующему вопросу — а что там у нас имеется в Open Source секторе, пригодное для решения задач проектирования электронной техники. В частности изготовления печатных плат. Наиболее достойной, на мой взгляд, оказалась кроссплатформенная программа KiCAD, распространяемая по лицензии GNU GPL. Имеются версии для Linux, Windows и macOS.

Рассмотрим этот инструмент подробнее применительно к уже решенной мною задаче — трассировке печатной платы для преобразователя уровней на базе MAX232.

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

C# — есть ли что-то лишнее?

Время на прочтение16 мин
Количество просмотров33K
Все будет быстро. Это выступление Анатолия Левенчука, в последнее время не дает мне покоя. Успехи глубинного обучения в последний год говорят о том, что все очень быстро изменится. Слишком долго кричали волки-волки говорили «искусственный интеллект», а его все не было. И вот, когда он, наконец, приходит к нам, многие люди этого просто не осознают, думая, что все закончится очередной победой компьютера в очередной интеллектуальной игре. Очень многие люди, если не все человечество, окажется за бортом прогресса. И этот процесс уже запущен. Думаю, что в этот момент меня не очень будет интересовать вопрос, который вынесен в заголовок статьи. Но, пока этот момент еще не настал, попытаюсь поднять этот потенциально спорный вопрос.

Программируя уже более 25 лет, застал достаточно много различных концепций, что-то смог попробовать, еще больше не успел. Сейчас с интересом наблюдаю за языком Go, который можно отнести к продолжателям “линейки языков Вирта” — Algol-Pascal-Modula-Oberon. Одним из замечательных свойств этой цепочки является то, что каждый последующий язык становится проще предыдущего, но не менее мощным и выразительным.

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

  • Простой язык быстрее изучается, значит проще получить необходимых разработчиков.
  • Поддержка программы на более простом языке обычно проще (да, это интуитивное ощущение, которое нужно бы доказать, но я приму его сейчас за аксиому).
  • У более простого языка проще развивать окружающую его инфраструктуру — переносить на разные платформы, создавать различные утилиты, генераторы, парсеры и т.п.


Почему же тогда существуют сложные языки? Все дело в выразительности. Если какая-то конструкция позволяет коротко описать необходимое действие, то это вполне может окупить негативные стороны усложнения языка.
Читать дальше →
Всего голосов 45: ↑30 и ↓15+15
Комментарии140

Два простых способа отсрочить принудительный апгрейд до Windows 10

Время на прочтение5 мин
Количество просмотров16K
С момента выхода Windows 10 Microsoft с прогрессирующей настойчивостью пытается убедить пользователей, не желающих расставаться с привычными достоинствами предыдущих версий, что обновиться до 10 жизненно необходимо. Способы, которые выбираются для достижения этой цели зачастую оказываются, мягко говоря, не совсем корректными. А последствия последующих обновлений ОС, установленных «втихую» без любого предупреждения, как продемонстрировал показательный случай с африканской службой охраны животных, вполне могут оказаться фатальными. Сегодня мы расскажем, как избежать принудительного обновления ОС до Windows 10 в случае, если вы по каким-то своим соображениям на данный момент в этом не заинтересованы.

image
Подробнее
Всего голосов 33: ↑15 и ↓18-3
Комментарии37

C++ без new и delete

Время на прочтение15 мин
Количество просмотров89K
Привет, хабравчане!

Меня зовут Михаил Матросов, я технический менеджер в компании Align Technology. Сегодня я поработаю капитаном и немного расскажу об основах современного С++.

Работая над большим проектом, мне часто приходится смотреть чужой код и порой я вижу странное. А именно, многие даже вполне матёрые программисты на С++ могут не знать некоторых фундаментальных для языка вещей. Ну, это даже не слишком удивительно — язык такой.

Мне бы хотелось поговорить об этих основах и начну я со своей любимой темы. Будем говорить об операторах new и delete. А точнее, об их отсутствии. Я расскажу, как писать надёжный и современный код на С++ без использования операторов new и delete.

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

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


Изображение взято с сайта behappy.me
Читать дальше →
Всего голосов 59: ↑59 и ↓0+59
Комментарии134

Быстрые движения под высоким напряжением, или почти вся правда об управлении шаговым мотором

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


Доброго вам времени суток, уважаемые гики и сочувствующие!

В этой публикации я хочу поделиться своим опытом управления. Точнее – управления шагами. А уж если быть совсем точным, речь пойдёт об управлении замечательным устройством – шаговым электродвигателем.
Осторожно, трафик!
Всего голосов 33: ↑28 и ↓5+23
Комментарии69

50 крутых вещей для печати на 3D-принтере

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


Нет идей для 3D-печати? Надоели никчемные безделушки? Перед вами список 50 крутых действительно полезных вещей для 3D-печати.
Читать дальше →
Всего голосов 16: ↑7 и ↓9-2
Комментарии29

Натуральный Geektimes — делаем пространство чище

Время на прочтение2 мин
Количество просмотров38K
Читая Geektimes я постоянно хотел отключить редакторов, ведь они делают из саморегулирующегося сообщества со свободно возникающими статьями очередной адми или что-то подобное.

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

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

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



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

Тир на Raspberry, версия 2.0

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

Статья о дальнейшем улучшении прошлой версии тира geektimes.ru/post/255350
Пользоваться тиром дома быстро наскучило, поэтому, на радость коллегам, он был установлен на работе. Однако после непродолжительной эксплуатации был выявлен ряд недостатков:
  • «игрушечность» и непрактичность пистолета
  • необходимость кропотливой калибровки
  • пропуски выстрелов
  • перспективные искажения камеры и вследствие — значительные погрешности
  • система подсчета очков без округления

Все это было исправлено в новой версии.
Читать дальше →
Всего голосов 22: ↑22 и ↓0+22
Комментарии42

Опыт домашнего марсоходостроения

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

Привет Хабр! Я работаю RnD-художником в минском центре разработки Wargaming. А в свободное время даю волю своей инженерной фантазии. В этой статье я хочу поделиться своим опытом домашнего марсоходостроения.
Читать дальше →
Всего голосов 42: ↑42 и ↓0+42
Комментарии17

Математика на пальцах: линейно-квадратичный регулятор

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

Пара часов из жизни математика-программиста или читаем википедию


Для начала в качестве эпиграфа цитирую rocknrollnerd:
— Здравствуйте, меня зовут %username%, и втайне раскрываю суммы из сигма-нотации на листочке, чтобы понять, что там происходит.
— Привет, %username%!


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

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

Раз уж пошёл эксгибиционизм про мою работу, то вот вам моё рабочее место (кликабельно):

Математика для программистов!
Всего голосов 47: ↑44 и ↓3+41
Комментарии86

Математика на пальцах: методы наименьших квадратов

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

Введение




Я математик-программист. Самый большой скачок в своей карьере я совершил, когда научился говорить:«Я ничего не понимаю!» Сейчас мне не стыдно сказать светилу науки, что мне читает лекцию, что я не понимаю, о чём оно, светило, мне говорит. И это очень сложно. Да, признаться в своём неведении сложно и стыдно. Кому понравится признаваться в том, что он не знает азов чего-то-там. В силу своей профессии я должен присутствовать на большом количестве презентаций и лекций, где, признаюсь, в подавляющем большинстве случаев мне хочется спать, потому что я ничего не понимаю. А не понимаю я потому, что огромная проблема текущей ситуации в науке кроется в математике. Она предполагает, что все слушатели знакомы с абсолютно всеми областями математики (что абсурдно). Признаться в том, что вы не знаете, что такое производная (о том, что это — чуть позже) — стыдно.

Но я научился говорить, что я не знаю, что такое умножение. Да, я не знаю, что такое подалгебра над алгеброй Ли. Да, я не знаю, зачем нужны в жизни квадратные уравнения. К слову, если вы уверены, что вы знаете, то нам есть над чем поговорить! Математика — это серия фокусов. Математики стараются запутать и запугать публику; там, где нет замешательства, нет репутации, нет авторитета. Да, это престижно говорить как можно более абстрактным языком, что есть по себе полная чушь.
Математика для программистов!
Всего голосов 125: ↑115 и ↓10+105
Комментарии400

Информация

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