Как стать автором
Обновить
1
0

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

Отправить сообщение

10 типов структур данных, которые нужно знать + видео и упражнения

Время на прочтение9 мин
Количество просмотров276K
Екатерина Малахова, редактор-фрилансер, специально для блога Нетологии адаптировала статью Beau Carnes об основных типах структур данных.

«Плохие программисты думают о коде. Хорошие программисты думают о структурах данных и их взаимосвязях», — Линус Торвальдс, создатель Linux.

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

В этой статье я покажу вам 10 самых распространенных структур данных.
Всего голосов 37: ↑29 и ↓8+21
Комментарии31

ООП с примерами (часть 1)

Время на прочтение4 мин
Количество просмотров605K
Волею судьбы мне приходится читать спецкурс по паттернам проектирования в вузе. Спецкурс обязательный, поэтому, студенты попадают ко мне самые разные. Конечно, есть среди них и практикующие программисты. Но, к сожалению, большинство испытывают затруднения даже с пониманием основных терминов ООП.

Для этого я постарался на более-менее живых примерах объяснить базовые понятия ООП (класс, объект, интерфейс, абстракция, инкапсуляция, наследование и полиморфизм).

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

Читать дальше →
Всего голосов 85: ↑64 и ↓21+43
Комментарии67

Сетевой код для бедных

Время на прочтение11 мин
Количество просмотров37K

Чем больше узнаёшь в своей области знания, тем чётче понимаешь, что никто не может знать всего.

По какой-то причине (за что, господи, за что?) моей областью стала разработка игр. Каждый, кто работает в этой сфере, скажет вам: никогда не добавляй сетевой многопользовательский режим в уже готовую игру, никогда, пьяный ты клоун.

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

Проблема №1: ресурсы


Первый вопрос, который у меня возник: как сказать клиенту, что для рендеринга объекта нужно использовать такой-то меш?

Сериализировать весь меш? Не стоит, у клиента он уже есть на диске.

Передавать имя файла? Не-а, малоэффективно и небезопасно.

Ну ладно, может быть, просто строковый идентификатор?

К счастью, прежде чем у меня появилось время на реализацию собственных бредовых идей, я посмотрел доклад Майка Эктона, в котором он говорил об опасностях «ленивого принятия решений». Смысл в следующем: строки позволяют разработчикам лениво игнорировать принятие решений до момента создания работающего приложения, когда исправлять ошибки уже поздно.
Всего голосов 49: ↑47 и ↓2+45
Комментарии20

Восстание одной маленькой своенравной нейросети, или как сделать codewar-игру за 3 дня

Время на прочтение15 мин
Количество просмотров7K
На день рождения FirstVDS мы уже третий раз запускаем квест. Раньше он был только для админов, в этом году решили добавить задание для программистов.

По сюжету игрок провалил обучение нейросети Нексы и накликал восстание машин. В итоговом задании админы, программисты и простые люди «с лапками» сражались с Нексой каждый по-своему. Если в задании для админов были наработки, то над прогерским мы задумались.

Хотелось что-то нетривиальное и с визуальным интерфейсом — чтобы игрок сразу видел результат, так же интереснее. Вспомнили конкурсы mail.ru в стиле codewar и решили сделать что-то подобное.

В чём суть: участнику нужно написать эффективный код, который будет «соперничать» с кодом условного противника.
Читать дальше →
Всего голосов 9: ↑9 и ↓0+9
Комментарии2

Образовательные стриминговые каналы программистов

Время на прочтение5 мин
Количество просмотров49K


Источник Twitch


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


Идея устраивать трансляции с новорожденным кодом появилась гораздо раньше – стримеры занимались этим на Twitch, YouTube и standalone-площадках. В подборке представлены активные (за редким исключением) стримеры-кодеры, а также методы поиска интересных лично для вас трансляций.

Всего голосов 45: ↑45 и ↓0+45
Комментарии17

Температура и давление фантастики, 2/3

Время на прочтение18 мин
Количество просмотров35K

Часть 2. Прогулка


Первая часть

Во-первых, огромное спасибо за такое количество хороших и осмысленных комментариев. Лишь недостаток времени не позволяет детально на них все ответить. Но я ценю и дополнения, и ссылки на нечитанную фантастику (сколько же её!), и поправки. Спасибо!

В этом разделе не будет большой глубины. А будет небольшая экскурсия по окраинам pT-диаграммы, редко посещаемым даже популяризаторами науки. Зачем? Чтобы показать, что богатство миров и явлений, скорее всего, отнюдь не убывает при удалении от привычного нам «центра мира условий». И что, наверное, в тех местах может происходить что-то интересное и сюжетообразующее… при условии, что хоть один профессиональный писатель сможет качественно это помыслить. Но это — отдельная тема для обсуждения в третьей части. Здесь же у нас будут просто далёкие миры. Не в парсеках далёкие, но оттого не менее труднодостижимые.

Юпитер


Вот так он выглядит снаружи:


Читать дальше →
Всего голосов 92: ↑92 и ↓0+92
Комментарии135

OK Google, заведи мне машину

