Pull to refresh
1
0

Инженер, железячник-программист

Send message

Самые популярные структуры данных

Reading time9 min
Views22K
Что такое структура данных?
Проще говоря, структура данных — это контейнер, в котором хранятся данные в определенной компоновке (формате, или способе организации их в памяти). Эта «компоновка» позволяет структуре данных быть эффективной в одних операциях и неэффективной в других. Ваша цель — понять структуры данных, чтобы вы могли выбрать структуру данных, наиболее оптимальную для рассматриваемой проблемы.

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

Читать дальше →
Total votes 20: ↑16 and ↓4+12
Comments8

Управление интерфейсом приложения при помощи жестов (Keras + CoreML)

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

Что будет делать наше приложение?


Распознавать две позиции кисти руки — кулак и ладонь. И в зависимости от неё изменять элементы интерфейса приложения.



Что нам понадобится?


Для обучения нашей нейронной сети мы будем использовать библиотеку Keras, реализовывать интерфейс будем на языке программирования Swift, а для связки будем использовать представленный на WWDC’17 Apple фреймворк для работы с технологиями машинного обучения CoreML.
Читать дальше →
Total votes 11: ↑10 and ↓1+9
Comments8

5 новых инструментов для создания упоротого контента

Reading time1 min
Views23K
Квартиру убирает робот-пылесос, контент генерирует искусственный интеллект. Такой ли ты представлял реальность 20-х? Как бы там ни было, знай — набор помощников на случай творческого кризиса пополнился новинками.
Читать дальше →
Total votes 41: ↑37 and ↓4+33
Comments15

Оптимизация Unity: как вас обкрадывает иерархия сцен

Reading time5 min
Views8.9K
Итак, вы оптимизировали самые очевидные части своей игры. Однако на самом деле это не так. Вы упустили хитрый, не совсем заметный момент: оптимизацию иерархии сцены Unity.

А что не так с иерархией? Позвольте вам кое-что показать.

Запустите Unity и откройте проект своей игры. Затем запустите игру на целевом устройстве
и подключите к ней Unity Profiler. Запишите несколько кадров во время игрового процесса.

В Unity Profiler поищите следующие неприятные маркеры профайлера:


Не нашли? Продолжайте искать, уверен, найдётся хотя бы один.

Это могут быть UpdateRendererBoundingVolumes, Physics.SyncColliderTransform или TransformChangedDispatch.

Они появятся, когда вы уже будете готовы сдаться. Они возникнут, когда вы уже наведёте курсор мыши на кнопку закрытия Profiler.

Нашли? Если да, то вам повезло. Я тоже нашёл их в одном из своих предыдущих проектов и узнал, как полностью избавиться от них. Я понял, какое зло в них скрыто…

Хотите узнать секреты производительности иерархий сцен Unity?
Читать дальше →
Total votes 12: ↑11 and ↓1+10
Comments2

Физика в Unity-проекте на примере мобильного файтинга

Reading time8 min
Views14K

Физика стала неотъемлемой частью любой современной игры. Будь то простая симуляция ткани или полноценная физика движения транспорта. Не являются исключением и мобильные игры. Однако, настраивая физику для них, нужно оглядываться на ограничения, связанные с относительно низкой производительностью поддерживаемых устройств старого поколения. Ведущий технический 3D-художник Banzai.Games Роман Терский рассказал, как его команда интегрировала физику в игровой процесс мобильного файтинга Shadow Fight 3, какие приемы использовала для оптимизации и как переписала “с нуля” физику для персонажей для достижения ее полной детерминированности в синхронном PVP.
Читать дальше →
Total votes 29: ↑28 and ↓1+27
Comments10

52 датасета для тренировочных проектов

Reading time5 min
Views104K
  1. Mall Customers Dataset — данные посетителей магазина: id, пол, возраст, доход, рейтинг трат. (Вариант применения: Customer Segmentation Project with Machine Learning)
  2. Iris Dataset — датасет для новичков, содержащий размеры чашелистиков и лепестков для различных цветков.
  3. MNIST Dataset — датасет рукописных цифр. 60 000 тренировочных изображений и 10 000 тестовых изображений.
  4. The Boston Housing Dataset — популярный датасет для распознавания паттернов. Содержит информацию о домах в Бостоне: количество квартир, стоимость аренды, индекс преступлений.
  5. Fake News Detection Dataset — содержит 7796 записей с разметкой новостей: правда или ложь. (Вариант применения с исходником на Python: Fake News Detection Python Project )
  6. Wine quality dataset — содержит информацию о вине: 4898 записей с 14 параметрами.

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

Elixir как цель развития для python async

Reading time17 min
Views11K
В книге «Python. К вершинам мастерства» Лучано Рамальо описывает одну историю. В 2000 году Лучано проходил курсы, и однажды в аудиторию заглянул Гвидо ван Россум. Раз подвернулся такой случай, все стали задавать ему вопросы. На вопрос о том, какие функции Python заимствовал из других языков, Гвидо ответил: «Все, что есть хорошего в Python, украдено из других языков».

