Pull to refresh
138
Karma
0
Rating
Павел Галаничев @old_gamer

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

Девять кругов объективности: Пешка — это не фигура? (нет)

Game development *
Sandbox

Буквально на днях на Хабре вышло две статьи про шахматы от @andyshark1974. Первая называлась "Изучаем пешку (часть 5)" и была, собственно, про пешку. В самой статье, Андрей назвал пешку фигурой и в комментариях сразу появилось уточнение, что пешка - не фигура. Автор статьи отвечал на подобные комментарии довольно резко, но во всех его ответах чувствуется практически неуловимая неопределенность, хотя видно, что он склонен считать пешку фигурой. Сейчас попробуем объективно разобраться и ответить на этот вопрос. Но теперь как цивилизованные люди, т. е. с прувами и портянкой скучных документов.

Читать далее
Total votes 31: ↑21 and ↓10 +11
Views 7.8K
Comments 63

FFmpeg libav с нуля. Часть 1: знакомство и начало работы

Working with video *C++ *
Sandbox
Tutorial

Всем привет! Сегодня я хочу открыть серию статей по изучению FFmpeg libav с нуля.

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

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

Читать далее
Total votes 21: ↑19 and ↓2 +17
Views 7.3K
Comments 14

Удаленный доступ к IP камерам, теперь на Python

Working with video *Python *Programming *

Удивительно, что в 2021-м все еще можно обсуждать такую избитую тему. Однако, мне пришлось пройти довольно длинный путь от покупки охранных камер до готового решения, покрывающего мои, довольно нехитрые, задачи. Под катом вы найдете скрипт, который показался мне достаточно удачным, чтобы опубликовать его на Хабре, и некоторые пояснения к нему. Надеюсь, кому-то поможет.

Читать далее
Total votes 17: ↑17 and ↓0 +17
Views 27K
Comments 34

Умный дом iOS разработчика

Development for iOS *Smart House IOT DIY
Sandbox

В свободное время (а иногда и в рабочее) я изучаю микроконтроллеры и собираю умный дом у себя в квартире, а так как по профессии я iOS-разработчик, то на умный дом я смотрю через призму iPhone и HomeKit. После сборки более-менее рабочего умного дома и, столкнувшись с кучей проблем, решил рассказать про свой опыт и устройства в цикле из 2 статей. Первая статья будет небольшим ликбезом в теорию микроконтроллеров и протоколов, а во второй уже поделюсь конкретным применением этих протоколов и фреймворков в моем умном доме.

Читать далее
Total votes 10: ↑9 and ↓1 +8
Views 8.6K
Comments 37

Рисовалка для атомных орбиталей на Python

Python *Popular science Physics Lifehacks for geeks Chemistry

Начался новый учебный год, и преподавателям, студентам и школьникам, возможно, требуется (или просто хочется) посмотреть на то, как выглядят орбитальки, на которых сидят электроны в атомах: все эти завораживающие буковки s, p, d, f, и т.д. Да, картинок полно как в учебниках, так и в Интернете, но покрутить орбитальки на картинке не получится, а картинку из учебника/с левого сайта в презентацию/реферат без мороки с лицензией пихать (по-хорошему) не стоит. Поэтому в этом посте мы разберём одну из возможных реализаций рисовалки для этих самых орбиталек.

Посмотреть код, без регистрации и СМС.
Total votes 34: ↑34 and ↓0 +34
Views 9.1K
Comments 11

Vulkan. Руководство разработчика. Графический конвейер

Programming *C++ *Working with 3D-graphics *Game development *CGI *
Translation
Tutorial


Я переводчик в IT-компании CG Tribe, и я продолжаю выкладывать перевод руководства к Vulkan API (vulkan-tutorial.com).

Сегодня я хочу поделиться с вами переводом первых двух глав раздела, посвященного графическому конвейеру (Graphics pipeline basics), — Introduction и Shader modules.

Содержание
Читать дальше →
Total votes 12: ↑12 and ↓0 +12
Views 6.4K
Comments 4

Пишем свой парсер математических выражений и калькулятор командной строки

