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

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

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

Удобный БЭМ

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


Приветствую. В этой статье я расскажу, как можно изменить БЭМ, сохранив лучшие его черты и избавившись от худших.
Читать дальше →
Всего голосов 37: ↑32 и ↓5+27
Комментарии74

Искусственный интеллект Horizon Zero Dawn: индивидуальное поведение

Время на прочтение9 мин
Количество просмотров13K
В первой части исследования ИИ Horizon Zero Dawn я рассказал, как игра создаёт стада управляемых искусственным интеллектом животных-машин. Для этого требуется сложная система иерархии агентов, в которой каждая машина может принимать решения о том, как вести себя, пользуясь планировщиком сети иерархических задач, а групповые агенты совместно назначают машинам роли и обязанности как частям стада. Всё это является частью системы под названием «The Collective», которая поддерживает экосистему всех машин в мире, когда пользователь находится в игре.


В этой заключительной статье мы подробнее рассмотрим системы, которые отдельные машины могут использовать как часть своего базового поведения. В них включены системы сенсоров, навигация для наземных и летающих машин, а также тесная связь ИИ-поведений с системами анимаций, обеспечивающая каждой машине опасное, но в то же время реалистичное поведение.
Всего голосов 36: ↑36 и ↓0+36
Комментарии1

Unity, ECS и все-все-все

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


Сколько уже было мануалов "Как сделать игру на Unity за 3 часа", "Делаем Counter-Strike за вечер" и т.п.? Низкий порог входа — это, несомненно, главный плюс и минус Unity. Действительно, можно накидать “ассетов”, дописать несколько простых “скриптов”, обмотать синей изолентой и это даже будет как-то работать. Но когда проект обрастает игровыми механиками, сложной логикой поведения, то проблемы при подобном подходе нарастают как снежный ком. Для внедрения новых механик требуется переписывание кода во многих местах, постоянная проверка и переделывание префабов из-за побившихся ссылок на компоненты логики, не говоря уже об оптимизации и тестировании всего этого. Разумеется, архитектуру можно продумать изначально, но на практике это всегда недостижимая цель — дизайн-документ довольно часто меняется, какие-то части выкидываются, добавляются абсолютно новые и никак не связанные со старой логикой поведения. Компоненты в Unity — это шаг в правильном направлении в виде декомпозиции кода на изолированные блоки, но особенности реализации не позволяют достичь необходимой гибкости, а самое главное, производительности. Разработчики придумывают свои фреймворки и велосипеды, но чаще всего останавливаются на ECS (Entity Component System). ECS – одно из решений, продолжающее идею компонентной модели Unity, но придающее ей ещё больше гибкости и сильно упрощающее рефакторинг и дальнейшее расширение приложения новым функционалом без кардинальных изменений в текущем коде.

Читать дальше →
Всего голосов 27: ↑26 и ↓1+25
Комментарии30

Courier: миграция Dropbox на gRPC

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


Примечание переводчика


Большинство современных программных продуктов не являются монолитными, а состоят из множества частей, которые взаимодействуют друг с другом. При таком положении дел необходимо, чтобы общение взаимодействующих частей системы происходило на одном языке (притом что сами эти части могут быть написаны на разных языках программирования и выполняться на разных машинах). Упростить решение этой задачи помогает gRPC — open-source-фреймворк от Google, выпущенный в 2015 году. Он решает сразу ряд проблем, позволяя:

  • использовать язык Protocol Buffers для описания взаимодействия сервисов;
  • генерировать программный код на основании описанного протокола для 11 разных языков как для клиентской части, так и для серверной;
  • реализовать авторизацию между взаимодействующими компонентами;
  • использовать как синхронное, так и асинхронное взаимодействие.

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

Дисклеймер
Оригинальная статья не содержит описания gRPC, и некоторые моменты могут показаться вам непонятными. Если вы не знакомы с gRPC или другими подобными фреймворками (например, Apache Thrift), рекомендую предварительно ознакомиться с основными идеями (достаточно будет прочитать две небольшие статьи с официального сайта: «What is gRPC?» и «gRPC Concepts»).

Спасибо Алексею Иванову aka SaveTheRbtz за написание оригинальной статьи и помощь с переводом трудных мест.
Читать дальше →
Всего голосов 47: ↑47 и ↓0+47
Комментарии0

Изучая go: пишем p2p мессенджер со сквозным шифрованием

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

Yet another P2P Messenger


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


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


Пример UI чата на ReactJs


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

Читать дальше →
Всего голосов 59: ↑56 и ↓3+53
Комментарии25

Вышел Linux 4.20 — что изменилось в новой версии ядра

Время на прочтение4 мин
Количество просмотров58K
Мы уже рассказывали о нововведениях, которые были сделаны в Linux kernel 4.18. Сегодня поговорим о том, что внедрили в 4.20, и проведем краткий обзор последующего релиза.