Это действительно так. Python давно живет в контексте других языков программирования и впитывает концепции из окружения: asyncio позаимствован, благодаря Lisp появились лямбда-выражения, а Tornado скопировали с libevent. Но если у кого и стоит заимствовать идеи, так это у Erlang. Он создан 30 лет назад, и все концепции в Python, которые сейчас реализуются или только намечаются, в Erlang давно работают: многоядерность, сообщения как основа коммуникации, вызовы методов и интроспекция внутри живой системы на продакшн. Эти идеи в том или в ином виде находят своё проявление в системах вроде Seastar.io.


Если не брать во внимание Data Science, в котором Python сейчас вне конкуренции, то все остальное уже реализовано в Erlang: работа с сетью, обработка HTTP и веб-сокетов, работа с базами данных. Поэтому Python-разработчикам важно понимать, куда будет двигаться язык: по дороге, которую уже прошли 30 лет назад.

Чтобы разобраться в истории развития других языков и понять, куда двигается прогресс, мы пригласили на Moscow Python Conf++ Максима Лапшина (erlyvideo) — автора проекта Erlyvideo.ru.

Под катом текстовая версия этого доклада, а именно: в каком направлении вынуждена развиваться система, которая продолжает мигрировать от простого линейного кода к libevent и дальше, что общего и в чем отличия между Elixir и Python. Отдельное внимание уделим тому, как на разных языках программирования и платформах управлять сокетами, потоками исполнения и данными.
Total votes 27: ↑25 and ↓2+23
Comments21

Несколько полезных советов как практиковаться в Python

Reading time9 min
Views40K

Привет, Хабр! Сегодня я предлагаю Вам перевод статьи Duomly, посвящённой изучению и практике программирования на языке Python.


Введение


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


Не смотря ни на что, имеется несколько вещей общих для всех, одна из них — Вам нужно практиковаться, очень много практиковаться!

Читать дальше →
Total votes 20: ↑17 and ↓3+14
Comments17

Является ли Java лучшим языком программирования для начинающих?

Reading time5 min
Views39K
Привет, Хабр! Представляю вашему вниманию перевод статьи «Is Java The Best Programming language to Learn First?» автора Javin Paul.

image

Часто получаю вопросы, вроде: «Какой язык программирования изучить первым?», «Java-тот самый язык программирования, на котором стоит начать писать?», «Насколько Java хорош в качестве первого языка программирования?», «Который из языков программирования самый подходящий для начинающих?» или «Начать с Java или Python?».

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

По моему мнению, самая веская причина начала программирования на Java или выбора его в качестве первого языка – Java освоить проще.
Читать дальше →
Total votes 36: ↑25 and ↓11+14
Comments58

Алгоритм размещения тайлов на основе ограничений

Reading time5 min
Views9.1K
image

В этом посте описывается алгоритм, используемый в Generate Worlds — инструменте, позволяющем пользователям создавать и исследовать процедурные миры построением небольших множеств воксельных тайлов. Я приведу краткое описание алгоритма, а в следующих постах расскажу о его преимуществах в скорости и гибкости по сравнению с другими методами. Чтобы подробнее узнать о том, что такое процедурная генерация на основе ограничений (constraint-based procedural generation) и о том, чем она интересна, рекомендую прочитать мой предыдущий пост.

Если вы хотите проверить свои силы в создании процедурных миров при помощи этой системы, то можете приобрести Generate Worlds. Если цена для вас слишком высока, то продолжайте чтение: этот пост даст вам информацию о том, как самостоятельно реализовать алгоритм Generate Worlds.
Читать дальше →
Total votes 27: ↑27 and ↓0+27
Comments2

Shader — это не магия. Написание шейдеров в Unity. Вертексные шейдеры

Reading time8 min
Views14K
Всем привет! Меня зовут Дядиченко Григорий, и я основатель и CTO студии Foxsys. Сегодня мы поговорим про вершинные шейдеры. В статье будет разбираться практика с точки зрения Unity, очень простые примеры, а также приведено множество ссылок для изучения информации про шейдеры в Unity. Если вы разбираетесь в написании шейдеров, то вы не найдёте для себя ничего нового. Всем же кто хочет начать писать шейдеры в Unity, добро пожаловать под кат.


Total votes 18: ↑17 and ↓1+16
Comments2

Python за месяц

Reading time6 min
Views111K
Руководство для абсолютных чайновичков.
(Прим. пер.: это советы от автора-индуса, но вроде дельные. Дополняйте в комментах.)

image


Месяц — это много времени. Если тратить на обучение по 6-7 часов каждый день, то можно сделать дофига.

Цель на месяц:

  • Ознакомиться с основными понятиями (переменная, условие, список, цикл, функция)
  • Освоить на практике более 30 проблем программирования
  • Собрать два проекта, чтобы применить на практике новые знания
  • Ознакомиться хотя бы с двумя фреймворками
  • Начать работу с IDE (средой разработки), Github, хостингом, сервисами и т. д.

