Search
Write a publication
Pull to refresh
32
0
Send message

Контрольная цифра методом Дамма

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

Примерами могут служить последняя цифра номера кредитной карты, девятая цифра VIN автомобилей, продаваемых в в США, или последняя цифра ISBN.

Алгоритм контрольной цифры ван Дамма — относительно новый и потому малоизвестный. Он опубликован 2004 году.

Алгоритм обнаруживает все ошибки в одной цифре и все одиночные перестановки соседних цифр. Он заметно проще, чем сравнимый по возможностям алгоритм Верхуффа, и не требует использования специальных символов (таких как X в 10-значном ISBN).
Читать дальше →

Как происходит рендеринг кадра в GTA V

Reading time16 min
Views120K
Серия игр Grand Theft Auto прошла долгий путь с момента своего первого релиза в 1997 году. Примерно 2 года назад Rockstar выпустила GTA V. Просто невероятный успех: за 24 часа игру купило 11 миллионов пользователей, побито 7 мировых рекордов подряд. Опробовав новинку на PS3, я был весьма впечатлен как общей картинкой, так и, собственно, техническими характеристиками игры.

Ничто так не портит впечатление от процесса, как экран загрузки, но в GTA V вы можете играть часами, преодолевая бескрайние сотни километров без перебоев. Учитывая передачу солидного потока информации и свойства PS3 (256 Mb оперативной памяти и видеокарта на 256 Mb), я и вовсе удивился, как меня не выбросило из игры на 20-ой минуте. Вот где чудеса техники.

В этой статье я расскажу о проведенном анализе кадра в версии для ПК в среде DirectX 11, которая съедает пару гигов как оперативки, так и графического процессора. Несмотря на то, что мой обзор идет со ссылкой на ПК, я уверен, что большинство пунктов применимо к PS4 и в определенной степени к PS3.

Анализ кадра


Итак, рассмотрим следующий кадр: Майкл на фоне любимого Rapid GT, на заднем плане прекрасный Лос-Сантос.

image

Осторожно! Трафик!
Читать дальше →

Как мы проектируем и прототипируем всякую фигню

Reading time8 min
Views37K


Главный враг раздолбайства — план.

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

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

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

Может показаться, что прототипировать — это вроде как не очень нужно. Херак-херак — и в продакшн. На самом деле, это чертовски важно в любом процессе; например, по заветам юзабелистов — это 70% работы. Вопрос только в том, как это можно делать.

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

Как устроена видеоаналитика

Reading time6 min
Views32K

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

В этой статье я расскажу про архитектуру видеоаналитики.
Читать дальше →

Какие технологии использует Netflix

Reading time2 min
Views25K
Мы постоянно работаем над тем, чтобы IaaS был простым и понятным даже для тех, кто не сталкивался с ИТ-сферой. Для этого мы проводим оптимизацию всех систем и рассказываем о своем опыте в нашем блоге на Хабре.

Пара примеров:


Сегодня мы поговорим о том, какие технологии в своей работе использует Netflix. Об этом в своем блоге рассказал Крис Умланд (Chris Ueland), а мы проанализировали его заметку.

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

Самая простая и надежная реализация шаблона проектирования Dispose

Reading time3 min
Views19K

Казалось бы, данный шаблон не просто прост, а очень прост, подробно разобран не в одной известной книге.

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

Хочу поделиться своим способом реализации, который основан на минимизации изобретения велосипедов, максимальном уменьшении количества кода и увеличении его выразительности и прозрачности.
Читать дальше →

Zotero: оптимизация хранения и использования научной литературы

Reading time6 min
Views57K


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

Здесь подробно описываются все прелести использования библиографического менеджера на примере Mendeley (это один из главных конкурентов Zotero, сравнение позже в этой статье). Здесь любопытно представлена система Citavi. Вроде бы, все в ней неплохо, но платить за софт приличные деньги, когда есть прекрасные бесплатные аналоги — развлечение на любителя. Кстати, от души рекомендую почитать комментарии к этой статье — познавательнее иных опусов. Здесь автор библиографического менеджера SciRef предлагает получить программку бесплатно.

Существует огромное множество различных библиографических менеджеров (см. таблицу в подвале, источник).

Сравнительная таблица библиографических менеджеров



