Search
Write a publication
Pull to refresh
2
0

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

Send message

Не очередной язык программирования. Часть 3: Физика

Reading time25 min
Views9.6K


Третья и заключительная часть серии статей о языке lsFusion (ссылки на первую и вторую части)

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

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

Новый алгоритм трассировки пути для оптимизации работы GPU: Wavefront Path Tracing

Reading time10 min
Views10K

В этой статье мы исследуем важную концепцию, используемую в недавно выпущенной платформе Lighthouse 2. Wavefront path tracing, как её называют Лейн, Каррас и Аила из NVIDIA, или streaming path tracing, как она изначально называлась в магистерской диссертации ван Антверпена, играет важнейшую роль в разработке эффективных трассировщиков пути на GPU, а потенциально и трассировщиков пути на CPU. Однако она довольно контринтуитивна, поэтому для её понимания необходимо переосмыслить алгоритмы трассировки лучей.
Читать дальше →

BTRFS для самых маленьких

Reading time22 min
Views155K
Доброго времени суток, Хабравчане.  Я работаю в компании Veeam Software и являюсь одним из разработчиков нашего решения для бэкапа линукс систем. По роду занятий мне довелось столкнуться с BTRFS. Совсем недавно она перешла из статуса «еще не пригодно» в статус «стабильна». И пока её первые пользователи в сети обсуждали проблемные места и вопросы стабильности, мы в Veeam тыкали её палочкой и пытались бэкапить. Получалось, мягко говоря, не очень — слишком уж она другая, не похожая на традиционные файловые системы. Пришлось изучить немало аспектов и собрать множество граблей, прежде чем научились с ней работать. В процессе изучения BTRFS сумела произвести на меня впечатление как в хорошем смысле, так и не очень. Уверен, она не оставит равнодушным ни одного айтишника из мира линукс: одни будут плеваться, другие восхвалять.

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

Эксперименты с небольшой многозадачностью в микроконтроллере

Reading time5 min
Views8.3K

В одной из предыдущих заметок автор пытался рассуждать о том, что при программировании микроконтроллера простой переключатель задач будет полезен в ситуациях, когда использование операционной системы реального времени — это слишком много, а всеобъемлющая петля (super loop) для всех требуемых действий — это слишком мало (Сказал, прямо как граф де Ла Фер). Точнее говоря, не слишком мало, а слишком запутано.


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


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

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

Маргарет Гамильтон: «Они беспокоились, что мужчины могут взбунтоваться; но этого не случилось»

Reading time7 min
Views18K

Новатор в области информатики рассказывает о том, как руководила разработкой программного обеспечения для посадки миссии «Аполлон-11» на Луну



Барак Обама вручает Маргарет Гамильтон Президентскую медаль Свободы в 2016-м

Пионер информатики Маргарет Гамильтон сыграла ключевую роль в посадке астронавтов на Луну, впервые произошедшей 20 июля 1969 года, 50 лет назад, а также в безопасном возврате их домой спустя несколько дней. Молодая женщина-программист из MIT, с маленьким ребёнком, управляла командой, создававшей бортовое полётное ПО для миссий «Аполлон», включая и "Аполлон-11". Эта компьютерная система была одной из сложнейших для своего времени. Её строгий подход к программированию оказался настолько успешным, что неизвестно ни об одной программной ошибке, случавшейся во время пилотируемых миссий «Аполлон». «Она символизирует поколение невоспетых женщин, помогавших отправлять человечество в космос», — сказал президент Барак Обама в 2016 году, когда он наградил Гамильтон президентской медалью Свободы, высочайшей гражданской наградой в США. В 2017 году она стала одной из немногих женщин, работавших в НАСА, увековеченных в виде фигурки LEGO. В 50-ю годовщину первого прилунения Гамильтон, которой исполнилось уже 82 года, вспоминает о своей новаторской работе с вычислительной техникой.

Мой первый день с Haiku: она неожиданно хороша

Reading time13 min
Views51K


TL:DR; Новичок попробовал Haiku в первый раз и решил, что она потрясная. Особенно по сравнению с рабочими окружениями, доступными на Linux


Я уже делился своими идеями (а также разочарованиями) по поводу #LinuxUsability (part 1, part 2, part 3, part 4, part 5, part 6). В этом обзоре я опишу первые впечатления от Haiku, операционной системы с открытым исходным кодом для персональных компьютеров. Иногда первые впечатления бывают полезными, но так как первые впечатления получаешь только раз — я свои сохранил здесь.

Об актуальных проблемах геймдизайна и путях их разрешения. Взгляд снизу

Reading time7 min
Views9.7K
Итак, всем привет и добро пожаловать в мир современных игр!

Дабы заранее предупредить различные вопросы, а также обеспечить удобство чтения, далее — небольшой дисклеймер: всё что будет написано далее — основано на личном и субъективном игровом опыте, который включает в себя: более 200 пройденных игр в стиме, неизвестное количество пройденных пираток, попытки участия в разработке модификаций на различные игры на позициях дизайнера, 3d-моделлера и сценодела.


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

Адский холод, левитация и плазма: прошлое, настоящее и будущее сверхпроводимости

Reading time9 min
Views31K


Сверхпроводимость – открытие с незавидной судьбой по сравнению с другими научными прорывами XX века. Результаты последних быстро нашли путь из теоретической в прикладную науку, а затем – в повседневную жизнь. Сверхпроводимость же постоянно требует от учёных достигать и преодолевать какие-то пределы: температурные, химические, материальные. И даже спустя более чем 100 лет после открытия этого явления, мы все ещё боремся с теми же преградами, которые стояли перед учёными в начале прошлого века. Мы — это и Toshiba тоже, и нам есть что рассказать о нашем вкладе в изучение и приручение сверхпроводимости.

Какой язык — D, Go или Rust имеет лучшие перспективы заменить C и почему?

Reading time7 min
Views73K
Несмотря на мой статус и очевидную предвзятость как одного из создателей D, я постараюсь отвечать откровенно; Я следовал путям Go и Rust, и я абсолютно точно знаю, где стирают грязное белье в D. Я поощряю людей на аналогичных позициях в сообществах Rust и Go чтобы и они делились своим мнением. Так вот.

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

C вами Физтех.Science: устраняем когнитивные искажения и постигаем тайны разума

Reading time1 min
Views5K
Привет, хабр! С вами Физтех.Science — видеоблог-погружение в этот странный, странный научный мир. И сегодня мы хотим немного покопаться в голове. Естественно, с научной точки зрения.

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

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

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

Приятного просмотра!


Вторая часть и полезные материалы

Генерация подземелий и пещер для моей игры

Reading time4 min
Views26K

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

Разбиение пространства


Существует множество способов генерации комнат для подземелья (случайное размещение, генерация на основе агентов, с использованием separation steering behavior или физического движка, и т.д.). Но мой любимый метод — это разбиение пространства, потому что оно легко контролируется и расширяется.

Способов разбиения пространства тоже очень много: разделение на сетки, двоичное разбиение пространства, разбиение пространства деревом квадрантов, диаграммы Вороного и т.д. Я решил использовать двоичное разбиение пространства, потому что оно хорошо подходит для генерации прямоугольных комнат. Этот метод получил популярность благодаря статье на RogueBasin.

Единственная сложность этого алгоритма — выбор позиции разделения. Если мы не наложим ограничение на позицию разделения, то будем получать странные разбиения пространства:


Такого поведения можно избежать несколькими способами. Один из них — ограничить позицию разделения двумя соотношениями длин сторон, например, в интервале от 30% до 70% или от 40% до 60%. Другой способ — использовать вместо равномерного распределения нормальное или биномиальное, благодаря этому повысится вероятность разделения по центру стороны, а не по краям. Эти способы устраняют проблему, но сложно понять, как конкретно параметры влияют на окончательный результат.
Читать дальше →

IR интерфейс, Raspberry и LIRC

Reading time5 min
Views24K

Моя задача сейчас — научиться отправлять команды кондиционерам и другим устройствам в доме. Исходно эти устройства имеют только IR remote control. Для решения этой задачи у меня есть Raspberry Pi и IR transceiver shield. В статье можно найти конфиги, команды, советы и немного теории. Из софта будут LIRC (Linux Infrared Remote Control) и Python.

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

Neuralink: платформа интегрированного интерфейса мозг-компьютер с тысячами каналов

Reading time21 min
Views37K


Примечание. 16 июля 2019г. Илон Маск презентовал технологию, которая стала одной из первых серьезных попыток введения нейроинтерфейсов в клиническую практику и имеющая реальные трансгуманистические цели в долгосрочной перспективе. Данная статья является переводом оригинальной статьи описывающей технологию нейрокомпьютерного интерфейса, ссылка на которую также размещена на сайте компании разработчика Neuralink. Статья содержит описание особенностей и характеристик основных модулей лежащих в основе данной технологии, в том числе: гибких биосовместимых микроэлектродов, роботизированного нейрохирургического манипулятора для введения электродов в мозг, а так же специализированной микроэлектроники обеспечивающей приём, усиление и оцифровку сигнала поступающего от нейронной активности.
Читать дальше →

Что связывает парадокс дней рождения и уязвимости электронных подписей?

Reading time7 min
Views17K

Введение


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

Парадокс гласит:

Если в комнате есть 23 человека, то с вероятностью 50% двое из них родились в один день.

В некоторых версиях парадокса делаются ещё более сильные заявления:

Если в комнате 70 человек, то с вероятностью 99% двое из них родились в один день.

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

  1. Будем считать, что все люди в комнате родились не в високосный год. Мы делаем это допущение, чтобы нам не пришлось анализировать два разных случая.
  2. В комнате нет близнецов. При наличии пары близнецов решение будет тривиальным.
  3. Мы предполагаем, что люди рождаются равномерно и случайно. Что это значит? Люди с равной вероятностью могут рождаться в любой день года. Если немного это формализовать, то вероятность рождения в любой выбранный день равна $\frac{1}{365}$.
  4. Люди рождаются независимо друг от друга. Это значит, что дата рождения любого человека не влияет на дату рождения другого.

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

Как выстрелить себе в ногу в C и C++. Сборник рецептов Haiku OS

Reading time21 min
Views29K
История встречи статического анализатора PVS-Studio с кодом операционной системы Haiku уходит в далёкий 2015-й год. Это был интереснейший эксперимент и полезный опыт для команд обоих проектов. Почему эксперимент? Анализатора для Linux тогда не было и не будет ещё полтора года. Но труды энтузиастов нашей команды были вознаграждены: мы познакомились с разработчиками Haiku и повысили качество кода, пополнили базу редкими ошибками программистов и доработали анализатор. Сейчас проверить код Haiku на наличие ошибок можно легко и быстро.

Picture 3

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

Скруглённые или остроугольные?

Reading time3 min
Views19K

Скруглённые или квадратные? Вот в чём вопрос.

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


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


Переменные, используемые для улучшения заметности
Читать дальше →

Робот -тележка на ROS.Часть 2. Cофт

Reading time7 min
Views12K
Посты серии:
8. Управляем с телефона-ROS Control, GPS-нода
7. Локализация робота: gmapping, AMCL, реперные точки на карте помещения
6. Одометрия с энкодеров колес, карта помещения, лидар
5. Работаем в rviz и gazebo: xacro, новые сенсоры.
4. Создаем симуляцию робота, используя редакторы rviz и gazebo.
3. Ускоряемся, меняем камеру, исправляем походку
2. Софт
1. Железо

Продвигаемся к улыбке


Собрав «бургер» по схеме из прошлого поста, перейдем к программному наполнению.

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

Все очень удобно и там же можно скачать уже готовый образ с Raspbian Stretch + ROS + OpenCV, записать его на sd карту для raspberry. (ROS Kinetic, OpenCV 3.4.1. Да, есть и поновее, но иногда лучше взять и поехать, чем собирать все самому из исходников).
Читать дальше →

Мелкая питонячая радость #8: мелкие удовольствия для работы с БД

Reading time3 min
Views17K

Беглый опрос коллег на моем текущем проекте показал, что при словах "ORM и работа с БД" в подавляющем большинстве случаев звучат слова "Алхимия" и "Django ORM". Знания этих двух слов, в общем, достаточно, чтобы писать чистый, аккуратный и рабочий код. Но расширение инженерного кругозора пока еще никому не вредило, поэтому сегодня мы добавим в нашу картину мира несколько (возможно, до этого дня незнакомых) классных штук для работы с БД.


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

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

Reading time4 min
Views25K
Современные микроконтроллеры имеют достаточно большую производительность и это дает многим программистом возможность думать в примерно следующем ключе: — «Ничего страшного, если 1-5% производительности уйдут на обслуживание операционной системы. Зато мой код будет легко отлаживаемый и явный!». Эти мысли подкрепляются большим количеством энергонезависимой (flash) памяти для хранения кода операционной системы и оперативной (RAM/SRAM) памяти для выделения под каждую задачу своего стека. Однако в большинстве случаев эта мысль ошибочна. И в данной статье я расскажу, почему.
Читать дальше →

Split Controller без этих ваших сторибордов

Reading time5 min
Views8.4K

Раньше для поддержки iPad делали отдельный xib. Чтобы унифицировать лейаут, в 2014 году Apple представила Auto Layout и Size Classes, а для адаптивной навигации UISplitViewController.



Split-контроллер — это контейнер, который разместит два контроллера рядом. Слева будет навигационный контроллер (речь не про Navigation Controller), справа соответсвующий выбору в навигационном. Короче, как в Настройках.


Разберем как настроить UISplitViewController и его поведение на экранах.

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

Information

Rating
Does not participate
Registered
Activity