Так вы станете младшим разработчиком (джуном) Python.

Теперь план по неделям.
Читать дальше →
Total votes 36: ↑26 and ↓10+16
Comments29

Реалистичная анимация персонажей в играх с помощью ИИ

Reading time5 min
Views20K


Разработчиками из Эдинбургского Университета представлен новый алгоритм для создания реалистичных движений персонажей в играх. Обученная на Motion Capture траекториях нейросеть пытается копировать движения реальных людей, но при этом адаптирует их под персонажей видеоигр.

Одна нейросеть способна управлять сразу несколькими действиями в игре. Открывание дверей, перенос предметов, использование мебели. При этом она динамично изменяет положения ног и рук, чтобы персонаж мог реалистично держать ящики разного размера, садиться на разные по размеру стулья, а также пролезать в проходы разной высоты.
Total votes 31: ↑30 and ↓1+29
Comments4

Парсим словарь русского языка Зализняка Андрея Анатольевича

Reading time2 min
Views7.5K
Понадобилось мне как-то собрать много русских существительных имён в единственном числе и именительном падеже. Стал искать на просторах Интернета. Всё, что попадалось под руку, было либо в не очень удобном формате для меня, либо любительскими сборниками. Хотелось всё-таки более официальных исходных данных, да чтобы можно было перевести в свой формат, например в таблицу базы данных MySQL.
Читать дальше →
Total votes 19: ↑11 and ↓8+3
Comments24

Стартапу в помощь: инкубаторы и акселераторы России

Reading time8 min
Views62K
Привет, Хабр!
Аккурат к инициативе поддержки стартапов, озвученной deniskin, мы в ФРИИ продолжаем знакомить сообщество с темой бизнес-инкубаторов и акселераторов. В прошлой статье мы детально разобрали, в чём различие между бизнес-инкубаторами и акселераторами. Сегодня — расскажем о том, куда же, собственно, идти.
Читать дальше →
Total votes 43: ↑40 and ↓3+37
Comments24

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

Reading time3 min
Views7.9K
Распознавания лиц уже захватило весь мир. Во всех крупных странах уже пользуются этой полезной фишкой. Почему не сделать жизнь людей еще удобнее и не встроить распознавание лиц в камеру хранения?

image
Total votes 9: ↑7 and ↓2+5
Comments5

Создание изометрических 2D-уровней с помощью системы Tilemap

Reading time12 min
Views44K
image

В Unity 2018.3 появилась поддержка изометрических тайловых карт, очень напоминающая поддержку тайловых карт шестиугольников, которая была добавлена в версии 2018.2. Новые функции Tilemap позволяют быстро и эффективно создавать 2D-окружения на основе изометрических и шестиугольных сеток, которые использовались во многих классических играх, в том числе в первых частях Diablo и Fallout, Civilization, Age of Empires, и многих других.

Обе системы построены на основе уже существовавшей системы Tilemap, появившейся в Unity 2017.2, и сегодня работать с ними так же просто! Кроме того, они имеют нативную интеграцию с Editor. В дальнейших версиях Unity они могут быть перенесены в package manager.

Если вам интересно поэкспериментировать с этими системами, мы создали заранее подготовленный проект Isometric Starter Kit с анимированным персонажем и несколькими тайлсетами окружений. Скачать его можно здесь.
Total votes 22: ↑21 and ↓1+20
Comments3

Алгоритмы обнаружения контуров изображения

Reading time20 min
Views24K
В статье представлены четыре самых распространённых алгоритма обнаружения контуров.

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

Данные алгоритмы будут игнорировать все «дырки» в паттерне. Например, если у нас есть паттерн, подобный показанному на Рисунке 1, то обнаруженный алгоритмами контур будет похож на показанный на Рисунке 2 (синими пикселями обозначен контур). В некоторых областях применения это вполне допустимо, но в других областях, например, в распознавании символов, требуется обнаружение внутренних частей паттерна для нахождения всех пробелов, отличающих конкретный символ. (На Рисунке 3 показан «полный» контур паттерна.)

image


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

image
Читать дальше →
Total votes 21: ↑21 and ↓0+21
Comments3

Must-have алгоритмы машинного обучения

Reading time5 min
Views30K
Хабр, привет.

Меня зовут Рушан, и я автор Telegram‑канала Нейрон. Не забудьте поделиться с коллегами или просто с теми, кому интересны такие статьи. Этот пост — краткий обзор общих алгоритмов машинного обучения. К каждому прилагается краткое описание, гайды и полезные ссылки.

Метод главных компонент (PCA)/SVD


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

image

SVD — это способ вычисления упорядоченных компонентов.

Полезные ссылки:


Вводный гайд:

Читать дальше →
Total votes 38: ↑31 and ↓7+24
Comments6

Information

Rating
Does not participate
Location
Cambridge, England - East, Великобритания
Registered
Activity