Разумеется, при таком многообразии глупо говорить об одном идеальном решении. В этой статье я хочу рассказать вам о решении, которым пользуюсь и которое устраивает меня почти полностью. Как видно из названия статьи, это Zotero.
Читать дальше →

Cocos2d-x — разработка простой игры

Reading time12 min
Views116K

1. Вводная часть


В этой статье речь пойдет о разработке прототипа игры под Android/Linux с помощью Cocos2d-x. Cocos2d-x это кросс-платформенный фреймворк для создания двумерных игр и других графических приложений. Он создан на основе cocos2d-iphone, но вместо Objective-C Cocos2d-x использует C++. Приложения могут быть запущены на платформах: iOS, Android, Windows Phone, OS X, Windows, Linux.
Эта статья о разработке приложения под Android/Linux, платформа разработки — Ubuntu.
К сожалению, Cocos IDE существует только под Window и Mac, а под Linux версии не предвидится, но так как я очень люблю Ubuntu и это та платформа, с которой я работаю каждый день, я использую для разработки Clion.
Некоторые части этой статьи — перевод соответствующих частей документации (http://www.cocos2d-x.org/wiki).
Статья ориентирована на тех, кто начинает свое знакомство с Cocos2d-x. В ней я расскажу о том, как создать самое простое приложение со спрайтами, сценами и как работать с акселерометром. Это может быть неким стартом, чтобы в будущем идти дальше, углубляясь в API Cocos2d-x.

2. Требования


Определим необходимый набор инструментов, который нам понадобится.
Ubuntu 14.04 — платформа разработки
Cocos2d-x v3.8.1 — https://cocos2d-x.org/download
CMake 2.8+
JDK 1.6+
Android SDK
Android NDK r9d+
Apache Ant — для сборки Android-сборки
Python 2.7.5
Clion 1.1 — www.jetbrains.com/clion


3. Cocos2d-x


Cocos2d-x появился в 2010 году, это проект с открытым исходным кодом, распространяющейся под лицензией MIT. Cocos2d-x позволяет писать на таких языках как C++, Lua и Javascript. Cocos2d-x быстрый, простой и обладает большими возможностями. В настоящее время много игр, написанных с помощью этого фреймворка, находятся в топе AppStore и Google Play.
«Большие ребята», такие как Zynga, Wooga, Glu, Big Fish Games, Konami используют Cocos2d-x для разработки игр.

Тут я должен сделать маленькое отступление. Дело в том, что Cocos2d-x позволяет использовать C++ для написания кода, и все это будет собираться под Android и Linux. Если использовать Cocos2d-JS, то можно писать на Javascript. Тогда в случае сборки для на Linux/Ubuntu код будет транслироваться в C++, а затем компилироваться. Это влечет много разных проблем (усложняет работу со сторонними библиотеками, например). В случае же web будет выполнятся java-script (кстати, время сборки в этом случае равна нулю, что неплохо).
Если же использовать Cocos2d-x, то под web это не работает, но под Linux и Android код компилируется напрямую. Для Android, конечно же, используется Android NDK.

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

Observer vs Pub-Sub

Reading time4 min
Views69K
Observer и Pub-sub, наверное самые известные паттерны взаимодействия в мире разработки интерфейсов и JavaScript. Но несмотря на свою известность, некоторые разработчики считают эти паттерны одинаковыми, что и послужило подспорьем написать данную статью.



Пофилософствуем

50 лучших инструментов для разработки CSS и JavaScript

Reading time3 min
Views74K
Веб-разработчику постоянно необходимо быть в курсе появления новых библиотек и инструментов. Я нашёл и выбрал несколько лучших инструментов для разработки как CSS, так и JavaScript. Это не просто копипаста – это выборка, основанная как на рекомендациях, так и на личном опыте использования.

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

Лучшие инструменты для CSS и JavaScript


1) Fileicone

Сборник 100%-CSS файловых иконок. Может пригодиться для дизайна страниц.

image

2) Marx

Элегантное обнуление CSS безо всякого JavaScript.

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

Исследование результатов ЕГЭ, ГИА и олимпиад для московских школ. Из каких школ в какие ВУЗы поступают

Reading time4 min
Views33K
Месяц назад я писал про наше участие в хакатоне по открытым данным.

После хакатона мы не остановились на достигнутом, как это обычно бывает, а продолжили работу. У нас на руках оказались данные, к которым раньше имели доступ, наверное, только сотрудники Министерства образования: результаты ГИА и победы на олимпиадах за 2014-2015 год для 90% московских школ. Для 55% школ удалось собрать данные по ЕГЭ за 2015 год. Прокачали все аккаунты московских школьников в Контакте, посмотрели, какие ВУЗы они указывают у себя в профайлах после окончания.

Естественно, было интересно поизучать такой датасет. Сначала тривиальные вещи, о которых люди из образования, наверное, хорошо знают:
  • Баллы по ЕГЭ по гуманитарным предметам выше, чем по техническим. История — исключение;
  • Естественно-научные дисциплины посередине.


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

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

Reading time9 min
Views298K

1. Преобразование Фурье и спектр сигнала


Во многих случаях задача получения (вычисления) спектра сигнала выглядит следующим образом. Имеется АЦП, который с частотой дискретизации Fd преобразует непрерывный сигнал, поступающий на его вход в течение времени Т, в цифровые отсчеты — N штук. Далее массив отсчетов подается в некую программку, которая выдает N/2 каких-то числовых значений (программист, который утянул из инета написал программку, уверяет, что она делает преобразование Фурье).

Чтобы проверить, правильно ли работает программа, сформируем массив отсчетов как сумму двух синусоид sin(10*2*pi*x)+0,5*sin(5*2*pi*x) и подсунем программке. Программа нарисовала следующее:

image
рис.1 График временной функции сигнала

image
рис.2 График спектра сигнала

На графике спектра имеется две палки (гармоники) 5 Гц с амплитудой 0.5 В и 10 Гц — с амплитудой 1 В, все как в формуле исходного сигнала. Все отлично, программист молодец! Программа работает правильно.

Это значит, что если мы подадим на вход АЦП реальный сигнал из смеси двух синусоид, то мы получим аналогичный спектр, состоящий из двух гармоник.

Итого, наш реальный измеренный сигнал, длительностью 5 сек, оцифрованный АЦП, то есть представленный дискретными отсчетами, имеет дискретный непериодический спектр.
С математической точки зрения — сколько ошибок в этой фразе?

Теперь начальство решило мы решили, что 5 секунд — это слишком долго, давай измерять сигнал за 0.5 сек.
Читать дальше →

Do good code: 8 правил хорошего кода

Reading time9 min
Views125K
Практически всем, кто обучался программированию, известна книга Стива Макконнелла «Совершенный код». Она всегда производит впечатление, прежде всего, внушительной толщиной (около 900 страниц). К сожалению, реальность такова, что иногда впечатления этим и ограничиваются. А зря. В дальнейшей профессиональной деятельности программисты сталкиваются практически со всеми ситуациями, описанными в книге, и приходят опытным путём к тем же самым выводам. В то время как более тесное знакомство могло бы сэкономить время и силы. Мы в GeekBrains придерживаемся комплексного подхода в обучении, поэтому провели для слушателей вебинар по правилам создания хорошего кода.

В комментариях к нашему первому посту на Хабре пользователи активно обсуждали каналы восприятия информации. Мы подумали и решили, что тему «совершенного кода» стоит развить и изложить ещё и письменно — ведь базовые принципы хорошего кода едины для программистов, пишущих на любом языке.
Читать дальше →

Гоночный квадрокоптер с FPV для нерезинового бюджета – Robocat 270

Reading time5 min
Views36K
Пятничный пост подготовил коптеровод по имени Виктор. Он собрал и научился летать на гоночном квадрокоптере с онлайн-трансляцией (FPV). Передаем слово ему:

Всем привет. Сегодня речь пойдет о гоночном квадрокоптере Robocat 270*. Появился он у меня совсем недавно. При покупке этого квадрокоптера я преследовал две цели: летать по FPV и не париться о всевозможных крашах.


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

Как мы строили квест в реальности

Reading time11 min
Views50K
Нет нужды лишний раз объяснять, что такое квесты в реальности и с чем их едят. Тем более, эта тема уже не раз освещалась на Хабре (и Гиктаймс) [1] [2] [3]. Расскажу, как мы строили «Космическую одиссею» — самый технически сложный и, наверное, самый высокобюджетный из квестов «Клаустрофобии».



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

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

