Топ 22 самых редких конструкций языка С. От макросов с аргументами до каламбура типов - найдётся применение каждой. tmpfile() вступает в силу!
User
Навигация в SwiftUI или NavigationView и его особенности
Первое с чем вы сталкиваетесь при написании мобильного приложения, это переходы с одного экрана на другой и обратно (в случае простого приложения), а так же многоуровневые переходы и моментальный возврат на первый экран (back to root view). Всё это мы разберём на примерах в данной статье, ну а для начала немного углубимся в теорию.
Что такое NavigationView?
Представьте, что перед вами коробка (NavigationView) в которой много мячиков (View) и эти мячики могут соприкасаться друг с другом (переход с View на View) только в рамках этой коробки.
Но есть так же и случаи, когда внутри коробки, помимо шариков, есть ещё одна коробка поменьше, которая содержит другие маленькие шарики (история про .sheet и .fullScreenCover - модальные окна). Это так же разберём ниже в статье.
Нужен ли iPod в 2022 году или Make iPod great again
Я всегда была человеком, который не может ничего делать без музыки, звучащей на заднем плане. Когда-то давно это был маленький mp3-плеер, затем iPod, и в конце концов телефон со Spotify.
Не так давно я поняла, что была очень ленивой. Часто я просто ставила свой еженедельный/ежедневный микс или какой-то плейлист, который я давно составила. Я никогда не задумывалась о том, какая музыка мне нравится и какую музыку я хочу слушать. Думаю, отчасти это связано с тем, что практически любая музыка была доступна — что делало выбор ещё более сложным.
Так или иначе, за выходные я разобрала iPod Classic (или iPod Video) 5-го поколения и сделала его немного лучше, обновив к 2022 году. Заранее предупреждаю, что под катом много изображений.
Скриптовый (script) 3D редактор OpenSCAD
В основу 3D-script редактора OpenSCAD положена абсолютно обратная парадигма, в данном редакторе полностью отсутствует какой либо графический интерфейс для создания 3D-объектов, нет ни одной "кнопки" или пункта "меню" при помощи которого вы могли бы создать какой либо графический примитив и произвести над ним какую либо манипуляцию. Создание всех объектов в OpenSCAD и манипуляции над ними происходят только посредством заранее подготовленного script-кода.
Книга «Этичный хакинг. Практическое руководство по взлому»
oneTBB: интеграция и сборка через CMake
Threading Building Blocks (TBB) — популярная библиотека для параллельного программирования на C++ с открытым исходным кодом, опубликована на GitHub. Пару лет назад команда разработки решилась на глобальный рефакторинг библиотеки (проект TBB revamp), в который удалось вписать долгожданную смену системы сборки с GNU Makefiles на CMake. Свежая версия вышла в релиз в рамках инициативы oneAPI, обновив имя на oneTBB. В этой статье я расскажу про то, как подключить oneTBB в CMake-проект и как собрать, протестировать и установить oneTBB.
Rustenstein 3D: программируем, как будто сейчас 1992 год
Дважды в год компания NextRoll организует мероприятие Hack Week, на котором сотрудники на неделю берутся за проект по своему выбору. Это превосходная возможность для экспериментов, изучения новых технологий и объединения с людьми из всех отделов компании. Узнать о Hack Week подробнее можно здесь.
Так как NextRoll всё активнее использует язык программирования Rust, на Hack Week инженеры обычно пытаются получить опыт работы с ним. Ещё одним популярным вариантом выбора является работа над видеоиграми, и, как вы уже могли догадаться, мы часто видим в проектах сочетание видеоигр и языка Rust.
В прошлом году группа сотрудников работала над развитием моей игры rpg-cli. На этот раз захотелось пойти дальше и взять проект, который показывает некоторые из сильных сторон Rust: низкоуровневым программированием, высоконагруженными вычислениями и операционной совместимостью данных с языком C. Поэтому мы решили портировать на Rust классическую игру Wolfenstein 3D.
PE (Portable Executable): На странных берегах
Эта статья представляет из себя рассказ о том как устроены исполняемые файлы (в точку! Это именно те штуки, которые получаются после компиляции приложений с расширением .exe). После того, как написан код, подключены библиотеки, подгружены к проекту ресурсы (иконки для окон, какие-либо текстовые файлы, картинки и прочее) всё это компонуется в один единственный исполняемый файл, преимущественно с расширением .exe. Вот именно в этот омут мы и погрузимся.
*Статья находится под эгидой «для начинающих» поэтому будет изобиловать схемами и описанием важных элементов загрузки.
JNI Часть 2: Примеры
Всем привет! Меня зовут Роман Аймалетдинов, я разрабатываю клиентское приложение Ситимобил. Продолжаю свою серию статей по JNI, так как технология используется редко, но иногда она бывает очень полезной (или просто интересной). В этот раз я покажу примеры решений на JNI, которые совсем немного сложнее, чем hello world. И если вы не знакомы с JNI, то советую начать с первой части.
Проектирование непредсказуемого интеллекта в играх. Часть 1 — архитектура
Создаем персонажа, который сам решает, что ему стоит сделать с игроком.
В этой статье я познакомлю вас с методикой проектирования искусственного интеллекта под названием GOAP на примере игры Hitman.
Подобные методики редко применяются в СНГ, но более популярны в зарубежных студиях (чаще всего уровня ААА), где есть отдельный департамент разработки ИИ и вместо готовых ассетов проектируются интереснейшие поведения. Но чем плохо начать сейчас внедрять в наш геймдев эти техники и наконец сделать достойную триплэй игру?
Проброс видеокарты в виртуальную машину
Две разные системы (win + linux) на одной аппаратной базе - реальность. В этом нет ничего нового или инновационного (на данный момент времени), но если требуется максимальная производительность гостевой системы, то не обойтись без проброса реальных устройств в виртуальную машину. Проброс сетевых карт, usb-контроллеров (etc) экстраординарных особенностей не несёт, а вот попытка "шаринга" ресурсов видеокарты и процессора вполне может принести некоторое количество проблем.
Итак, а для чего, собственного говоря, городить системы с полнофункциональным использованием ресурсов GPU и CPU? Самый простой и очевидный ответ - игры (широко известный факт - если не большинство, то очень многие, написаны под ОС Windows). Другой вариант - полноценное рабочее место с возможностью запуска требовательных приложений (например, CAD-софта), быстрым бэкапом (скопировать файл ВМ куда проще, чем создавать полную копию HDD/SSD) и опцией полного контроля сетевого трафика гостевой системы.
Знакомство Unity с FMOD за пять минут
Представим небольшую команду. Подводя разработку проекта к стадии звукового сопровождения, чаще всего использует возможности среды без каких-либо дополнительных решений. В папке assets есть набор звуков и композиций. Часть звуков нужно проигрывать событийно, часть находятся на сцене в связанных настроенных компонентах и прочее.
Событийные звуки, через код, программиста просят проигрывать с учётом изменения pitch в небольших пределах. Особо никто не парится. Всех устраивает встроенные возможности настройки компонентов и Inspector-ом все довольны.
Теперь представим ситуацию посложнее. Компания/команда решает подтянуть звуковой дизайн игры с помощью FMOD. Программист начинает предполагать, как новые условия / требования повлияют на код. Придется переписывать кучу всего... Короче, страшное дело. Тем более видели этот интерфейс FMOD Studio? Управление космическим кораблем.
ULE — самописное MC Java ядро. Часть #1.1 — HelloWorld и изменения…
Дальше создаю серверное ядро на языке Rust, в данной часте был сделан переход с Go и добавлено несколько интересный изменений.
Переход с Go на Rust дал огромный прирост производительности и теперь ядро сверх быстрое. Ядро использует всего 128KB ОЗУ и запускается за менее 1мс)
SwiftUI туториал слайдер контроллера
Рассмотрим, как реализовать ползунок для переключения между страницами с красивой анимацией.
Unity «Best» Practices
Эта статья родилась из внутреннего доклада для коллег, которые уже достаточно давно занимаются разработкой игр, но только недавно прикоснулись к Unity. Здесь мы собрали фишки и особенности работы с этим игровым движком разной степени капитанскости, почерпнутые из собственного опыта, которые стоит знать, чтобы эффективно им пользоваться и уже никогда ничему не удивляться.
Что такое AssetPostprocessor и чем Animation отличается от Animator? Почему не стоит доверять OnTriggerExit и зачем вам CanvasGroup? Чем хорош GameObject.Find и как вас спасут Property?
Далее в статье обсудим это, а также другие «особенности» работы с движком Unity.
Память в Swift (куча, стек, ARC)
Для хранения объектов Swift использует две структуры данных: стек и кучу. Управление распределением памяти подразумевает выделение памяти под объект (аллокацию) и ее последующее высвобождение (деаллокацию).
Играйте в хакера безопасно: 20+ игр, чтобы почувствовать себя хацкером и не призвать ФСБ
Ниже моя подборка с разными играми про хакерство, я разделяю их на:
- те, которые реально прокачивают какие-то скиллы в сфере информационной безопасности, включают какой-то образовательный контент для начинающих (5 игр);
- те, которые симулируют атмосферу хакерства и какие-то процессы в упрощенном виде (9 игр);
- те, которые просто симулируют атмосферу хакерства и загадочности (5 игр);
- фан на тему около хакерства (3 игры).
Еще я веду канал в Telegram: GameDEVils, делюсь там клевыми материалами (про геймдизайн, разработку и историю игр).
Почему некоторые принципы программирования важны для понимания, но бесполезны на практике
Многие разработчики считают принципы программирования обязательными и используют их по дефолту во всех проектах. На самом деле большинство из них нереализуемы на практике — докажем это на нескольких примерах.
Представляем MongoDB 5.2 Rapid Release
Привет, Хабр. В феврале стартует очередной набор группы курса "MongoDB", в связи с чем подготовили для будущих студентов перевод статьи из официального блога MongoDB про релиз 5.2. Решили, что для читателей Хабра эта информация тоже может оказаться полезной, поэтому делимся с вами.
MongoDB позволяет решать самые разные задачи с данными при помощи единого API. Наш последний быстрый релиз — MongoDB 5.2 — развивает эту концепцию, улучшая эргономику запросов, совершенствуя коллекции временных рядов (представленные в MongoDB 5.0), масштабирование, оперативную устойчивость и новые возможности, позволяющие командам выполнять более сложную аналитику на месте.
Сжатие столбцов для коллекций временных рядов
Появившиеся в MongoDB 5.0 коллекции для данных в форме временных рядов позволяют легко получать и работать с информацией из этих коллекций вместе с вашими операционными или транзакционными данными без необходимости интеграции отдельной одноцелевой базы в вашу среду. В версии 5.2 Rapid Release представлено сжатие столбцов для коллекций временных рядов в MongoDB.
Случаи использования временных рядов — будь то мониторинг устройств, выявление тенденций или прогнозирование — требуют, чтобы при каждом измерении в базу данных вносились новые данные. В случаях, когда данные поступают постоянно, их объем может быть ошеломляющим, что затрудняет управление постоянно растущим объемом хранилища.
Чтобы помочь командам достичь высокой производительности при сохранении эффективности использования ресурсов, мы добавили несколько возможностей в коллекции временных рядов.
Как создавать уникальные лабиринты
Лабиринты на сегодняшний день всё ещё важны в развлекательной сфере. И это не только зеркальный лабиринт в парках аттракционов, но и видеоигры, ведь если посмотреть на карты и уровни в различных играх, то это всё один большой и сложный лабиринт, построенный по некоторым правилам.
А что если мы хотим тоже сделать свой интересный и уникальный лабиринт? Очевидно, нужно создать эти самые правила. Далее я постараюсь кратко, понятно и без лишних непонятных букв рассказать о разработке своего подхода к генерации различного рода лабиринтов. Объясню, почему я этим занялся, с чего начинал и как всё развилось до вполне приличного алгоритма на основе подхода и почему каждый из вас может взять этот подход за основу и адаптировать его под свои желания.
Information
- Rating
- Does not participate
- Registered
- Activity