Время на прочтение5 мин
Количество просмотров27K


Будущее всё ближе. Лет 10 назад я и не мог подумать, что буду заводить машину с помощью голосовой команды!

Последние годы я с интересом наблюдал за бурным развитием голосовых ассистентов. После выхода Google Home Mini, решил что и мне уже пора попробовать, так как цена стала более-менее адекватной для «игрушки». Первый проект — интеграция голосового помощника с GSM модулем StarLine для автозапуска, контроля координат, напряжения аккумулятора и других параметров, отдаваемых сигнализацией автомобиля. Итак, поехали?
Читать дальше →
Всего голосов 28: ↑27 и ↓1+26
Комментарии22

Некоторые особенности программирования временных событий в играх

Время на прочтение9 мин
Количество просмотров15K

Дóжили. Недавно была обнаружена проблема синхронизации игрового процесса с реальным временем не где-нибудь, а в игре "Quake Champions". Название игры "Quake" раньше было синонимом чего-то крутого, высокотехнологичного и идеального. И в голову не могло придти, что через какую-то пару десятков лет и камня на камне не останется от былого превосходства, а в новой игре с именем "Quake" появятся грубые ошибки, приводящие к тому, что один из игроков может получить преимущество только потому, что у него лучше "железо". Дело в том, что скорость стрельбы в новом шутере зависит от fps, то есть, количество пуль, выпущенных игроками с разным значением fps за один и тот же промежуток времени будет разным, а значит один из них может получить преимущество.


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

Читать дальше →
Всего голосов 21: ↑21 и ↓0+21
Комментарии17

Поиск пути в играх Tower Defense

Время на прочтение6 мин
Количество просмотров18K
[Прим. пер.: в оригинале статьи есть интерактивные демо, которые я продублировал с помощью видео. Для большей наглядности рекомендую изучить примеры в оригинале.]

В играх жанра Tower Defense (TD) множество врагов стремится добраться в одну точку. Во многих играх TD существует заранее заданный путь или несколько путей. В некоторых, в том числе в классической Desktop Tower Defense можно размещать башни в произвольных местах, и они становятся препятствиями, влияющими на пути врагов. Запустите демо и нажимайте на карту, чтобы возводить или убирать стены:


Всего голосов 23: ↑22 и ↓1+21
Комментарии4

FSE кодирование

Время на прочтение9 мин
Количество просмотров14K
Finite State Entropy (FSE) – алгоритм энтропийного кодирования, чем-то похожий и на алгоритм Хаффмана, и на арифметическое кодирование. При этом он взял лучшее от них обоих: работает так же быстро, как хаффмановский, и со степенью сжатия как у арифметического кодирования.

FSE принадлежит семейству кодеков ANS (Asymmetric Numeral Systems),  изобретённых Яреком Ду́дой. На основе его исследований Ян Колле разработал оптимизированный вариант алгоритма, впоследствии названный FSE.

В заметках Яна Колле непросто разобраться, поэтому я изложу объяснение в несколько ином порядке, более удобном для понимания, на мой взгляд.


Читать дальше →
Всего голосов 47: ↑44 и ↓3+41
Комментарии6

Восемь советов начинающему юзабилисту

Время на прочтение6 мин
Количество просмотров13K

College by DamaiMikaz

Привет, Хабр! Меня зовут Ольга Шуберт, я занимаюсь UX-проектированием игровых проектов Mail.ru Group. В последнее время все чаще замечаю живой интерес к юзабилити игр со стороны и крупных разработчиков, и начинающих стартапов. Где найти специалистов? Как и где обучиться азам? Может ли вчерашний геймдизайнер стать UX-проектировщиком? Собрав в кучу самые распространенные вопросы начинающих юзабилистов, я сформировала короткий список советов, которые помогут преодолеть непростой карьерный путь.
Читать дальше →
Всего голосов 44: ↑40 и ↓4+36
Комментарии8

Выбор правильной стратегии обработки ошибок (части 3 и 4)

Время на прочтение15 мин
Количество просмотров11K

image


Части 1 и 2: ссылка


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


Для проверки условия библиотека С предоставляет макрос assert(), но только если не определён NDEBUG. Однако, как и в случае со многими другими вещами в С, это простое, но иногда неэффективное решение. Главная проблема, с которой я столкнулся, — глобальность решения: у вас есть утверждения либо везде, либо нигде. Плохо это потому, что вы не сможете отключить утверждения в библиотеке, оставив их только в собственном коде. Поэтому многие авторы библиотек самостоятельно пишут макросы утверждений, раз за разом.

Читать дальше →
Всего голосов 30: ↑28 и ↓2+26
Комментарии3

Тестирование GUI приложений с помощью оптического распознавания текстов

Время на прочтение4 мин
Количество просмотров14K
Функциональное тестирование интерфейса (GUI) приложений — задача очень важная, нужная, но не всегда тривиальная. Основной вопрос тут: как сэмулировать работу пользователя? Простого, рядового пользователя, которому придется непосредственно изо дня в день работать с вашим софтом.