Как нам удалось построить видеохостинг за 1¢/ГБ

Reading time4 min
Views26K

Почему видеохостинг такой дорогой


Из всех видов статических файлов, используемых на веб-сайтах, с видеороликами связаны наиболее жёсткие требования к хостингу:

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

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

Чтобы решить эту проблему, нам пришлось сделать софт умнее.


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

Давайте поковыряем This War of Mine глубже: что в игромеханике?

Reading time11 min
Views113K


Игра гениальная. Она ещё год назад взорвала кучу изданий тем, как быстро и эффективно доносит до игрока ужасы войны. Поэтому предлагаю забраться немного «под капот». Сразу говорю — игра не наша, и отношения к нам не имеет.

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

Итак, напомню: основная задача игры — погрузить человека в состояние «быть гражданским на войне и попробовать выжить», чтобы даже до самых отмороженных дошло, как это плохо. Соответственно, всё остальное строится именно вокруг этого. При этом сама по себе игра должна быть:
  • Интересной.
  • С простым порогом входа.
  • Реалистичной для задач погружения.

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

Внимание, ниже немного спойлеров и много скриншотов (трафик).
Читать дальше →

Изометрический плагин для Unity3D

Reading time9 min
Views47K


Сказ о том, как написать плагин для Unity Asset Store, поломать голову над решением известных проблем изометрии в играх, да еще и немного денег на кофе с этого поиметь, а так же понять на сколько Unity имеет расширяемый редактор. Картинки, реализации, графики и мысли под катом.
Читать дальше →

Создание динамически изменяемого ландшафта для RTS на Unity3D

Reading time21 min
Views36K
Давным-давно я имел радость играть в замечательнейшую RTS под названием «Периметр: Геометрия Воины» от отечественного разработчика K-D Labs. Это игра о том, как огромные летающие города под названием «Фреймы» бороздят просторы «Спанджа» — цепи соединенных между собой миров. Сюжет достаточно странный и абстрактный, но гораздо более интересной и инновационной составляющей игры была одна из ее технических особенностей, а не сюжет. В отличие от большинства RTS, где сражения происходят на статической местности, в «Периметре», одной из ключевых игровых механик был терраформинг. У игрока были средства манипулировать ландшафтом с целью возведения на нем своих сооружений а также целый арсенал боевых единиц, способных этот ландшафт превратить в потрескавшийся, поплывший и изрыгающий раскаленные камни/противных насекомых ужас.

Как известно, мир RTS нынче переживает некоторый упадок. Инди-разработчики слишком заняты тем, что клепают ретро-платформеры и rouge-like игры зубодробительной сложности, и поэтому, переиграв в «Периметр» некоторое время назад я решил, что должен и сам попробовать реализовать что-то подобное — идея была интересной и с технической и с геймплейной точек зрения. Обладая некоторым практическим опытом в разработке игр (ранее я совершал попытки сделать кое-что на XNA), я подумал, что чтобы добиться хоть какого-то успеха в одиночку мне придется воспользоваться чем нибудь более высокоуровневым и простым. Выбор мой пал на Unity 3D, чья пятая версия только-только вышла из под пресса.

Вооруженный вагоном энтузиазма, вдохновением от только что пройденного «Периметра» и просмотренной серией видеотуториалов по Unity, я начал делать наброски и знакомиться с инструментарием, который мне предложил Unity Editor.
Читать дальше →

Linux-контейнеры дома: зачем и как

Reading time8 min
Views121K



Рассуждения


При упоминании словосочетания «контейнерная виртуализация», многим на ум сразу же приходят Virtuozzo и OpenVZ, а также Docker. Ассоциируется же это все, в первую очередь, с хостингом, VPS и другими подобными вещами.

Дома, на личных компьютерах многие используют виртуальные машины: в основном, пожалуй, Virtualbox. Как правило, для того, чтобы работая под Linux, иметь под рукой Windows или наоборот. Однако, при наличии множества родственных Linux-операционок, я стал замечать, что использование виртуальных машин — это, мягко говоря, нерационально.
Читать дальше →

Information

Rating
Does not participate
Location
Barcelona, Barcelona, Испания
Date of birth
Registered
Activity