Search
Write a publication
Pull to refresh
63
0
Андрей @Smi1e

User

Send message

Интерфейсы в реальном мире: проектируем самый адский интерфейс

Reading time6 min
Views64K
До прошлой недели абсолютным чемпионом по упоротости интерфейса для меня всегда были мультиварки. Одну из них мы втроём (включая системного архитектора) пытались включить 6 минут, пока не пришла хозяйка. Но нет, этот рекорд тоже оказался побит. Вот это небольшое устройство, знакомое большинству жителей нашей страны, отняло у меня 25 долбанных минут на то, чтобы выставить время. Знакомьтесь, чемпион по когнитивной сопротивляемости:



Сейчас расскажу, какой крови мне это стоило. Ну и сразу – второй чемпион, но на этот раз по дружелюбности инженерного интерфейса:



Давайте начнём с того, что попробуем ещё сильнее ухудшить интерфейс часов выше.
Читать дальше →

Мультиплеер в быстрых играх (части I, II)

Reading time7 min
Views145K


  1. Части I, II (синглплеер с авторитарным сервером)
  2. Часть III (Появление врага)
  3. Часть IV (Хэдшот!)


Предлагаю вашему вниманию перевод статьи Fast-Paced Multiplayer (Part I): Introduction.

Разработка игры — само по себе непростое занятие. Но мультиплеерные игры создают совершенно новые проблемы, требующие разрешения. Забавно, что у наших проблем всего две причины: человеческая натура и законы физики. Законы физики привнесут проблемы из области теории относительности, а человеческая натура не даст нам доверять сообщениям с клиента.
Читать дальше →

[PF] Печать PDF под .NET, векторный подход, практика

Reading time13 min
Views6.5K

Как и обещал, продолжаю тему(раз, два) управляемой печати PDF из под .NET в векторном формате. О теоретических аспектах работы с PCL я рассказал в предыдущей статье, настало время разобрать программу для вывода на принтер PDF файла в векторе. Наше приложение будет полезно, например, когда нужно распечатать пачку многостраничных бланков или анкет на бумаге разных цветов и разной плотности. Если мы научимся управлять лотками принтера, избавим себя от ручного прокладывания страниц ;) В шаблоне будет указан номер лотка, из которого принтер заберет бумагу для текущей страницы. Причем шаблон будет применяться к документу циклически: если в документе 32 страницы, а в шаблоне 4, то шаблон повторится 8 раз для Simplex режима и 4 раза для Duplex.
Читать дальше →

«Кандидат имеет право задавать уточняющие вопросы», или Доводим интервьюера до нервного срыва

Reading time4 min
Views129K
Недавно я прочёл запись в блоге одного парня, который жаловался, что на интервью его попросили написать функцию, которая должна скопировать файл. Нет, я понимаю, как можно взъесться на такое задание, но если бы в подобной ситуации оказался я… уж я бы оторвался по полной:

Кандидат: Что конкретно Вы имеете в виду, говоря «скопировать»?
Интервьюер: Ну… создать новый файл, содержимое которого является копией содержимого исходного файла.
Читать дальше →

Исследование защищенности карты Тройка

Reading time18 min
Views204K
Карта тройка

Карта Тройка представляет из себя универсальный пополняемый электронный кошелек, широко используемый в системах оплаты общественного транспорта Москвы с 2013 года.

Цель данного исследования — выяснить защищенность системы электронного кошелька от подделки баланса, оценить безопасность инфраструктуры, работающей с картой. Вся работа была выполнена без использования специальных технических средств. Использовался дешевый смартфон на платформе Android и персональный компьютер. Общее время, затраченное на исследование, составило 15 дней.

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

Итогом исследования стала разработка приложения TroikaDumper, позволяющего эксплуатировать уязвимости системы электронного кошелька.

Внимание! Данные материалы представлены исключительно в ознакомительных целях. Подделка проездных билетов является уголовным преступлением и преследуется по закону.

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

Мой URL — это не ваш URL

Reading time6 min
Views32K


Когда давным-давно в 1996 году я приступил к работе над программой httpget, предшественницей проекта Curl, я написал свой первый синтаксический анализатор URL. Как раз тогда этот универсальный адрес получил название URL: Uniform Resource Locator (единый указатель ресурсов). Его спецификация была опубликована IETF в 1994 году. Аббревиатура «URL» была затем использована как источник вдохновения для названия инструмента и проекта Curl.

Термин «URL» был позднее изменён; его стали называть URI (Uniform Resource Identifier — единый идентификатор ресурсов), согласно спецификации, опубликованной в 2005 году, однако основное сохранилось: синтаксис для строки, задающей онлайн-ресурс и указывающей протокол для получения этого ресурса. Мы требуем, чтобы curl принимал указатели URL, как определено данной спецификацией RFC 3986. Ниже я расскажу, почему на самом деле это не совсем так.
Читать дальше →

Изучаем Bootmgr. Часть 1 — инструментарий и основные принципы отладки начальных этапов загрузки ОС Windows

Reading time12 min
Views52K

Введение


Возможно некоторые читатели помнят мою самую первую статью на ресурсе, посвященную загрузке Windows с VHD-образа. Возможно я бы и не вернулся к этой теме, если бы не нашлись люди, попытавшиеся повторить данную технологию на своих домашних машинах. Естественно, с реализацией этого решения возникли проблемы, касающиеся в основном тех ошибок, которые выплевывает bootmgr в тех случаях, когда ему что либо не нравится. Попытки интерпретации ошибок загрузки вроде 0xc03a0003 путем гугления к особо ценным результатам не приводят, а документация Microsoft на этот счет хранит многозначительное молчание. Возникла идея изучить процесс обработки VHD-образов, получив информацию из первых рук, то есть от самого загрузчика.


Если обратится к уже имеющейся в сети информации, то существует замечательный блог "Записки эникейщика о Windows" на страницах которого (раз, два и три) размещены, на мой взгляд, самые ценные сведения, по вопросам устройства bootmgr. Автор подробно рассмотрел процесс загрузки, включая исследования кода MBR и PBR, остановившись на структуре bootmbr, кратко описав происходящие при его работе процессы.


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

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

[PF] Печать PDF под .NET, векторный подход, теория

Reading time4 min
Views8.6K


Продолжаю тему печати PDF документов из под .NET.

В принципе, распечатать документ не трудно, есть даже готовые решения. Сложности возникают, когда нужно управлять некоторыми параметрами печати. В своей практике я столкнулся с задачей по реализации минитипографии — когда при печати документов нужно указывать, из какого лотка брать очередной лист, т.е. печатать документы по шаблонам. Первым делом я попытался найти готовые решения, но не обнаружив ничего подходящего, стал придумывать свое.
Хочу читать дальше!
Невероятно, но факт: в этом году «Хабрахабр» празднует своё десятилетие. Десять лет — это много или нет? С одной стороны — не очень, с другой — это почти половина возраста Рунета. А поскольку за это время проект успел порядком наследить в интернет-индустрии, хочется оглянуться назад и вспомнить наиболее интересные и запомнившиеся моменты из продолжающейся истории сайта.
Читать дальше

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

Reading time5 min
Views36K
(Приглашение к совместному проекту с открытым исходным кодом)

Зачем люди пишут игровых ботов? – Можно назвать много возможных причин, одной из них, безусловно, является чисто академический интерес решения сложной задачи AI. В литературе по философии CS и по философии математики программирование неоднократно сравнивалось с альпинизмом. Трудно сказать, кто первый сделал такое сравнение. На наш взгляд, оно очень подходит и к нашему случаю, поэтому, рискуя показаться не оригинальными, все же сделаем утверждение: написание нетривиального бота для программиста – такой же вызов, как покорение вершины для альпиниста. Чем недоступнее вершина – тем сильнее желание ее покорить. Поэтому, прежде всего, нужно выбрать действительно достойную вершину в интересном горном массиве. Одним из таких массивов со множеством сложных, никем пока не покоренных вершин, является игра "Космические Рейнджеры 2 HD: Революция" (КР2) — продолжение серии игр "Космические Рейнджеры" (КР).
Читать дальше →

Что случилось с Google Maps?

Reading time6 min
Views142K
Если вы часто пользуетесь картами Google Maps, то наверняка заметили изменения, которые произошли после редизайна примерно три года назад. Самое заметное, что стало гораздо меньше меток, карты как будто опустели.

Вот как выглядят окрестности Нью-Йорка, в сравнении с картой 2010 года.



Сколько городов исчезло с карты? Давайте посчитаем.
Читать дальше →

Трогательная история: от первых тачскринов до будущего с Surfancy

Reading time16 min
Views19K
МЕГА Accelerator был запущен в начале года, и в прошлом посте мы познакомили вас с десятью стартапами, ставшими резидентами нашего акселератора и уже начавшими работу в коворкинге PO2RT. Теперь можно рассказать подробнее о каждом из проектов. Почему бы не начать с Surfancy?

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

Чем GearVR отличается от картонной коробки, или погоня за latency

Reading time13 min
Views18K

Disclaimer: пост написан на основе изрядно отредактированных логов чата closedcircles.com, отсюда и стиль изложения, и наличие уточняющих вопросов.


image


Главный термин который надо знать относительно VR — motion-to-photon latency.
Иначе говоря, задержка между поворотом головы и последним фотоном изображения (отрисованного с ракурса нового положения головы) покинувшим экран.
Эмпирически выведено что motion-to-photon latency 20 msec и ниже позволяет достигать presence — т.е. ощущения что двигаешь головой в виртуальном мире.
Важны ли значения меньше 20 ms или нет — непонятно, но в общем цель — достигнуть 20.
GearVR правдами и неправдами достигает, и я расскажу как.

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

Введение в автономную навигацию для дополненной реальности

Reading time14 min
Views11K

Компьютерные системы с управлением без помощи контроллеров — новый этап во взаимодействии человека и компьютера. К этой области относятся технологии, воспринимающие физическую среду, включая распознавание жестов, распознавание голоса, распознавание лица, отслеживание движения, реконструкцию среды. Камеры Intel RealSense F200 и R200 реализуют ряд возможностей из этой области. Благодаря возможности съемки с определением глубины камеры F200 и R200 позволяют выстраивать трехмерную среду и отслеживать движение устройства по отношению к среде. Реконструкция среды вместе с отслеживанием движения позволяет реализовать возможности виртуальной реальности, в которой виртуальные предметы вписываются в реальный мир.

Цель этой статьи — ознакомление с автономной навигацией и описание ее применения в приложениях дополненной реальности. Разработанный пример использует камеру Intel RealSense R200 и игровой движок Unity 3D. Рекомендуется заранее ознакомиться с возможностями Intel RealSense SDK и Unity. Сведения об интеграции Intel RealSense SDK с Unity см. в статьях Разработка игр с Unity и камерой Intel RealSense 3D и Первый взгляд: дополненная реальность в Unity с Intel RealSense R200.
Читать дальше →

YConfs — система информационной поддержки конференций

Reading time5 min
Views4.4K
Уважаемые читатели, хочу рассказать вам о разработке, появившейся в стенах Сибирского федерального университета, — веб-приложении YConfs, предназначенном для информационной и организационной поддержки научных конференций.

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

Эмодзи?! Нет, не слышал

Reading time5 min
Views37K
image В нашу жизнь уже давно вошли эмодзи. И в социальных сетях, и во всевозможных мессенджерах мы используем их не задумываясь, выражая свои эмоции всего одним символом. Но для кроссплатформенного приложения отправка и отображение эмодзи — непростая задача. Проблема заключается в том, что отправленные эмодзи с мобильных приложений не всегда отображаются корректно на веб-сайтах.

Последние версии iOS и Android имеют поддержку более 1200 символов эмодзи, но «десктопный» рынок не может похвастаться такими успехами. Мы же в Badoo хотим и делаем все, чтобы пользователям было комфортно общаться на всех платформах, не имея никаких ограничений в переписке.
Далее я расскажу, каким способом мы добились 100% поддержки эмодзи для веба.
Читать дальше →

Стремление к нулю: как за четверть века менялись цены на мобильную связь

Reading time5 min
Views20K


Как известно, цена товара определяется в первую очередь его себестоимостью, спросом, объёмом предложения и конкуренцией. То же самое можно сказать и о стоимости услуг, в том числе и на телеком-рынке. Сегодня мобильник в кармане — настолько привычная вещь, что многие уже с трудом вспоминают времена, когда он был роскошью, а уж тем более, когда их совсем не было. Да что там, многие даже не застали начало распространения мобильной связи в России. И если мы время от времени умиляемся тому, как громоздко и нелепо выглядели раньше сотовые телефоны, то уж о стоимости самой услуги связи в былые годы задумываются совсем единицы. А ведь когда-то мобильная связь считалась в нашей стране уделом лишь очень обеспеченных людей.
Читать дальше →

Введение в программирование шейдеров: часть 2

Reading time8 min
Views23K
Научившись писать шейдеры, вы сможете максимально эффективно использовать всю вычислительную мощь современных графических чипов, тысячи ядер которых работают параллельно в одном потоке, ведь все шейдерные вычисления производятся на GPU, а не на CPU. Программирование шейдеров требует другого мышления и подхода к написанию кода, нежели написание обычных программ, однако их практически безграничный потенциал с лихвой окупает все проблемы на начальных этапах.


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

Повесть о создании классической RTS в домашних условиях с нуля + разбор основных этапов разработки (AI, сеть и т.д.)

Reading time38 min
Views78K
image

В статье речь пойдет об одном очень не новом проекте, который создавался совсем в другое время и совсем в других условиях. Это моя старенькая RTS под названием Земля онимодов (Onimod land). Чтобы было сразу понятно, что она собой представляет, можно посмотреть коротенькое видео:
Читать дальше →

Уличная грязь и симуляция движения пешеходов

Reading time7 min
Views61K
С приходом весны и дождей на улице в глаза все чаще бросается одна проблема. Вот эта:



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

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

Шел я как-то по дорожке и вяло размышлял на тему того, что опять придется или тащиться в обход, или пачкать обувь. С возмущения типа «вот же дураки это проектируют» мысль плавно перетекла на слышанную когда-то байку про некий наукоград, где дорожки во дворах сперва не сделали вовсе, а потом просто заасфальтировали протоптанные людьми тропинки, получив сеть удобных жителям маршрутов. А оттуда мысль перекочевала к идее «а почему бы не сделать то же самое, но на компьютере?». Разработать программу, которая по заданной карте предскажет, где люди будут топтать газоны и где неплохо бы сделать асфальтовое покрытие?

Под катом — описание алгоритма и пара примеров его работы для реальных питерских дворов.
Читать дальше →

Information

Rating
Does not participate
Location
Россия
Registered
Activity