Pull to refresh
139
0
Павел Галаничев @old_gamer

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

Send message

10 физических фактов, которые вы должны были узнать в школе, но, возможно, не узнали

Reading time6 min
Views76K
image

1. Энтропия измеряет не беспорядок, а вероятность


Идея о том, что энтропия – это мера беспорядка, совсем не помогает разобраться в вопросе. Допустим, я делаю тесто, для чего я разбиваю яйцо и выливаю его на муку. Затем добавляю сахар, масло, и смешиваю их до тех пор, пока тесто не становится однородным. Какое состояние является более упорядоченным – разбитое яйцо и масло на муке, или получившееся тесто?

Я бы сказала, что тесто. Но это состояние с большей энтропией. А если вы выберете вариант с яйцом на муке – как насчёт воды и масла? Энтропия выше, когда они разделены, или после того, как вы их яростно потрясёте, чтобы смешать? В данном примере энтропия выше у варианта с разделёнными веществами.

Энтропия определяется как количество “микросостояний”, дающих одно и то же “макросостояние”. В микросостояниях содержатся все детали по поводу отдельных составляющих системы. Макросостояние же характеризуется только общей информацией, вроде “разделено на два слоя” или “в среднем однородное”. У ингредиентов теста есть много разных состояний, и все они при смешивании превратятся в тесто, однако очень мало состояний сможет при смешивании разделиться на яйца и муку. Поэтому, у теста энтропия выше. То же работает для примера с водой и маслом. Их легче разделить, тяжелее смешать, поэтому у разделённого варианта энтропия выше.
Читать дальше →

Учимся на ошибках: оптимизация приложений в App Store и Google Play

Reading time14 min
Views18K
Привет!

Меня зовут Алтай и я уже более трёх лет изучаю ASO (App Store Optimisation). По-русски, оптимизация приложений в магазинах приложений. Запомним эту аббревиатуру.

А теперь главное – ASO помогло мне сэкономить $500.000. Вот так!

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

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

Мы в компании занимаемся разработкой детских приложений. Пока мы выпустили только одно приложение в Google Play и App Store и это – Маленькие истории (сказки, где ребёнок становится главным героем). У приложения сейчас 600.000 установок, и почти все эти установки получены бесплатно!

Маленькие истории были зафичерены множество раз в App Store в различных подборках.
*фичеринг – это когда редактора добавляют ваше приложение в какую-нибудь подборку в магазине.

image
Также у нас есть три призовых места на различных конкурсах, причём два из них первые.

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

Миллион партиклов. Часть 1

Reading time6 min
Views22K
imageХочу рассказать как я создавал, и потом переводил собственную систему частиц на GPU. Как я наивно думал просто будет сделать (мол чо там, двигать частицы, тююю). На самом деле о нюансах, возникающих при реализации, можно говорить очень много и долго, поэтому далее я расскажу только об решении проблем «узких» мест.

История вопроса


Заказчик разрабатывает динамические музыкальные фонтанные комплексы, которые управляются через dmx контроллеры по сценарию. Редактор сценариев он сделал самостоятельно. Но на практике создавать сценарии оказалось неудобным, потому что для того, чтобы видеть как получается нужно иметь целиком построенный и запущенный фонтан. Кроме того, если вдруг дизайнеру хореографу захотелось добавить дополнительные сопла для фонтана — то этого сделать уже практически невозможно. Поэтому заказчик захотел обзавестись модулем для моделирования фонтанов, чтобы хореограф мог без настоящего фонтана разрабатывать сценарии. В целом у меня вышло что-то в таком духе: вот видео того что было смоделировано Hawaii50.wmv, а вот то, что вышло в реале после конструирования фонтана: H5OClip.wmv
Читать дальше →

Курс MIT «Безопасность компьютерных систем». Лекция 8: «Модель сетевой безопасности», часть 1

Reading time14 min
Views15K

Массачусетский Технологический институт. Курс лекций #6.858. «Безопасность компьютерных систем». Николай Зельдович, Джеймс Микенс. 2014 год


Computer Systems Security — это курс о разработке и внедрении защищенных компьютерных систем. Лекции охватывают модели угроз, атаки, которые ставят под угрозу безопасность, и методы обеспечения безопасности на основе последних научных работ. Темы включают в себя безопасность операционной системы (ОС), возможности, управление потоками информации, языковую безопасность, сетевые протоколы, аппаратную защиту и безопасность в веб-приложениях.

Лекция 1: «Вступление: модели угроз» Часть 1 / Часть 2 / Часть 3
Лекция 2: «Контроль хакерских атак» Часть 1 / Часть 2 / Часть 3
Лекция 3: «Переполнение буфера: эксплойты и защита» Часть 1 / Часть 2 / Часть 3
Лекция 4: «Разделение привилегий» Часть 1 / Часть 2 / Часть 3
Лекция 5: «Откуда берутся ошибки систем безопасности» Часть 1 / Часть 2
Лекция 6: «Возможности» Часть 1 / Часть 2 / Часть 3
Лекция 7: «Песочница Native Client» Часть 1 / Часть 2 / Часть 3
Лекция 8: «Модель сетевой безопасности» Часть 1 / Часть 2 / Часть 3

Курс MIT «Безопасность компьютерных систем». Лекция 8: «Модель сетевой безопасности», часть 2

Reading time14 min
Views7.2K

Массачусетский Технологический институт. Курс лекций #6.858. «Безопасность компьютерных систем». Николай Зельдович, Джеймс Микенс. 2014 год


Computer Systems Security — это курс о разработке и внедрении защищенных компьютерных систем. Лекции охватывают модели угроз, атаки, которые ставят под угрозу безопасность, и методы обеспечения безопасности на основе последних научных работ. Темы включают в себя безопасность операционной системы (ОС), возможности, управление потоками информации, языковую безопасность, сетевые протоколы, аппаратную защиту и безопасность в веб-приложениях.

Лекция 1: «Вступление: модели угроз» Часть 1 / Часть 2 / Часть 3
Лекция 2: «Контроль хакерских атак» Часть 1 / Часть 2 / Часть 3
Лекция 3: «Переполнение буфера: эксплойты и защита» Часть 1 / Часть 2 / Часть 3
Лекция 4: «Разделение привилегий» Часть 1 / Часть 2 / Часть 3
Лекция 5: «Откуда берутся ошибки систем безопасности» Часть 1 / Часть 2
Лекция 6: «Возможности» Часть 1 / Часть 2 / Часть 3
Лекция 7: «Песочница Native Client» Часть 1 / Часть 2 / Часть 3
Лекция 8: «Модель сетевой безопасности» Часть 1 / Часть 2 / Часть 3

Как сделать автоматическое обновление клиента онлайн-игры

Reading time5 min
Views13K
В этой статье я расскажу о том, как я сделал систему автообновления клиентской онлайн-игры. Ссылка на исходники (Delphi) в конце статьи. На самом деле такую фичу я реализовал в двух своих играх, и если первый блин вышел немного комом (в игре Spectromancer), то вторая реализация получилась весьма удобной и эффективной. Это моя первая статья на Хабре, так что сильно не бейте, а лучше укажите на недостатки в комментариях :)

Алгоритм обновления игры


  • Проверка версии на необходимость обновления.
  • Скачивание списка файлов актуальной версии.
  • Скачивание новых или изменённых файлов во временную папку.
  • Установка обновления — приведение файлов установленного клиента в соответствие со списком.
  • Запуск обновлённого клиента.
Читать дальше →

Руководство по ассемблеру x86 для начинающих

Reading time16 min
Views166K
В наше время редко возникает необходимость писать на чистом ассемблере, но я определённо рекомендую это всем, кто интересуется программированием. Вы увидите вещи под иным углом, а навыки пригодятся при отладке кода на других языках.

В этой статье мы напишем с нуля калькулятор обратной польской записи (RPN) на чистом ассемблере x86. Когда закончим, то сможем использовать его так:

$ ./calc "32+6*" # "(3+2)*6" в инфиксной нотации
30

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

Начнём с написания базовой программы Hello world! для проверки настроек среды. Затем перейдём к системным вызовам, стеку вызовов, стековым кадрам и соглашению о вызовах x86. Потом для практики напишем некоторые базовые функции на ассемблере x86 — и начнём писать калькулятор RPN.
Читать дальше →

Дисковое кеширование деревьев ленивых вычислений

Reading time8 min
Views4.4K

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


По разумению автора настоящего текста нормальный ленификатор должен:


  1. Сохранять вычисления между вызовами программы.
  2. Отслеживать изменения в дереве вычисления.
  3. Иметь в меру прозрачный синтаксис.

Ленивое Дерево

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

Знакомство с SOCI — C++ библиотекой доступа к базам данных

Reading time7 min
Views23K

Вступление


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


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


SOCI поддерживает ORM, через специализацию soci::type_conversion.


Поддержка баз данных (БД) (бэкенды):



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

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

Книга о «Параграфе» на Хабре. Новая глава — о программистах-кооператорах: «Бета»

Reading time13 min
Views7.4K

Пару недель назад я выложил первую главу из книги о «Параграфе», над которой работаю. Эксперимент в целом получился вдохновляющий. Пост вызвал целую дискуссию. Которая, признаюсь, иногда принимала несколько неожиданное для меня направление.


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


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


Новый фрагмент книги рассказывает о зарождении кооперативного движения, первых — умопомрачительных — сделках по продаже софта и основании «Микроконтура», из которого и вырастет потом «Параграф».


Главный герой этой главы — известный программист Антон Чижов.


image

Фото 1992-го года из журнала «Мир ПК»

Технически в книге — это четвертая глава, через одну после опубликованной две недели назад. В предшествующей речь идет о том, как Степан Пачиков при помощи Гарри Каспарова и вице-президента Академии Наук Евгения Велихова организовал в Москве детский компьютерный клуб. Благодаря этому клубу он обзавелся множеством новых знакомств в компьютерной тусовке.


Это любопытный сюжет, но его пока пропустим. Мне хочется сразу перейти к описанию событий, которые, как мне кажется, будут особенно интересны на «Хабре»: зарождению кооперативного движения и образованию первых компьютерных фирм.


Ну а тем, кто хочет прочитать все главы, готовые на сегодняшний день, а также получать по почте все последующие, советую просто подписаться на мою рассылку и получить всю рукопись одним файлом.

Поехали!


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

Книга о «Параграфе» на Хабре. Первая глава: Ученый-вахтер

Reading time13 min
Views17K
Пару недель назад я анонсировал книгу о «Параграфе», над которой работаю. Сегодня я решил в качестве эксперимента опубликовать тут первую главу.

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

Именно знания, связи и репутация, приобретенные на посту его директора, позволили Степану в Перестройку запустить собственный кооператив по продаже программного обеспечения. Так вся эта заваруха с «Параграфом» и началась.

imageКаспаров и Пачиков в детском клубе «Компьютер» — фото 1987 года (опубликовано на сайте Republic.ru)

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

image Фото клуба из статьи в журнале «Радио». 1987 г.

Поучительная история о том, как случайности и вера в лучшее могут радикально изменить жизнь и по сути предопределить судьбу. Ну и повод поностальгировать о компьютерах Z80 и флоппи-дисках для тех, кто застал те времена…
Читать дальше →

О правильной осанке, укреплении мышц и растяжке

Reading time5 min
Views58K
Этот пост можно рассматривать как комментарий к двум статьям о правильной осанке и здоровом позвоночнике: раз и два.

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

Работа с видео в Full Throttle Remastered

Reading time8 min
Views8K
The Full Throttle Remastered logo


Full Throttle — это point-and-click адвенчура, выпущенная компанией LucasArts ещё в двадцатом веке, 30 апреля 1995 года. В дополнение к стандартному визуальному стилю геймплея point-and-click тех времён (спрайты персонажей движутся на статичном фоне) в игре также присутствовало FMV-видео в неинтерактивных катсценах и в интерактивных режимах игрового процесса. Эта технология FMV ещё больше усилила сюжетный аспект жанра, потому что позволила создателям использовать отрендеренные компьютером последовательности кадров, не требующие большой нагрузки на процессор. К тому же сжатые FMV занимали меньше пространства и помещались на целевой носитель — CD-ROM объёмом примерно 650 мегабайт.

В классической версии Full Throttle использовалась видеотехнология, разработанная сотрудником LucasArts Винсом Ли под названием INSANE. INSANE расшифровывается как INteractive Streaming ANimation Engine («движок интерактивной потоковой анимации»). Впервые она была создана и использована в Star Wars: Rebel Assault. Технология усовершенствовалась и применялась также в более поздних играх:

  • Star Wars: Rebel Assault (ноябрь 1993 года)
  • Full Throttle (апрель 1995 года)
  • Star Wars: Rebel Assault II (ноябрь 1995 года)
  • The Dig (ноябрь 1995 года)
  • Outlaws (март 1997 года)
Читать дальше →

Как восстанавливали видео для Full Throttle Remastered. Часть 2

Reading time17 min
Views7.4K
image

В моём предыдущем посте я рассказал, как мы извлекали контент из исходных FMV-файлов и создали инструменты для анализа примерно 67 ГБ архивов в поисках промежуточных составляющих частей, использованных для создания FMV. Эти части являются базисом для создания remastered-контента FMV и использовались в качестве «сборочных чертежей» для начала проекта.

Как сказано в предыдущей статье, рабочий процесс ремастеринга разделён на три ветви: ремастеринг нарисованных вручную кадров, ремастеринг 3D-моделей и ремастеринг звука. Ниже я расскажу об особенностях рабочего процесса и трюках, которые мы использовали для автоматизации создания основной части видео.
Читать дальше →

Японские феи показывают работу master-slave триггера в новой манге по цифровой электронике

Reading time9 min
Views20K
Сейчас в издательстве ДМК-Пресс выходит русский перевод японской манги 2013 года про цифровые схемы, созданной Амано Хидэхару и Мэгуро Кодзи. Несмотря на несерьезную форму изложения, суть этой книжки очень здравая. Например, она начинает от древних микросхем малой степени интеграции и быстро привязывает их к современному языку описания аппаратуры Verilog и программируемым логическим интегральным схемам (ПЛИС). Также манга четко определяет зачем нужны комбинационные и последовательностные схемы, и дает представление о методах оптимизации.

Манга избегает ошибок многих своих предшественников. Одну из таких ошибок совершил Чарльз Петцольд в книге «Код», которая вводила последовательностную логику не на D-триггерах, управляемых фронтом тактового сигнала (edge-triggered D-flip-flop), а на D-триггерах с работой по уровню (защелках, level-sensitive D-latch), хотя потом переключалась на правильные триггеры. Вероятно, ошибка была связана с тем, что Чарльз Петзольд, который прославился как автор учебников по программированию GUI в Microsoft Windows, не был практикующим разработчиком электроники, и для него защелки были «проще», чем триггеры с фронтом. Проблема в том, что защелки плохо совместимы со статическим анализом задержек при логическом синтезе, главной технологии проектирования цифровых схем последних 30 лет. Системы на кристалле внутри гаджетов типа айфона в качестве элементов состояния в 99% случаях используют D-триггеры переключаемые по фронту, а защелки используют только в очень специальных случаях. Давать новичкам строить схемы на защелках — это значит вводить их в заблуждение.

В этом смысле манга лучше чем Петзольд. Вот как элегантно манга объясняет работу двухступенчатого master slave D-триггера, управляемого фронтом тактового сигнала. Это делается с помощью феи «Хи-хи-хи» и феи «Ха-ха-ха»:


Анализ исходного кода движка Doom: рендеринг

Reading time8 min
Views40K
image

От экрана дизайнера к экрану игрока


Карты разрабатывались дизайнером уровней в 2D с помощью редактора Doom Editor (DoomED). LINEDEFS описывали замкнутые секторы (SECTORS в исходном коде), а третье измерение (высота) указывалась посекторно. Первый уровень Doom E1M1 выглядит так:

image

После завершения работы над картой она нарезается методом двоичного разбиения пространства (Binary Space Partitioning, BSP). LINEDEF рекурсивно выбирались и их плоскости превращались в секущие плоскости. То есть LINEDEF разрезались на сегменты (SEGS) до тех пор, пока не оставались только выпуклые подсектора (SSECTOR в коде).

Интересный факт: И DoomED, и iBSP писались на… Objective-C на рабочих станциях NextStep. Пятнадцать лет спустя тот же язык почти в той же операционной системе выполняет игру на мобильном устройстве! [прим. пер.: в 2010 году Doom вышел на iPhone] Я немного поработал веб-археологом и мне удалось найти исходный код idbsp. На него стоит посмотреть.

Библия движений Doom. Часть 2

Reading time15 min
Views13K
Добро пожаловать в Библию движений Doom! Во второй части, как и в первой разобраны и рассортированы по категориям все причуды и капризы кода движений в Doom, включая замысловатые трюки с описанием их работы.


SlideMove: cкользкие моменты


До настоящего момента, все рассмотренные трюки с движением персонажа в игре опирались на дискретную природу перемещения в движке DOOM. Теперь же мы копнем код игры гораздо глубже, и доберемся до функции с невинным названием P_SlideMove. Функция содержит комментарий, предупреждающий неосторожного читателя кода, что перед ним «полнейшая неразбериха». Не знаю, добавил этот комментарий John Carmack или же Bernd Kreimeier, но он весьма и весьма точен.

Библия движений Doom. Часть 1

Reading time9 min
Views41K
Здравствуйте и добро пожаловать в Библию движений Doom! В статье разобраны и рассортированы по категориям все причуды и капризы кода движений в Doom, включая замысловатые трюки с описанием их работы.



Метрика


Начнем с основ. Код движка для движений игрока в Doom имеет следующий вид:
  • Сбор исходных данных игрока
  • Применение векторов движущей силы к игроку на основе исходных данных
  • Сжатие скорости игрока, если она слишком велика
  • Проверка, расчеты и перемещения
  • Использование ускорения через трение для следующего движения игрока

Рассмотрим все поподробней.
Благодаря только этому и паре переменных мы сможем определить возможные максимальные скорости персонажа игрока.

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

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

Сортировки выбором

Reading time7 min
Views164K


В чём идея сортировок выбором?

  1. В неотсортированном подмассиве ищется локальный максимум (минимум).
  2. Найденный максимум (минимум) меняется местами с последним (первым) элементом в подмассиве.
  3. Если в массиве остались неотсортированные подмассивы — смотри пункт 1.

Траффик

Learn OpenGL. Урок 5.7 — HDR

Reading time9 min
Views16K

При записи во фреймбуфер значения яркости цветов приводятся к интервалу от 0.0 до 1.0. Из-за этой, на первый вгляд безобидной, особенности нам всегда приходится выбирать такие значения для освещения и цветов, чтобы они вписывались в это ограничение. Такой подход работает и даёт достойные результаты, но что случится, если мы встретим особенно яркую область с большим количеством ярких источников света, и суммарная яркость превысит 1.0? В результате все значения, большие чем 1.0, будут приведены к 1.0, что выглядит не очень красиво:



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


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


Дисплей компьютера способен показывать цвета с яркостью в диапазоне от 0.0 до 1.0, но у нас нет такого ограничения при расчёте освещения. Разрешая цветам фрагмента быть ярче единицы, мы получаем намного более высокий диапазон яркости для работы — HDR (high dynamic range). С использованием hdr яркие вещи выглядят яркими, тёмные вещи могут быть реально тёмными, и при этом мы будем видеть детали.

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

Information

Rating
Does not participate
Location
Paris, Paris, Франция
Registered
Activity