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

Разработка

Сначала показывать
Порог рейтинга

Как создать игру Tetris с помощью Three.js

Блог компании RUVDS.com JavaScript *Работа с 3D-графикой *Разработка игр *
Перевод
Tutorial

Вспомните, как мы играем в «Тетрис». При движении блока мы свободно перемещаем и вращаем его. Кубы, из которых состоят блоки, соединены, поэтому должно быть соединено и их описание в коде. С другой стороны, когда мы завершаем горизонтальный срез (в 2D это строка), кубы удаляются и блок, к которым они принадлежали, на этом этапе уже не важны. На самом деле, они и не должны быть важны, ведь некоторые кубы из блока могут удалиться, а другие остаться на поле.

Для отслеживания начальной точки куба пришлось бы постоянно разделять и объединять геометрию, и поверьте мне, это был бы сущий хаос. В оригинальном двухмерном «Тетрисе» показателем исходного блока был цвет квадрата. Однако в 3D нам нужен удобный способ демонстрации оси Z, и лучше всего для этого подходит цвет.

В нашей игре кубы будут соединены, когда они динамичны и разделены, когда они статичны.
Читать дальше →
Всего голосов 1: ↑1 и ↓0 +1
Просмотры 318
Комментарии 0

Новости

Моя история подготовки к интервью в FAANG

Алгоритмы *Интервью
Из песочницы

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

Читать далее
Всего голосов 9: ↑8 и ↓1 +7
Просмотры 3.2K
Комментарии 9

Атака на String.hashCode: прообразы и коллизии

Ненормальное программирование *Программирование *Java *
Recovery mode


Как-то раз мне понадобилось несколько наборов строк с коллизией по хеш-коду. То есть таких, чтобы значение String::hashCode() совпадало для всех строк в наборе.

Блуждание по интернету не дало результатов, примеров было мало и все они довольно однообразны. Поиск по словарям подарил забавную пару "javascript's".hashCode() == "monocle".hashCode(), но практической пользы не принёс. Полный перебор не рассматривался в виду скорой тепловой смерти вселенной.

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

Читать дальше →
Всего голосов 34: ↑34 и ↓0 +34
Просмотры 2.4K
Комментарии 3

Язык Dot для Автогенерации Блок Схем Сложных Электронных Цепей

Программирование микроконтроллеров *Схемотехника *DIY или Сделай сам Подготовка технической документации *
Tutorial

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

Читать далее
Всего голосов 19: ↑15 и ↓4 +11
Просмотры 2.2K
Комментарии 16

Ошибка в stacktrace из продакшена

Java *Разработка под Android *Kotlin *
Перевод

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

Читать далее
Всего голосов 15: ↑15 и ↓0 +15
Просмотры 1.9K
Комментарии 1

Грокаем монады

Функциональное программирование *F# *
Из песочницы
Перевод

Прим. переводчика: Это перевод первой статьи из целого цикла постов "Грокаем функциональное программирование" Мэта Тронтона. Да, это очередная статья про монады. Но она отличается от всего, что я читал по этой теме ранее. Поэтому мне захотелось перевести ее, чтобы самому внимательно вчитаться, чтобы поделиться с теми, кому трудно воспринимать такой материал на английском или кому она не попалась на глаза, чтобы, в конце концов, просто сохранить, так как сеть штука ненадежная.

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

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

Если бы даже монады не существовало, мы должны бы были ее изобрести, потому что она позволяет писать код чище.


В этом посте мы постараемся разобраться, что такое Монада собственноручно переизобретая ее на рабочем примере.

Читать далее
Всего голосов 16: ↑12 и ↓4 +8
Просмотры 3.2K
Комментарии 2

Сложно, но можно — стажировка в Яндекс Go

Разработка под iOS *Разработка мобильных приложений *Карьера в IT-индустрии IT-компании
Из песочницы

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

Я Максим, iOS-разработчик в службе технического развития Яндекс Go. В декабре 2021 года завершил стажировку в команде и хочу поделиться опытом, полезными ссылками и выводами, которые я делал на протяжении работы. Надеюсь, они помогут вам быстрее адаптироваться в первые месяцы работы.

Читать далее
Всего голосов 16: ↑11 и ↓5 +6
Просмотры 4.3K
Комментарии 0

Продолжаем разгонять FizzBuzz

Высокая производительность *Ненормальное программирование *C *

После написания первой статьи про FizzBuzz (которая неожиданно для меня стала выбором редакции на Технотексте 2021) у меня появлялись мысли о том, как еще можно ускорить, но все время было не до того. И тут мне прилетает перчатка.

Читать далее
Всего голосов 36: ↑34 и ↓2 +32
Просмотры 3.6K
Комментарии 5

Делаем качественные требования с помощью Таблиц принятия решений

Анализ и проектирование систем *Бизнес-модели *Подготовка технической документации *
Tutorial

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

Все это сложный и трудоемкий процесс. Вы сможете выполнять эти задачи эффективнее с помощью Таблицы принятия решений (Decision table) из состава нотации Decision Model and Notation (DMN).

Я, Lead BA , сертифицированный бизнес-аналитик от IIBA и системный аналитик от IREB, имеющий 14-летний стаж работы в ИТ, хочу поделиться с вами своим опытом использования Таблицы принятия решений (Decision table).

Читать далее
Всего голосов 8: ↑7 и ↓1 +6
Просмотры 1.7K
Комментарии 1

Бесплатные мероприятия по разработке (18 августа — 15 сентября 2022)

Программирование *Учебный процесс в IT Карьера в IT-индустрии Конференции

18 августа, Четверг
➖ IT_One Java Meetup
➖ Техническое собеседование системного аналитика

19 августа, Пятница
➖ Samokat Tech Meetup – Frontend

20 августа, Суббота
➖ TechnoMeetsDroid. Митап об Android-разработке

15 сентября, Четверг
➖ Асинхронный рендеринг в React 18 и принципы практичного рефакторинга

Узнать подробнее
Рейтинг 0
Просмотры 732
Комментарии 0

Зарница 2016: Кибер-атака

Информационная безопасность *Учебный процесс в IT

Я сидел на совещании в здании правительства Забайкальского края среди организаторов каждого из этапов Всероссийской Зарницы 2016 и слушал что ожидали от моего этапа "Кибератака". В предыдущий год уже был этап "Кибератака", и сбавлять темп организаторы не собирались - идея взлома участниками информационных систем, перехвата сообщений и подобных деяний вызывала уважение, и по итогу совещания у меня возник лишь один вопрос - какого уровня будут участники.

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

Читать про ИТ-Зарницу
Всего голосов 28: ↑18 и ↓10 +8
Просмотры 1.8K
Комментарии 9

Unity: Что представляет из себя Coroutine и зачем там IEnumerator

.NET *Разработка игр *C# *Unity *

Название статьи - это вопрос, который мне задали на собеседовании на позицию Middle. В этой статье мы расмотри корутины в Unity, что они из себя представляют, и заодно захватим тему Enumerator\Enumerable в С# и небольшую тайну foreach. Статья должна быть очень полезной для начинающих и интересной для разработчиков с опытом.

Читать далее
Всего голосов 3: ↑2 и ↓1 +1
Просмотры 1.5K
Комментарии 3

Применение языка Python в инженерной практике. Часть 1 — обзор модуля Pint

Python *Программирование *Математика *Инженерные системы *Подготовка технической документации *
Из песочницы

Язык Python (правильно это читается "Пайтон", но в русскоязычном сообществе так же прижилось и прочтение "Питон", мне оно тоже больше по душе ;) в последнее время получил очень большую популярность в среде непрограммистов по двум причинам:

- лёгкий синтаксис, очень близкий к естественным языкам и математическому мышлению;

- огромное количество различных библиотек (модулей), написанных как на самом питоне, так и на более быстрых языках С/С++ и Фортран.

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

Читать далее
Всего голосов 14: ↑13 и ↓1 +12
Просмотры 5.6K
Комментарии 40

Rust 1.63.0: потоки области видимости, I/O безопасность, NLL во всех редакциях по умолчанию

Open source *Программирование *Системное программирование *Компиляторы *Rust *
Перевод

Команда Rust рада сообщить о новой версии языка — 1.63.0. Rust — это язык программирования, позволяющий каждому создавать надёжное и эффективное программное обеспечение.


Если у вас есть предыдущая версия Rust, установленная через rustup, то для обновления до версии 1.63.0 вам достаточно выполнить команду:


rustup update stable

Если у вас ещё нет rustup, то можете установить его со страницы на нашем веб-сайте, а также ознакомиться с подробным описанием выпуска 1.63.0 на GitHub.


Если вы хотите помочь нам протестировать будущие выпуски, вы можете использовать beta (rustup default beta) или nightly (rustup default nightly) канал. Пожалуйста, сообщайте обо всех встреченных вами ошибках.


Что стабилизировано в 1.63.0


В стандартную библиотеку добавлены потоки, которые гарантировано завершаются в конце области видимости. Завершена миграция всех редакций языка на NLL. Добавлены новые типы для работы с дискриптерами файлов операционной системы.

Читать дальше →
Всего голосов 39: ↑38 и ↓1 +37
Просмотры 4.3K
Комментарии 1

PowerShell: HTML Agility Pack и AngleSharp

Программирование *.NET *PowerShell *Оболочки *Разработка под Windows *
Tutorial

Как получить и использовать библиотеки «HTML Agility Pack» и «AngleSharp» для создания простого парсера HTML в скрипте для программ-оболочек «Windows PowerShell» версии 5.1 и «PowerShell» версии 7 в операционной системе «Windows 10». Приведен простой пример кода для обеих библиотек.

Читать далее
Всего голосов 4: ↑2 и ↓2 0
Просмотры 823
Комментарии 5

17 Атрибутов Хорошего Канального Протокола Передачи Данных

Сетевые технологии *C *Разработка робототехники *Программирование микроконтроллеров *Робототехника

В этом тексте представлены атрибуты хорошего и простого канального Master-Slave протокола для пакетного обмена информацией между устройствами на общей шине таких как RS485, CAN, LoRa, BLE.
Несмотря на то, что есть канальные протоколы ModBus, DLMS, RDS, UBX, NEC, Pelco-D, yModem, многие компании всё же придумывают собственный канальный протокол для взаимодействия между своими электронными платами. Тут представлены общие атрибуты таких доморощенных протоколов.

Читать далее
Всего голосов 13: ↑9 и ↓4 +5
Просмотры 2.8K
Комментарии 10

ML в Managed Kubernetes: для каких задач нужен кластер с GPU

Блог компании Selectel Машинное обучение *Kubernetes *

Машинное обучение используют в разных сферах: от бизнес-аналитики до астрофизики. Для грамотного потребления ресурсов модели развертывают в контейнерах на выделенных серверах или в облаках. Теперь с ML можно эффективно работать в готовых кластерах Kubernetes — в них появились производительные видеокарты.

Под катом рассказываем, для чего нужны GPU в кластерах Managed Kubernetes и как они ускоряют продакшн ML-сервисов.
Читать дальше →
Всего голосов 26: ↑26 и ↓0 +26
Просмотры 1.1K
Комментарии 1

Решение популярной задачи про книги

Занимательные задачки LaTeX *Математика *

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

Читать далее
Всего голосов 24: ↑15 и ↓9 +6
Просмотры 3.5K
Комментарии 5

Приключения чисел в python и mypy или the numeric tower

Python *Программирование *

Если вы когда-нибудь чувствовали, что вы погрязли в совещаниях и обсуждениях, которые всё длятся и длятся, а решения проблемы всё нет, знайте: в mypy есть 5-летний issue, о том что целое число не является числом.

В статье рассмотрим этот и несколько других забавных примеров того, что допустимо и нет использовать в python с точки зрения mypy и самого интерпретатора.

Read more
Всего голосов 6: ↑5 и ↓1 +4
Просмотры 1.9K
Комментарии 11

Изучение нейросетевого подхода к решению OCR на примере задачи распознавания арабского текста

Data Mining *Машинное обучение *Data Engineering *

Оптическое распознавание символов (Optical Character Recognition) — одна из первых задач компьютерного зрения, заключается в переводе изображений рукописного или печатного текста в текстовые данные, использующиеся в компьютере. 

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

Читать далее
Всего голосов 2: ↑2 и ↓0 +2
Просмотры 892
Комментарии 1