Pull to refresh
16
0

Энтузиаст

Send message

Эффективное использование Github

Reading time13 min
Views123K

Github — важная часть жизни современного разработчика: он стал стандартом для размещения opensource-проектов. В «2ГИС» мы используем гитхаб для разработки проектов web-отдела и хостинга проектов с открытым кодом.

Хотя большинство из нас пользуются сервисом практически каждый день, не все знают, что у него есть много фишек, помогающих облегчить работу или рутинные операции. Например, получение публичного ключа из URL; отслеживание того, с каких сайтов пользователи приходят в репозиторий; правильный шаринг ссылок на файлы, которые живут в репозиториях гитхаба; горячие клавиши и тому подобное. Цель этой статьи — рассказать о неочевидных вещах и вообще о том, что сделает вашу работу с гитхабом продуктивнее и веселее (я не буду рассматривать здесь работу с API гитхаба, так как эта тема заслуживает отдельной статьи).


Содержание



Читать дальше →
Total votes 149: ↑148 and ↓1+147
Comments38

Знакомьтесь: Jack и Jill на платформе x86

Reading time3 min
Views13K
Jack (Java Android Compiler Kit) – это компилятор, преобразующий исходный код на Java в DEX-файлы Android. Jack – это набор инструментов, среди его возможностей – переупаковка, сжатие, обфускация и поддержка множественных DEX-файлов.

В Jack используются промежуточные библиотеки в формате .jack. Преобразованием существующих .aar/.jar файлов в этот формат занимается Jill (Jack Intermediate Library Linker).



Если для сборки используется Jack, то сначала Jill конвертирует внешние библиотеки, используемые в проекте, в .jack-файлы. Это подготавливает библиотеки к быстрому слиянию с другими .jack-файлами на следующем этапе, когда Jack и плагин Android Gradle, используя подготовленные ранее.jack-файлы и исходный Java-код, компилируют DEX-файл (или файлы). В ходе этого процесса Jack может выполнить минификацию кода (сжатие, обфускацию, или и то и другое вместе). На выходе получается APK-файл Android-приложения.
Читать дальше →
Total votes 18: ↑17 and ↓1+16
Comments5

Viber для Windows и история сообщений

Reading time2 min
Views314K
Работаю я обычным эникейщиком, и произошла как-то у меня тоже вполне обычная история — переезд человека на новый другой компьютер. Не буду особо вдаваться в подробности, просто скажу, что возникла необходимость переноса истории Viber, которая была этому человеку жизненно необходима.

Читать дальше →
Total votes 24: ↑17 and ↓7+10
Comments58

Как оформлять коммиты, чтобы потом не было больно

Reading time3 min
Views104K
Несколько дней назад David Demaree, главный по Typekit в Adobe, издал крутую книжку "git для людей". Чтобы привлечь к ней внимание, он опубликовал выжимку самой, на мой взгляд, интересной главы — как оформлять коммиты чтобы и волки были целы, и овцы сыты, и песец не пришел. А я за эти выходные подготовил выжимку из выжимки — сокращенный и адаптированный перевод, чтобы можно было быстро прочитать и добавить в копилку своего опыта самое ценное.
Читать дальше →
Total votes 48: ↑44 and ↓4+40
Comments32

Подборка: Более 70 источников по машинному обучению для начинающих

Reading time5 min
Views103K


Индикатор кулачкового аналогового компьютера / Wiki

В нашем блоге мы уже рассказывали о разработке системы квантовой связи и о том, как из простых студентов готовят продвинутых программистов. Сегодня мы решили вернуться к теме машинного обучения и привести адаптированную (источник) подборку полезных материалов.
Читать дальше →
Total votes 35: ↑31 and ↓4+27
Comments16

Исследование распространенной малвари под Android

Reading time16 min
Views37K

Часто вирусы для android приходят к нам при помощи рассылок. Раньше это были СМС, а теперь еще и современные мессенджеры. Мне было интересно посмотреть, что же сейчас на рынке вредоноса, поэтому зарегистрировалась и подала пару объявлений на avito.
Читать дальше →
Total votes 29: ↑28 and ↓1+27
Comments59

Формат BPG может заменить анимированный GIF и не только его

Reading time2 min
Views29K
BPG (Better Portable Graphics) — новый графический формат, цель которого заменить JPEG там, где качество или размер файла имеют значение. Именно так описывает BPG создатель этого формата — гениальный программист Фабрис Беллар, автор таких программ как LZEXE, FFmpeg, QEMU и др.

Основные преимущества BPG
  • Высокая степень сжатия. Файлы гораздо меньше, чем JPEG при таком же качестве.
  • Поддержка большинством веб-браузеров через маленький Javascript-декодер (56 КБ в gzip).
  • Основан на подмножестве открытого стандарта видеосжатия HEVC.
  • Поддержка тех же форматов цветности, что и в JPEG (grayscale, YCbCr 4:2:0, 4:2:2, 4:4:4) для снижения потерь во время конвертации. Альфа-канал поддерживается. Цветовые пространства RGB, YCgCo и CMYK тоже поддерживаются.
  • Нативная поддержка от 8 до 14 бит на канал для расширения динамического диапазона.
  • Возможно сжатие без потерь.
  • Различные метаданные (такие как EXIF, профили ICC, XMP) можно внедрить в файл.
  • Поддержка анимации.

Именно последний пункт даёт возможность предположить, что BPG заменит в интернете анимированный GIF. В самом деле, он лучше по всем параметрам.
Читать дальше →
Total votes 35: ↑27 and ↓8+19
Comments24

Советы о том, как писать на С в 2016 году

Reading time20 min
Views90K

Если бы язык С был оружием

От автора: Наброски для этой статьи появились еще в начале 2015 года, правда, до публикации материалов дело так и не дошло. Наконец, решив, что в ящике моего письменного стола от вышеупомянутого «черновика» не будет никакой пользы, представляю его вашему вниманию в исходном виде. Единственное, что изменилось в тексте – год, с 2015 на 2016.

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

Итак, статья ...


Первое правило программирования на С – не используйте его, если можно обойтись другими инструментами.

Когда найти альтернативный метод не удается, самое время вспомнить о современных заповедях программиста.
Читать дальше →
Total votes 92: ↑84 and ↓8+76
Comments80

Процедурная генерация случайных игровых подземелий

Reading time6 min
Views64K
image

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

Оригинальное описание алгоритма


1. Сначала я задаю нужное количество комнат – к примеру, 150. Естественно, цифра произвольная, и чем она больше, тем сложнее будет подземелье.

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

Вместо равномерно распределённых случайных чисел (какие выдаёт генератор Math.random в большинстве языков), я использую нормальное распределение Парка-Миллера. В результате вероятность появления маленьких комнат превышает вероятность появления больших. Зачем это надо, объясню позже.

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

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

4. Заполняем промежутки клетками размером 1х1. В результате у нас получается квадратная решётка из комнат различного размера.

5. И тут начинается основное веселье. Определяем, какие из клеток решётки являются комнатами – это будут любые клетки с шириной и высотой, превышающими заданные. Из-за распределения Парка-Миллера мы получим сравнительно небольшое количество комнат, между которыми есть довольно много свободного пространства. Но оставшиеся клетки нам также пригодятся.

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

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

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

9. Чтобы превратить его в коридоры, для каждого ребра строится серия прямых линий (в форме Г), идущих по рёбрам графа, соединяющим комнаты. Тут нам пригождаются те клетки, которые остались неиспользованными (те, что не превратились в комнаты). Все клетки, накладывающиеся на Г-образные линии, становятся коридорами. А из-за разнообразия размеров клеток стены коридоров будут неровными, что как раз хорошо для подземелья.

И вот пример результата!

Осторожно — под катом много монстров анимированных гифок!
Читать дальше →
Total votes 53: ↑49 and ↓4+45
Comments16

Минута теории: Разбираемся с RESTful-приложениями

Reading time2 min
Views27K
Мы достаточно регулярно рассказываем как о собственных разработках, так и экспертном опыте, связанном с веб-технологиями. Недавно мы рассматривали кейс с масштабированием веб-приложения на Ruby и говорили о том, как можно ускорить загрузку веб-страниц.

Сегодня мы решили разобраться с терминологией и рассмотреть термин, который всем хорошо знаком. Речь идет о RESTful-приложениях. В этом нам помог материал Лорен Лонг (Lauren Long), которая работает в компании Recurse Center.


Читать дальше →
Total votes 31: ↑20 and ↓11+9
Comments7

Система плагинов и модулей в Unreal Engine 4

Reading time5 min
Views42K


Здравствуйте, меня зовут Дмитрий. Я занимаюсь созданием компьютерных игр на Unreal Engine в качестве хобби. Сегодня я расскажу, как создать свой модуль, а потом, как создать плагин в Unreal Engine 4.
Читать дальше →
Total votes 23: ↑21 and ↓2+19
Comments0

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

Reading time9 min
Views50K
Процедурно-генерируемый контент «правильных» игр — Diablo, Rogue, Spelunky, Daggerfall, Elite, Spore и даже аналогов Football Manager — не перестает удивлять. Он позволяет иначе взглянуть на дизайн и подчеркивает элегантность основных показателей системы. С его помощью вы экономите время и можете зарабатывать. Именно благодаря ему Skyrim и Minecraft привлекают огромное количество игроков, которые не изменяют своему выбору даже через несколько лет после выхода этих продуктов. Процедурная генерация – надежное основание, на котором построена концепция столь ожидаемой "No Man’s Sky" от Hello Games.

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

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

1.Crusader Kings II: Сложные родственные связи становятся динамичными благодаря генерируемым персонажам


image
Читать дальше →
Total votes 48: ↑27 and ↓21+6
Comments15

Information

Rating
Does not participate
Location
Белград, Белград, Сербия
Date of birth
Registered
Activity