VDSina.ru corporate blog Programming *C++ *Algorithms *Mathematics *
Translation


Примечание: полный исходный код проекта можно найти здесь.

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

Я размышлял над этой задачей, проводя инженерные разработки для моей магистерской работы. Оказалось, что я трачу много времени на поиск одних и тех же физических единиц измерения, чтобы проверить преобразования и правильность своих вычислений.
Читать дальше →
Total votes 32: ↑30 and ↓2 +28
Views 13K
Comments 14

Vulkan. Руководство разработчика. Настройка окружения

Programming *C++ *Working with 3D-graphics *Game development *CGI *
Translation
Tutorial


Я переводчик ижевской компании CG Tribe и здесь я буду публиковать перевод руководства к Vulkan API. Ссылка на источник — vulkan-tutorial.com. Это моя вторая публикация, которая посвящена переводу раздела Development Environment.

Содержание
Читать дальше →
Total votes 10: ↑10 and ↓0 +10
Views 21K
Comments 9

Разбираемся в физике частиц: 1) шар на пружине, ньютоновская версия

Popular science Physics
Translation
1. Шар на пружине, ньютоновская версия
2. Квантовый шар на пружине
3. Волны, классический вид
4. Волны, классическое уравнение движения
5. Квантовые волны
6. Поля
7. Частицы – это кванты
8. Как частицы взаимодействуют с полями

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

image
Рис. 1

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

Представим, что мы поместили шарик на конце пружины. Движения пружины и описывающие его уравнения просты. Для начала вспомним основы поведения пружины, затем изучим поведение шара – осцилляцию. И, наконец, для самых пытливых умов мы рассмотрим уравнения, приводящие к такому виду движения.
Читать дальше →
Total votes 13: ↑11 and ↓2 +9
Views 28K
Comments 6

Как работает поле Хиггса: основная идея

Physics
Translation
Разбираемся в физике частиц:
1. Шар на пружине, ньютоновская версия
2. Квантовый шар на пружине
3. Волны, классический вид
4. Волны, классическое уравнение движения
5. Квантовые волны
6. Поля
7. Частицы – это кванты
8. Как частицы взаимодействуют с полями

Как работает поле Хиггса:
  1. Основная идея
  2. Почему поле Хиггса в среднем ненулевое
  3. Как появляется частица Хиггса
  4. Почему поле Хиггса необходимо


Если вы читали мою серию статей про физику частиц и полей, вы знаете, что все т.н. «элементарные частицы» на самом деле – кванты (волны, чья амплитуда и энергия минимально допустимые квантовой механикой) релятивистских квантовых полей. Такие поля обычно удовлетворяют уравнениям движения класса 1 (или их обобщению) вида

$ d^2Z/dt^2 - c^2 d^2Z/dx^2 = - (2 \pi \nu_{min})^2 (Z - Z_0) $


Где Z(x,t) – поле, Z0 — равновесное состояние, x – пространство, t – время, d2Z/dt2 представляет изменение по времени изменения по времени Z (d2Z/dx2 — то же для пространства), c – универсальное ограничение скорости (часто называемое «скоростью света»), а νmin — минимально допустимая частота для волны в поле. Некоторые поля удовлетворяют уравнению класса 0, которое представляет собой просто уравнение класса 1, в котором величина νmin нулевая. У кванта такого поля масса

$ m = h \nu_{min} / c^2 $


Где h – постоянная Планка. Иначе говоря,

$ d^2Z/dt^2 - c^2 d^2Z/dx^2 = - (2 \pi c^2/h)^2 m^2 (Z - Z_0) $


Читать дальше →
Total votes 25: ↑23 and ↓2 +21
Views 24K
Comments 11

Начинаем изучать микроконтроллеры на примере STM32F030f4p6

Programming microcontrollers *Electronics for beginners
Sandbox
Tutorial


0. Перед прочтением статьи


Данная статья преследует следующие цели:

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

Код получится минималистичным с точки зрения использования дополнительных файлов — мы не будем подключать ни один файл, кроме тех, что нужны для сборки пустой, но валидной, прошивки. Т.е. на базе кода прошивки, которая работает, но ничего полезного не делает.
Читать дальше →
Total votes 50: ↑46 and ↓4 +42
Views 46K
Comments 65

Unreal Engine 4 — шейдер горения

Game development *Unreal Engine *
Translation
Tutorial
Это небольшой шейдер, который появился, когда я думал о различных методах применения flowmap. Существуют много эффектов перехода/растворения, но большинство из них выглядит довольно статично, так как они используют статические текстуры. Данный шейдер далек от совершенства, но плавное движение делает его визуально привлекательным как плавный эффект горения.

Сам шейдер чрезвычайно прост, ниже я опишу процесс его создания. Как и с большинством моих шейдеров, я обернул его в функцию материала, чтобы его можно было использовать с любыми существующими материалами.
Читать дальше →
Total votes 22: ↑22 and ↓0 +22
Views 19K
Comments 7

Основы компьютерной геометрии. Написание простого 3D-рендера

.NET *Working with 3D-graphics *Game development *
Sandbox
Привет меня зовут Давид, а вот я собственной персоной отрендеренный своим самописным рендером:

image

К сожалению я не смог найти более качественную бесплатную модель, но все равно выражаю благодарность заморскому скульптору запечатлевшему меня в цифре! И как вы уже догадались, речь пойдет о написании CPU — рендера.
Читать дальше →
Total votes 45: ↑44 and ↓1 +43
Views 31K
Comments 21

Трансивер UART для 8-битного компьютера на макетной плате

DIY Electronics for beginners
Translation
В последнее время мне всё больше нравится собирать 8-битные компьютеры из ТТЛ чипов. Я вдохновился замечательными роликами Бена Итера с ютуба, а также различными проектами с сайта Hackaday. В процессе проектирования и сборки собственного 8-битного компьютера я задумался над тем, насколько сложно было бы реализовать UART-трансивер на базе ИС серии 7400.


Итоговая схема: готовый UART-трансивер, собранный из ИС серии 7400

В первую очередь разберёмся, что такое UART. Это универсальный асинхронный приёмопередатчик – простой протокол, позволяющий асинхронно отправлять и получать 8-битные данные, благодаря чему процессор или компьютер могут общаться с внешним миром. Это и само по себе полезно – мой 8-битный компьютер может общаться с ноутбуком и использовать программу для мониторинга последовательного порта (типа putty) в качестве интерфейса для ввода и вывода текста. Что ещё интереснее, я могу запрограммировать загрузчик ОС для своего 8-битного компьютера, а потом программировать его через UART соединение с ноутбука! Поскольку Bluetooth модули типа HC-05, по сути, общаются с CPU через UART, я даже могу использовать Bluetooth модуль для программирования своего 8-битного компьютера на расстоянии! Это было бы очень круто.
Читать дальше →
Total votes 22: ↑21 and ↓1 +20
Views 5.2K
Comments 2

Создание софтверного движка 2.5D

Programming *Game development *
В настоящее время интерес к софтверным движкам, как из игр Quake, DOOM или Duke Nukem 3D практически нулевой. Однако, эти движки имели своё очарование и мне, например, очень нравится графика именно таких вот движков с нереалистичными текстурами на стенах. Конечно, такие текстуры можно накладывать без фильтрации и в OpenGL, получая такой же уровень графики, но всё же, написать собственный софтверный движок было весьма интересно. Движок уровня Quake я написать в своё время не смог, так как не удалось создать редактор 3D карты – я просто не представлял, как вообще рисовать в 3D карту. Да и с большой вероятность текстурирование в произвольном случае в моём исполнении (без ассемблера) было бы очень медленно. Но движок уровня DOOM мне покорился. Основу такого движка я написал в 2002 году, пользуясь книжкой Шикина и Борескова “Компьютерная графика. Полигональные модели”. На базе того движка используя графику из Doom я написал некое подобие игры под MS-DOS на Watcom C. Несколько лет назад я решил вынуть из той игры код движка и переработать его под мои текущие знания языка Си++ и представления о том, как стоило бы устроить этот движок. Ну и заодно перенести этот движок под Windows и дополнить наклонами головы, как в Blood или Duke Nukem. О том, что в результате получилось, я и написал в этой статье.
Читать дальше →
Total votes 38: ↑38 and ↓0 +38
Views 21K
Comments 34

