1 апреля 2018 г.

Docker и permissions


В этой статье я расскажу, как я решил проблему с правами на файлы, которая проявляется при разработке веб-приложений с использованием Docker и контейнеров php-fpm, nginx, node.

Суть проблемы заключается в следующем. Предположим, что у вас выполнены следующие условия:
  • на вашей машине установлена ОС из семейства Linux, например, Ubuntu
  • вы логинитесь и работаете не root-пользователем, например, пользователь ubuntu с id = 1000
  • используете образы php-fpm, nginx, node из официального репозитория Docker Hub
  • исходный код вы редактируете не в докере, а на хост-машине, монтируя директорию с ним в докер-контейнеры
В такой ситуации получается, что владелец файлов исходного кода `id=1000`, а файлы, создаваемые приложением в процессе работы web-сервера (аплоад, кеши, логи и прочее) имеют владельца `id=33`, при этом права на запись у них есть только владельцу. Кроме того, файлы, создаваемые из консоли, например, файлы миграции, файлы кодогенерации, кеши, логи, ассеты, собираемые и публикуемые с помощью npm , будут созданы от имени root-пользователя, если не выполнять `docker run –user` с явным указанием пользователя. Даже если указать локального пользователя для выполнения команд от его имени, то могут возникнуть проблемы с правами записи кеша самих инструментов composer, npm.  Все вышеописанные файлы не получится ни редактировать, ни сменить права без root-пользователя. Это и есть проблема.

25 января 2018 г.

Многопользовательская браузерная карточная игра Дурак

Не так давно я начал работу над новым своим пет-проектом – это многопользовательская карточная игра в Дурака в вебе. Я выбрал именно Дурака, потому что не смог найти, где можно в нее поиграть в вебе с конкретным игроком без всяких фейсбуков. Выдача завалена флешевыми поделками, наверное, где-то ниже есть что-то годное. Я знаю точно, что на мобильной платформе этого полно и, скорее всего, качественного. Но я собираюсь играть в Дурака с родителями, а им с ПК удобнее. В качестве серверного языка программирования я выбрал Go на вебсокетах. Фронтэнд я буду делать с помощью нового для меня Vue.

19 декабря 2017 г.

Ещё один опыт лазерной коррекции зрения методом ReLEx SMILE

12 декабря мне была произведена лазерная коррекция зрения методом ReLEx SMILE в МНТК "Микрохирургия глаза" Новосибирском филиале. Стоимость операции за оба глаза - 90т.р.
Хоть это и не о программировании, но расскажу подробнее о том, как я готовился, как происходило, так как считаю это полезным опытом.

14 августа 2017 г.

Распознавание кота через OpenCV в браузере

Сделал на коленке демку с распознаванием кота https://rnixik.github.io/facedetectdemo/cats/

По сути это базовый пример из OpenCV http://docs.opencv.org/2.4/doc/tutorials/objdetect/cascade_classifier/cascade_classifier.html с использованием данных из https://github.com/timatooth/catscanface/blob/master/haarcascade_frontalcatface_extended.xml
и маски Бэтмена.
Всё это собрано с помощью Emscripten на основе https://github.com/ucisysarch/opencvjs

  Исходники пока не выкладывал. Чуть позже.

Плагин с паучьей навигацией опубликован в Unreal Engine 4 Marketplace

Я занимался плагином для навигации паука в мае. Подал заявку в Epic Games. Но до релиза дошло только 12 августа: https://www.unrealengine.com/marketplace/spider-navigation
Пока отзывы отличные. Посмотрим, что они скажут, когда я не стану обновлять плагин для новых версий движка. Хотя, на самом деле, я очень надеюсь, что Epic Games не скоро поломают совместимость.

22 апреля 2017 г.

Плагин паучьей навигации для Unreal Engine 4

Долго работал над способом создания навигации для паука в Unreal Engine 4. Дело в том, что стандартная система навигации работает только на горизонтальных поверхностях (UE 4.15). Но пауки должны ползать и по стенам и по потолку. Результатом работы стал плагин со своим способом построения сетки навигации. Для перемещения по сетки был реализован алгоритм поиска пути A*. Подробнее можно посмотреть на странице плагина: https://github.com/rnixik/spider-navigation-plugin


12 марта 2016 г.

Заметка о 3D-анимации в вебе с использованием three.js

Короткий журнал о том, что я узнал в процессе изучения three.js и попытки запустить в нём анимацию мешей. Версия three.js r74 и r74-dev, версия blender 2.76

 Почти все загрузчики разных форматов находятся в examples/js/loaders. Встроенным является ObjectLoader (загрузчик одного меша) и JSONLoader (загрузчик сцены).

Формат OBJ для мешей сопровождается файлом с расширением mtl, в котором описаны параметры материалов. Хорошая статья о параметрах материалов в mtl есть на англоязычной вике о obj.

Three.js не парсит значения всех текстурных карт из mtl: apha-map, displacement-map и ещё какие-то. Зато легко можно дописать это в 5 строк на каждый материал в исходники MTLLoader.

Формат OBJ не поддерживает анимацию