Pull to refresh
0
0
Send message

Между дизайн-системой и Server Driven UI

Reading time7 min
Views7.5K

Всем привет! Меня зовут Владимир Касаткин, и я работаю бэкенд-разработчиком в компании ivi.ru, в команде "UX". Цель этой статьи — показать, как мы уменьшили объём клиентской разработки, но при этом увеличили количество проводимых A/B-тестов.


Раньше вся продуктовая разработка была разбита на большие направления ("платформы"): бэкенд, Smart TV, iOS, Android, веб. При этом фичи пилились достаточно долго (по полгода), а побочным эффектом были заметные различия внешнего вида и функционала одной и той же фичи на разных платформах.


Потом нас разбили по маленьким кросс-функциональным командам. Разработка пошла быстрее, костылей и платформенных различий на клиентах становилось всё больше.


Читать дальше →
Total votes 35: ↑35 and ↓0+35
Comments5

Игры, в которых нужно писать код (часть 2)

Reading time3 min
Views59K


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

Total votes 64: ↑64 and ↓0+64
Comments33

Принцип экономии мыслетоплива

Reading time15 min
Views81K


Представления, на наш взгляд, излишни. Под катом доклад гуру прокрастинатологии Максима Дорофеева, в котором он расскажет, как сделать больше, а устать меньше. Узнаем немного про обезьяну, эффективность и многое другое. Возможно даже, что после прочтения половина всего, что вы слышали ранее о мышлении, обесценится.
Total votes 40: ↑40 and ↓0+40
Comments30

Подборка обучалок по AR/VR

Reading time4 min
Views28K
image

  • Виртуальная реальность будет генерировать 25 миллиардов дохода в год к 2021 (Source: Statistica)
  • Зарплата в области VR будет от $75k/год до $200k/год. (Source: MediaJobs.com)
  • Понятие искусственной реальности было впервые введено Майроном Крюгером (англ. Myron Krueger) в конце 1960-х.
  • В 1964 году Станислав Лем в своей книге «Сумма Технологии» под термином «Фантомология» описывает задачи и суть ответа на вопрос «как создать действительность, которая для разумных существ, живущих в ней, ничем не отличалась бы от нормальной действительности, но подчинялась бы другим законам?».
  • Первая система виртуальной реальности появилась в 1962 году, когда Мортон Хейлиг (англ. Morton Heilig) представил первый прототип мультисенсорного симулятора, который он называл «Сенсорама» (Sensorama).
  • В 1967 году Айвен Сазерленд (англ. Ivan Sutherland) описал и сконструировал первый шлем, изображение на который генерировалось при помощи компьютера. Шлем Сазерленда позволял изменять изображения соответственно движениям головы (зрительная обратная связь).
  • В 1970-х годах компьютерная графика полностью заменила видеосъёмку, до того использовавшуюся в симуляторах. Графика была крайне примитивной, однако важным было то, что тренажёры (это были симуляторы полётов) работали в режиме реального времени.
  • Первой реализацией виртуальной реальности считается «Кинокарта Аспена» (Aspen Movie Map), созданная в Массачусетском Технологическом Институте в 1977 году. Эта компьютерная программа симулировала прогулку по городу Аспен, штат Колорадо, давая возможность выбрать между разными способами отображения местности. Летний и зимний варианты были основаны на реальных фотографиях. [Wikipedia]
Где можно поучиться
Total votes 12: ↑10 and ↓2+8
Comments1

О том, как я переизобретал медиацентр

Reading time11 min
Views133K

Raspberry Pi 3 model B


С приобретением нового телевизора возник вопрос, какую приставку для него брать. Возможностей Chromecast уже не хватало и хотелось полноценный медиацентр на Kodi. Телевизор со SmartTV покупать не вариант — Kodi можно установить только на Android (из SmartTV платформ), а к нему я отношусь без особой любви, к тому же он уже внутри телевизора, а не в отдельной коробке, которую можно безбоязненно перепрошивать. Ну а зачем мне полноразмерный Android, со всеми его сервисами и программами в виртуальной машине, без полноценного GNU/Linux окружения и, скорее всего, без обновлений? По той же причине также были отметены многочисленные готовые медиацентры на Android, хотя та же приставка от Xiaomi довольно хороша. Можно было бы подумать насчёт SmartTV на TizenOS, но для него нет Kodi.

Читать дальше →
Total votes 51: ↑49 and ↓2+47
Comments78

Пятничный геймдев: хорошие видео о том, как делать игры

Reading time2 min
Views28K


Привет, Хабр!

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