RPi-няня

Recognitor corporate blog Image processing *Machine learning *Artificial Intelligence DIY
Периодически меня подмывает сделать что-то странное. Очевидно бесполезную вещь, которая не оправдывает себя по объему вложенных средств, и через полгода после создания пылиться на полке. Но зато полностью оправдывает себя по количеству эмоций, полученному опыту и новым рассказам. На Хабре даже есть две моих статьи про такие эксперименты: Алкоорган и умная кормушка для птиц.

Что ж. Пришло время рассказать о новом эксперименте. Как собрал, что из этого вышло и как повторить.



К новому проекту меня подтолкнуло событие, в каком-то смысле, банальное — родился сын. Я заранее устроил себе отпуск на месяц. Но ребёнок оказался тихим — было свободное время. И спящий рядом деть.

Дома много разных embedded-железок для computer vision. В итоге решил сделать видео-няню. Но не такую унылую, которыми завалены все магазины. А что-то поумнее и поинтереснее.
Читать дальше →
Total votes 42: ↑40 and ↓2 +38
Views 12K
Comments 7

Операционные усилители: 10 схем на (почти) все случаи жизни

Circuit design *Manufacture and development of electronics *DIY Electronics for beginners
Всем привет!

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


Читать дальше →
Total votes 139: ↑137 and ↓2 +135
Views 273K
Comments 54

Машинное обучение. Нейронные сети (часть 2): Моделирование OR; XOR с помощью TensorFlow.js

ReactJS *Machine learning *TensorFlow *
Статья является продолжением цикла статей, посвященных машинному обучению с использованием библиотеки TensorFlow.JS, в предыдущей статье приведены общая теоретическая часть обучения простейшей нейронной сети, состоящей из одного нейрона:

Машинное обучение. Нейронные сети (часть 1): Процесс обучения персептрона

В данной же статье мы с помощью нейронной сети смоделируем выполнение логических операций OR; XOR, которые являются своеобразным «Hello World» приложением для нейронных сетей.
В статье будет последовательно описан процесс такого моделирования с использованием TensorFlow.js.
Total votes 11: ↑10 and ↓1 +9
Views 7.9K
Comments 0

Машинное обучение. Нейронные сети (часть 1): Процесс обучения персептрона

Machine learning *
Заранее хочу отметить, что тот кто знает как обучается персептрон — в этой статье вряд ли найдет что-то новое. Вы можете смело пропускать ее. Почему я решил это написать — я хотел бы написать цикл статей, связанных с нейронными сетями и применением TensorFlow.js, ввиду этого я не мог опустить общие теоретические выдержки. Поэтому прошу отнестись с большим терпением и пониманием к конечной задумке.

При классическом программировании разработчик описывает на конкретном языке программирования определённый жестко заданный набор правил, который был определен на основании его знаний в конкретной предметной области и который в первом приближении описывает процессы, происходящие в человеческом мозге при решении аналогичной задачи.

Например, может быть запрограммирована стратегия игры в крестики-нолики, шахмат и другое (рисунок 1).


Рисунок 1 – Классический подход решения задач

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


Рисунок 2 – Машинное обучение

Нейронные сети


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

На рисунке 3 вы можете увидеть сходство между устройством биологического нейрона и математическим представлением нейрона, используемого в машинном обучении.
Читать дальше →
Total votes 8: ↑5 and ↓3 +2
Views 12K
Comments 1

Как я считал время прибытия методом Монте-Карло

PHP *
Translation
Легкий и «полупраздничный» пост. Всех причастных с праздником :)

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

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

Задача из реальной жизни

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

Читать дальше →
Total votes 17: ↑16 and ↓1 +15
Views 27K
Comments 4

Information

Rating
4,112-th
Location
Paris, Paris, Франция
Registered
Activity