С большой долей вероятности он будет назван «5.0».

Читать дальше →
Всего голосов 33: ↑30 и ↓3+27
Комментарии28

Возможно, я жива только из-за неё: почему пациенты с апноэ полагаются на программу, написанную хакером

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

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




Кристи Линн испытывала постоянное чувство усталости, и после многих месяцев, проведённых в попытках диагностировать проблему, один из докторов решил, что догадался, в чём была проблема.

«Я не подходила ни под одно из описаний симптомов апноэ, — рассказала она мне по телефону. – Я женщина, у меня нет лишнего веса. Никому не приходило в голову проверить меня, кроме одного доктора, у которого была сходная история болезни».

Линн, живущая в сельской местности Аризоны, провела дома пульсоксиметрию, измеряющую уровень кислорода в крови, а потом прошла исследование сна. Ей поставили диагноз апноэ, заболевания, из-за которого пациенты внезапно перестают дышать во сне на некоторое время, и которое чаще всего преследует мужчин с лишним весом. Ей выдали СИПАП-машину (аппарат для искусственной вентиляции лёгких постоянным положительным давлением) с маской – это устройство задувает воздух в дыхательное горло, чтобы воздушные пути оставались открытыми – и отправили домой.
Читать дальше →
Всего голосов 73: ↑63 и ↓10+53
Комментарии75

Почему Kodak умерла, а Fujifilm расцвела: история двух производителей фотоплёнки

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


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

Ситуация до плёночного кризиса: безопасный и доходный рынок


Хотя Kodak и Fujifilm производили фотокамеры, их основным бизнесом была фотоплёнка и продажи услуг постобработки. Согласно Forbes, Kodak «с удовольствием раздавала камеры в обмен на то, чтобы подсадить людей на оплату проявки фотографий – в результате чего доля Kodak на рынке химикатов и бумаги, используемых для проявки и печати фотографий, составляла приятные 80%».
Читать дальше →
Всего голосов 56: ↑53 и ↓3+50
Комментарии203

Удачная модель ветвления для Git

Время на прочтение10 мин
Количество просмотров995K
Перевод статьи Vincent Driessen: A successful Git branching model

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



В качестве инструмента управления версиями всего исходного кода она использует Git.

Читать дальше →
Всего голосов 180: ↑171 и ↓9+162
Комментарии105

Пособие по webpack

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


Давайте сначала разберемся, зачем нужен вебпак (webpack), и какие проблемы он пытается решить, а потом научимся работать с ним. Webpack позволяет избавиться от bower и gulp/grunt в приложении, и заменить их одним инструментом. Вместо bower'а для установки и управления клиентскими зависимостями, можно использовать стандартный Node Package Manager (npm) для установки и управления всеми фронтэнд-зависимостями. Вебпак также может выполнять большинство задач grunt/gulp'а.


Bower это пакетный менеджер для клиентской части. Его можно использовать для поиска, установки, удаления компонентов на JavaScript, HTML и CSS. GruntJS это JavaScript-утилита командной строки, помогающая разработчикам автоматизировать повторяющиеся задачи. Можно считать его JavaScript-альтернативой Make или Ant. Он занимается задачами вроде минификации, компиляции, юнит-тестирования, линтинга и пр.

Допустим, мы пишем простую страницу профиля пользователя в веб-приложении. Там используется jQuery и библиотеки underscore. Один из способов — включить оба файла в HTML:

Читать дальше →
Всего голосов 42: ↑41 и ↓1+40
Комментарии13

Как работает Android, часть 3

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


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

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

Как работает Android, часть 2

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


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

Читать дальше →
Всего голосов 73: ↑72 и ↓1+71
Комментарии34

Как работает Android, часть 1

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


В этой серии статей я расскажу о внутреннем устройстве Android  —  о процессе загрузки, о содержимом файловой системы, о Binder и Android Runtime, о том, из чего состоят, как устанавливаются, запускаются, работают и взаимодействуют между собой приложения, об Android Framework, и о том, как в Android обеспечивается безопасность.

Читать дальше →
Всего голосов 92: ↑91 и ↓1+90
Комментарии51

Как работает Android, часть 4

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


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

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

Европа последний раз переводит часы на зимнее время

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

Часовая башня в Берне (Швейцария) с астрономическими часами 1530 года (внизу)

В ночь с субботы на воскресенье 28 октября 2018 года страны Евросоюза синхронно переведут стрелки на час назад. Скорее всего, они сделают это последний раз. По результатам референдума Еврокомиссия приняла решение, что с 2019 года перевод часов больше не производится.

До апреля 2019 года каждая страна ЕС должна решить, на каком времени она остаётся — на зимнем или на летнем. Есть опасения, что картина часовых поясов в Евросоюзе хаотично поменяется. С другой стороны, она может, наоборот, гармонизироваться, если соседние страны договорятся друг с другом.
Всего голосов 55: ↑52 и ↓3+49
Комментарии526

Законы рефлексии в Gо

Время на прочтение9 мин
Количество просмотров50K
Привет, Хабр! Представляю вашему вниманию перевод статьи «The Laws of Reflection» от создателя языка.

Рефлексия — способность программы исследовать собственную структуру, в особенности через типы. Это форма метапрограммирования и отличный источник путаницы.
В Go рефлексия широко используется, например, в пакетах test и fmt. В этой статье попытаемся избавиться от «магии», объяснив, как рефлексия работает в Go.
Читать дальше →
Всего голосов 14: ↑12 и ↓2+10
Комментарии10

Совершенствуем Redux

Время на прочтение5 мин
Количество просмотров28K
Привет, Хабр! Представляю вашему вниманию перевод статьи "Redesigning Redux" автора Shawn McKay.

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

  • Вам действительно необходима библиотека для управления состоянием?
  • Заслужил ли Redux свою популярность? Почему или почему нет?
  • Можем ли мы придумать лучшее решение? Если да, то какое?

Необходима ли библиотека для управления состоянием?


Front-end разработчик не тот, кто попросту передвигает пиксели из стороны в сторону; истинное искусство в знании где хранить состояние. Это кажется сложным только на первый взгляд.

Давайте рассмотрим возможности, которые предоставляет нам React:

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

GDPR. Практические советы

Время на прочтение5 мин
Количество просмотров63K
Все слышали о General Data Protection Regulation (GDPR) (Regulation (EU) 2016/679), который вступает в силу 25 мая 2018 года. Штрафы большие и придётся соответствовать. Как и любой официальный документ, он написан сухо и может трактоваться по-разному. За последние полгода провел анализ десятка различных веб-систем на соответствие GDPR, и везде встречались одни и те же проблемы. В связи с этим цель этой статьи не разъяснить, что такое GDPR (об этом уже много написано), а дать практические советы техническим людям, что необходимо сделать в вашей системе, чтобы она соответствовала GDPR.

Пару интересных моментов по регламенту:

  • Если есть хоть один клиент из Европы, чьи персональные данные вы храните, вы автоматически попадаете под GDPR
  • Регламент базируется на трёх основных идеях: защита персональных данных, защита прав и свобод людей в защите их данных, ограничение перемещения персональных данных в рамках Евросоюза (Art. 1 GDPR)
  • UK всё ещё в EU, поэтому подпадает под действие GDPR, после Brexit-а GDPR будет заменён на Data Protection Bill, который по своей сути очень схож с GDPR (https://ico.org.uk/for-organisations/data-protection-bill/)
  • Серьезно ограничивается трансфер данных в третьи страны. Европейская комиссия определяет, в какие “третьи” страны или в какие сектора или организации в этих странах разрешён трансфер персональных данных Art. 45 GDPR. Вот список разрешённых стран.
Читать дальше →
Всего голосов 45: ↑44 и ↓1+43
Комментарии41

Цвет в дизайне интерфейсов: инструкция по применению

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


Как создать чистый интерфейс, используя всего лишь один цвет? Вы узнаете из этой статьи. Перевод «Я люблю ИП».


Будучи по большому счёту дизайнером-самоучкой, мне всегда было интересно, почему так много статей и сайтов говорят о теории цвета и цветовых палитрах. По моему опыту, вероятность сделать красивый дизайн, использую «сплит-комплиментарную палитру», стремится к нулю.


У меня есть другое мнение на этот счёт: теория цвета бесполезна.


Но если теория цвета не является прочной основой для выбора цвета в дизайне интерфейсов, то что тогда является?


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


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


Я знаю, что это звучит немного странно. Но послушайте меня, я дам вам практическую инструкцию для адаптации цвета в вашем дизайне.


Вы готовы? Тогда поехали.

Читать дальше →
Всего голосов 57: ↑56 и ↓1+55
Комментарии24

Пять Docker-утилит, о которых вам стоит узнать

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

Источник изображения


На просторах сети Интернет можно найти немало полезных утилит для Docker. Многие из них принадлежат к разряду Open Source и доступны на Github. В последние два года я достаточно активно использую Docker в большинстве своих проектов по разработке программного обеспечения. Однажды начав работать с Docker, вы осознаете, что он оказывается полезен для гораздо более широкого круга задач, нежели вы изначально предполагали. Вам захочется сделать с Docker еще больше, и он не разочарует!


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


Давайте посмотрим на утилиты, которые помогают мне в процессе докеризации всего и вся.

Читать дальше →
Всего голосов 32: ↑30 и ↓2+28
Комментарии16

Информация

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