И начнем мы сегодня с ролика о том, как создать играбельного 2D-персонажа в Unity 5 — если вы еще не попытались этого сделать, то сейчас самое время. Важные моменты о физике, коллайдерах, спрайтах и перемещении персонажа по сцене.



Рекомендуем, кстати, посмотреть этот курс целиком вот здесь.

Смотреть дальше
Total votes 25: ↑19 and ↓6+13
Comments2

MDI i5 — портативный DLP проектор на Android

Reading time12 min
Views20K
Сегодняшний обзор посвящен DLP проектору MDI i5. На самом деле это непросто проектор, в него интегрирован TV-box на современном железе, аккумуляторная батарея и динамики.

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

image
Читать дальше →
Total votes 15: ↑11 and ↓4+7
Comments6

Эмуляция и перехват SIM-команд через SIM Toolkit на Android 5.1 и ниже (CVE-2015-3843)

Reading time11 min
Views42K


Я обнаружил эту уязвимость, исследуя возможность перехвата одноразовых паролей, которые отправлялись банком поставщику телекоммуникационных услуг, а затем поступали на специальное приложение SIM-карты и выводились на пользовательский интерфейс Android.
Читать дальше →
Total votes 25: ↑24 and ↓1+23
Comments6

Несколько вещей, о которых стоит помнить программисту в возрасте

Reading time11 min
Views128K
Если вы из тех, кто «работал ещё Там-То!» и «делал ещё То-То!», а сейчас счастливо отдыхаете на пенсии — эта статья не для вас. Просто спасибо за труд и примите мои поздравления. Но если же вы, как и я, даже став немного старше всё ещё ощущаете страсть к программированию, радуетесь виду кода и не можете устоять перед желанием написать ещё что-нибудь, тогда продолжайте читать.

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

Я смирился с мыслью, что мой лучший код уже написан — в прошлом. Мне было уже 54 года (немало!) и я, вероятно, уже не мог писать код так же хорошо, как и раньше. Кто знает — может быть у меня уже начала отказывать память, ну или я просто выучил всё, что был способен в жизни выучить. Мой настрой подкреплялся наблюдениями окружающей меня реальности. Все новые технологии выглядели для меня чудаковато. Я ненавидел Node.js. Я считал все фреймворки для веб-разработки ужасными. И я сетовал на то, что классические способы разработки ПО разрушились и превратились в набор клише, которые нынче впариваются под умными названиями типа Agile или «экстремальное программирование». Я скучал за днями, когда люди писали спецификацию на будущее ПО, программировали, а затем тщательно тестировали его. И когда в каждой статье не было тысячи жаргонных словечек.
Читать дальше →
Total votes 121: ↑117 and ↓4+113
Comments134

Как проектировать для людей с цветовой слепотой

Reading time4 min
Views23K


Примерно 8-10% мужчин и 0.5% женщин имеют ту или иную форму дальтонизма. То есть, на каждые 100 посетителей вашего сайта будет 10 таких, которые видят цвета иначе. И как убедиться, что ваш интерфейс одинаково доступен для любых пользователей? Есть много противоречивой информации на тему того, каким должен быть дизайн для дальтоников. Мы сделали выжимку с основными принципами, которые стоит учитывать в дизайне, чтобы добиться цветовой различимости интерфейса.
Читать дальше →
Total votes 19: ↑19 and ↓0+19
Comments37

Intel RealSense — теперь и в смартфоне

Reading time1 min
Views9.2K


В то время как россияне в меру сил отмечали новый год, в Лас-Вегасе проходила выставка достижений электронной индустрии CES-2016. Одной из примечательных, на наш взгляд, новостей выставки стала демонстрация RealSense Smartphone Developer Kit — первого смартфона с камерой RealSense, предназначенного для разработчиков. Помимо модуля Intel RealSense Camera ZR300 (включающего в себя камеру R200 с набором датчиков, а также короткофокусную фотокамеру), устройство примечательно процессором Intel Atom x7-Z8700, одним из самых мощных в «атомной» линейке, дисплеем с разрешением QHD (2560x1440) и разнообразными беспроводными интерфейсами. Смартфон работает под управлением ОС Android, в нем использованы наработки как Intel, так и Google (в лице Project Tango).
Более крупный «портрет» новичка — под катом. Предзаказ смартфона идет по цене $400.
Читать дальше →
Total votes 14: ↑12 and ↓2+10
Comments10

PINE64 — довольно мощный мини-ПК всего за $15

Reading time1 min
Views28K


Если бы несколько лет назад кто-то сказал, что за $35 можно получить функциональный персональный компьютер, над ним бы просто посмеялись бы. Тем не менее, уже сейчас мини-ПК продаются по цене в $5 или $9 — вспомним Raspberry Pi Zero and CHIP. Правда, эти системы никак нельзя назвать мощными.

Нельзя назвать мощным и новый миниатюрный ПК PINE64. Но его характеристики существенно лучше, чем у аналогов, которые продаются дешевле $20. Разработчики PINE64 оснастили свой девайс четырехъядерным процессором Allwinner 1.2 GHz 64-bit ARM Cortex-A53, 1 ГБ ОЗУ и прочими плюшками. Все это предлагается по цене в $15 за младшую модель или $19 за старшую. Вскоре кампанию по сбору средств на этот миниатюрный компьютер планируется запустить на Kickstarter.
Читать дальше →
Total votes 8: ↑7 and ↓1+6
Comments51

Обзор Sony Xperia Z5 Compact

Reading time4 min
Views15K
Мы давно привыкли к тому, что у Sony флагманские смартфоны выходят в компании «младших братьев». Компактной альтернативой Xperia Z1 была Xperia Z1 compact. Аналогично у Z3 существовала уменьшенная версия – Z3 Compact. А уменьшенной версией нынешней топовой модели стала Xperia Z5 Compact. В этот раз все серьезно – по начинке Z5 Compact практически не отличается от большого Z5. У него такая же платформа, такие же камеры и все-все-все фирменные фичи.


Читать дальше →
Total votes 13: ↑11 and ↓2+9
Comments21

Сделай сам: dll hijacking под MS Office для самых маленьких

Reading time5 min
Views30K
Прошло уже три дня с тех пор, как исследователь Parvez Anwar опубликовал информацию о множественных dll hijacking уязвимостях в продуктах Microsoft Office, а какой-либо реакции не наблюдается. Ни CVE, ни сообщений на специализированных ресурсах, Windows Update не качает свежих патчей. Что ж, может, так и нужно, может быть, это не уявимость, а особенность продукта?
Между тем, эксплуатация этой особенности проста и доступна даже ребенку. И, раз уж производитель пока эту «фичу» не удалил, почему бы не написать о ней небольшую статью.

Речь пойдет о Windows 7. Работает ли это на других версиях — мне на текущий момент неизвестно, нужно проверять. Принцип действия описываемого явления (как и многих других, впрочем) основан на старой доброй технологии COM/OLE/ActiveX.
Читать дальше →
Total votes 48: ↑46 and ↓2+44
Comments5

Анонс лабораторных работ по разработке, тестированию и управлению жизненным циклом ПО для Visual Studio 2015

Reading time2 min
Views10K


Мы рады поделиться с вами новостью о доступности новой виртуальной машины, содержащей последнюю версию Visual Studio, TFS и всю необходимую инфраструктуру для изучения и оценки всех возможностей средств разработки от Microsoft.

Виртуальная машина сопровождается набором новых лабораторных работ, которые помогут оценить возможности средств разработки и попробовать новые сценарии и инструменты, а также выделенным блогом, в котором публикуются последние новости и обновления.
Читать дальше →
Total votes 15: ↑15 and ↓0+15
Comments3

VRD догоняет Oculus Rift DK2

Reading time3 min
Views7K
13 ноября, пятница, 22 часа и все нормальные люди уже отдыхают дома… Николай всё ещё в офисе, делает очередную попытку изменения в программе, компилирует, заливает прошивку в контроллер и, о чудо, Runtime 0.8 наконец-то распознала шлем VRD как Oculus Rift DK2. Мы тут же судорожно пробуем запустить официальное демо-приложение и понимаем, что наконец-то всё работает. Признаться честно, для нас это была непростая и растянутая по времени задача, но мы с этим справились. Плата сенсоров теперь полностью совместима с практически всеми приложениями Oculus Rift DK2 и работает вплоть до последних версий Runtime.
Демо от Epic Games:


Читать дальше →
Total votes 14: ↑14 and ↓0+14
Comments12

Гальваническая развязка. Кто, если не оптрон?

Reading time7 min
Views145K

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

Статья под катом посвящена различным способам гальванической развязки цифровых сигналов. Расскажем зачем оно вообще нужно и как производители реализуют изоляционный барьер «внутри» современных микросхем.
Читать дальше →
Total votes 51: ↑51 and ↓0+51
Comments44

Ещё один способ реализации binding-а вычислимых свойств в WPF

Reading time5 min
Views6.1K
Допустим, есть проект на WPF и в нём ViewModel, в которой есть два свойства Price и Quantity, и вычислимое свойство TotalPrice=Price*Quantity

Код
public class Order : BaseViewModel
    {
        private double _price;
        private double _quantity;

        public double Price 
        {
            get { return _price; }
            set
            {
                if (_price == value)
                    return;
                _price = value;
                RaisePropertyChanged("Price");
            }
        }

        public double Quantity
        {
            get { return _quantity; }
            set
            {
                if (_quantity == value)
                    return;
                _quantity = value;
                RaisePropertyChanged("Quantity");
            }
        }

        public double TotalPrice {get { return Price*Quantity; }}
    }

    public class BaseViewModel : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;

        protected virtual void RaisePropertyChanged(string propertyName)
        {
            var propertyChanged = PropertyChanged;
            if (propertyChanged != null)
                propertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }




Если Price будет изменен в коде, то изменения цены автоматически отобразятся в View, потому что ViewModel сообщит View об изменении Price посредством вызовом события RaisePropertyChanged(«Price»). Вычисляемое TotalPrice же не изменится в View, потому что никто не вызывает RaisePropertyChanged(«TotalPrice»). Можно вызывать RaisePropertyChanged(«TotalPrice») в тех же местах, где вызывается RaisePropertyChanged(«Price») и RaisePropertyChanged(«Quantity»), но не хотелось бы размазывать по множеству мест информацию о том, что TotalPrice зависит от Price и Quantity, а хотелось бы хранить информацию об этом в одном месте. С этой целью люди пишут разнообразные менеджеры зависимостей, но давайте посмотрим какой минимальный код на самом деле нужен для этого.
Читать дальше →
Total votes 8: ↑6 and ↓2+4
Comments44

Мифы об изменениях в системе активации Windows 10

Reading time5 min
Views238K
В последнее время (в связи с выходом Windows 10), очень часто в сети встречается мнение: система активации Windows 10 сильно изменилась, активация теперь привязывается к устройству и учётной записи Microsoft, а ключ больше не нужен. Часто ссылки на статьи, содержащие это мнение, используются в качестве аргументов в спорах. Давайте попробуем разобраться, так ли это на самом деле.

На вопрос «откуда эта информация?» обычно ссылаются на то, что Gabriel Aul или кто-то другой из Microsoft что-то такое сказал. В лучшем случае приводятся цитаты типа вот такой:
If you’ve previously activated a genuine copy of Windows 10 on your device, you’ll be able to activate Windows 10 Insider Preview builds of the same edition without the need to enter a product key. This will also enable you to re-install the latest public release of Windows 10 without entering a product key if you no longer want Windows Insider Preview on your device.

Источник

Внимательный читатель (немного знакомый с английским), обратит внимание на то, что в цитате ни слова нет о каких-либо изменениях в системе активации. И лично мне не попадалось ни одного официального источника, в котором Microsoft или её сотрудники сообщали бы о подобных изменениях.

Теперь перейдём к практической части:
Читать дальше →
Total votes 21: ↑13 and ↓8+5
Comments22

Автоматическая калькуляция вычислимых свойств моделей представлений в .NET

Reading time15 min
Views12K

Мотивация на примере моделей представлений для WPF UI


Начать обсуждение и познакомиться с обсуждаемой проблематикой предлагается на примере подхода к архитектуре пользовательских интерфейсов в WPF.

Как известно, одна из главных фич WPF — это мощная система байндингов, позволяющая достаточно легко отделить модель представления (далее модель) от самого представления (далее View) как такового. Обычно программист создает XAML для представления, привязывает свойства его элементов к модели в том же XAML посредством байндингов и, фактически, забывает о View. Это становится возможным поскольку большинство UI-логики может быть реализовано через воздействие на модель и автоматически прокинуто на UI посредством байндингов. При таком подходе модель играет роль состояния View, являясь его прокси для слоя, реализующего UI-логику. Например, меняя свойство модели, мы тем самым меняем соответствующее ей свойство View (или его элементов). Последнее происходит автоматически благодаря системе байндингов, которая отслеживает изменения как в модели, так и во View, синхронизируя состояния на обоих концах по мере надобности. Одним из способов, посредством которых модель может сообщить наблюдателю (коим в нашем случае является байндинг) о своем изменении, является бросание события PropertyChanged с именем изменившегося свойства в качестве параметра. Это событие принадлежит интерфейсу INotifyPropertyChanged, который, соответственно, должен быть реализован в модели.

Рассмотрим описанную идею на конкретном примере. Начнем с простой модели, которая представляет собой некий Заказ и содержит два свойства — Цена и Количество. Оба свойства будут изменяемыми, поэтому для каждого нужно реализовать нотификацию об изменении. Это делается следующим кодом:
Читать дальше →
Total votes 12: ↑11 and ↓1+10
Comments24

Information

Rating
Does not participate
Registered
Activity