Казалось бы, причем здесь распознавание текстов?
Читать дальше →
Всего голосов 13: ↑12 и ↓1+11
Комментарии13

Рюкзак для гика: несколько вариантов от Madrobots

Время на прочтение8 мин
Количество просмотров67K


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

Носить с собой все в сумке — не лучший вариант, поэтому большинство гиков склоняются к рюкзакам. И вот здесь начинаются муки выбора. Помимо того, что рюкзак для техники должен быть защищен от погодных условий, защищать устройства от ударов, он еще должен быть удобен для долгосрочного передвижения по городу или вне населенного пункта. Плюс есть еще много критериев, каждый из которых сугубо индивидуален. Сегодня рассказываем о рюкзаках, которые оптимизированы для удобного ношения гаджетов и отвечают дополнительным требования гиков.
Всего голосов 33: ↑28 и ↓5+23
Комментарии85

Приятная сборка frontend проекта

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

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

UPD (13 марта 2015): Заменил несколько плагинов на более актуальные + решил проблему с импортом CSS файлов внутрь SCSS

Читать дальше →
Всего голосов 61: ↑53 и ↓8+45
Комментарии119

Неприлично простая реализация неприлично простого алгоритма генерации лабиринта

Время на прочтение6 мин
Количество просмотров40K
Продолжение этой статьи об очень простом алгоритме генерации прямоугольных лабиринтов. В этой статье я приведу мою реализацию алгоритма на С++, а также покажу несколько дополнительных функций, которые породил мой скучающий мозг. Если осмелитесь продолжить читать, убедитесь, что ознакомились с моей предыдущей статьей. Глянули? Молодцы, продолжаем.
Читать дальше →
Всего голосов 51: ↑39 и ↓12+27
Комментарии54

Хиты Geek сезона-2016

Время на прочтение7 мин
Количество просмотров20K
Новый год — время подведения итогов. Для любого бизнеса — это горячая пора, которая буквально обескровливает команду. А тут ещё распродажи 11.11, потом чёрная пятница и сразу новогодние скидки… Ни дня на передышку. Весь год мы не только рассылали посылки во все концы, выбирали товары, отдавали их на обзоры, но и писали посты на Geektimes, чтобы рассказать о самом интересном, необычном и выгодном.


Читать дальше →
Всего голосов 28: ↑21 и ↓7+14
Комментарии11

ТОП-10 новогодних подарков по данным продаж Madrobots

Время на прочтение5 мин
Количество просмотров28K


Мы в Madrobots, как и все другие интернет-магазины, стараемся анализировать свою работу в течение года. Среди прочих моментов, которые мы анализируем — объем продаж различных товаров. Продажи тщательно отслеживаются, а результаты анализа текущей ситуации мы используем для создания плана работ/продаж на грядущий период (год, месяц, неделя).

На днях решили в очередной раз посмотреть, какие товары у нас продаются лучше всего, и составили своеобразный топ-10. В общем, решили поделиться этой информацией с читателями Geektimes. Возможно, кто-то тоже занимается продажами, и эта информация будет интересной. Ну, а гикам можно будет понять, что сейчас в России в тренде. В следующий раз, кстати, проведем оценку самых продаваемых товаров с Amazon, точнее, товаров с площадки Amazon Launchpad.
Всего голосов 29: ↑24 и ↓5+19
Комментарии56

Подборка русских и зарубежных фантастических книг за год

Время на прочтение5 мин
Количество просмотров81K


Почти два года назад мы делали подборку любопытных фантастических книг, вышедших в 2014 году. И в начале этого года мы решили поддержать это начинание — предлагаем вам одни из самых интересных, по мнению читателей, фантастических произведений, вышедших в 2016-м (как на русском, так и на английском).
Читать дальше →
Всего голосов 28: ↑24 и ↓4+20
Комментарии122

Самые востребованные языки программирования 2016

Время на прочтение1 мин
Количество просмотров113K
Под конец этого непростого года наша служба исследований собрала двадцатку самых востребованных языков программирования на hh.ru. По каждому языку отдельно посчитали динамику за год. А по первой пятерке заодно посмотрели изменения за 5 лет.

Что произошло: PHP в этом году стал самым востребованным у работодателей, отняв пальму первенства у Java. За год выросли оба, но PHP вырос сильнее. Go и Swift «выстрелили» на 161% и 100% соответственно, хотя до лидеров по количеству вакансий им еще далеко. А вот Python заметно сдал позиции, сразу на 32%.

Если сравнить с индексом TIOBE, то сразу заметно, что PHP у нас заметно выше, а Visual Basic, например, заметно ниже. Go рванул и там и тут, а вот Objective-C у TIOBE в лидерах роста, а у нас он упал на 9%. С у них, кстати, упал сильнее всех, а у нас, наоборот, вырос на 46%.


А где же 1С, спросите вы? В табличку не включили, но если интересно, то все неплохо: 2015 — 9 473, 2016 — 13 735. Прирост: 45%. В абсолютных цифрах — самый востребованный язык.
Посмотреть динамику первой пятерки за 5 лет
Всего голосов 67: ↑57 и ↓10+47
Комментарии152
1

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность