Пару месяцев назад, когда Oracle представила в своем публичном облаке двухсокетные серверы с 80-ядерными ARM-процессорами, в англоязычном блоге Тодда Шарпа появилась статья о том, как запустить сервер Minecraft в облаке. Теперь, когда Oracle добавил эти процессоры в Always Free Tier, все стало еще интереснее — вы можете совершенно бесплатно и неограниченно создавать и использовать виртуальные машины, использующие в общей сложности 4 ядра и 24GB памяти. Однако за два месяца изменился интерфейс Публичного Облака Oracle и версии программ, которые применяются для запуска сервера Minecraft. Поэтому сегодня я хочу поделиться своим опытом прохождения этого же пути — с учетом изменений и подводных камней, а также в русскоязычным интерфейсом. Всех любителей Minecraft, а также заинтересованных в создании бесплатных виртуальных серверов, прошу под кат!
Пользователь
Бесплатный персональный OpenVPN-сервер на базе Oracle Cloud
На этот раз статья будет короткой и во многом самоочевидной. Потому что большинство потенциальных пользователей просто не знают о такой возможности, а сама настройка проста, как апельсин.
Oracle, придя на рынок облачных сервисов, активно привлекает новых клиентов. И одним из инструментов такого привлечения являются Always Free сервисы - зарегистрировавшийся клиент может пользоваться каким-то достаточно ограниченным набором ресурсов, как это следует из названия, бесплатно и неограниченно во времени. В список этих ресурсов входит два compute инстанса (каждый 2 ядра, 1GB RAM, 45GB HDD), которые можно использовать подо что угодно, но в нашем случае мы можем построить на них полностью бесплатный OpenVPN-сервер, буквально не умея практически ничего, кроме тыкания в кнопку Next. Чем мы и займемся.
Умное — не значит дорогое: для smart-часов за $25 от Pine64 выпустили open-source прошивку
Команда Pine64 часто выпускает интересные устройства и ПО к ним. Об этих гаджетах на Хабре пишут достаточно часто. Например, вот статья о Linux-смартфоне PinePhone c KDE Plasma Mobile. Эта же команда разрабатывает одноплатник с RISC-V чипом, а вот еще один одноплатник, с процессором RK3566.
Но речь сейчас не обо всех этих классных девайсах, а об умных часах PineTime, которые выпущены еще в 2019 году. Большинство смарт-часов через пару лет уже считаются морально устаревшими и прекращают получать обновления. Но только не в этом случае — разработчики выпустили для девайса open-source прошивку.
Я тебя найду по JS, или какие возможности для фингерпринтинга дают современные web-технологии
Привет, Хабр! Меня зовут Горшков Максим, я работаю в отделе информационной безопасности Cloud4Y. Сегодня я покажу вам, как много данных о пользователе утекает во время обычного сёрфинга в интернете.
KODI: собираем удобный и функциональный медиацентр для дома. Часть 1
Поговорим о том, как при наличии небольшого количества времени и навыков построить мультимедийный комбайн с дополнительными возможностями домашнего сервера на базе Kubuntu 20.04 и KODI, способного работать 24/7/365.
Кроссплатформенный мультиплеер на Godot без боли
Недавно я начала заниматься разработкой игр на Godot и столкнулась с проблемой - мне понадобилась возможность реализовать мультиплеер с независимым сервером, при этом ещё и с возможностью игры из браузера. В Godot уже есть разные варианты реализации мультиплеера - но для ускорения разработки и во избежание ошибок при ручной сериализации/десериализации я решила попробовать связать клиент на Godot и сервер на Kotlin через вебсокеты и описывать их взаимодействие в формате protobuf.
Всех, кому интересна эта тема, прошу под кат.
Бесплатные хостинги для веб-разработчиков
Привет, Хабр!
Одним из наиболее популярных направлений разработки сегодня является веб. И когда нужно разместить свой проект где-нибудь, кроме localhost, многие сталкиваются с трудностями, ведь хостинг должен быть быстрым, удобным и, желательно, бесплатным :)
В этом списке вы найдете 15 бесплатных сервисов, где легко сможете разместить свой проект и не заплатите ни копейки. Погнали!
Создание процедурной анимации смерти при помощи автоматов падающего песка
Автоматы падающего песка
Автомат падающего песка — это клеточный автомат, симулирующий перемещение песчинок и создание куч песка под действием гравитации.
Правила просты:
- Если ячейка под песчинкой пуста, то песчинка движется в пустую ячейку (см. (a)).
- Если ячейка под песчинкой заполнена, но свободна ячейка внизу слева или внизу справа, то песчинка движется туда (см. (b)). Если свободны обе, то одна из них выбирается случайным образом.
- В остальных случаях песчинка не движется.
cGit-UI — web-интерфейс для Git-репозиториев
cGit-ui — это web-интерфейс для Git-репозиториев, основу которого предстваляет CGI-скрипт написанный на языке С.
cGit-ui поддерживает Markdown-файлы, которые обрабатываются на стороне сервера с помощью библиотеки md4c, зарекомендовавшей себя в проекте KDE Plasma. cGit-ui предоставляет возможность размещения кодов верификации сайта, а также скриптов от таких систем как Google Analytics и Yandex.Metrika для анализа трафика.
Пользователи cGit-ui получают широкие возможности для настройки как внешнего вида, так и функциональности собственного сайта, на котором они представляют свои репозитории. Кроме того, cGit-ui позволяет создавать и размещать на сайте, так называемые Donation-диалоги для приема пожертвований в пользу тех или иных проектов.
Внешний вид и функциональность сайтов, построенных на cGit-ui, можно рассмотреть на примере где, в том числе, представлены достаточно большие Git-репозитории, что позволяет примерно оценить скорость работы интерфейса. Рассматривать сайт в работе лучше начинать со смартфона, а затем переходить на более широкие экраны.
С момента выхода интерфейса к Subversion-репозиториям произошел ряд изменений в структуре пакетов, необходимых для установки. Так, например, cScm-демон, который служит для разбора конфигурационных файлов, выделен в отдельный пакет.
Поэтому в данной статье дается более развернутое описание cGit-ui.
Равномерное перемещение объекта вдоль кривой
В процессе разработки игры в совершенно различных жанровых категориях может возникнуть потребность «запустить» какой-либо игровой объект вдоль гладкой кривой с постоянной или контролируемой скоростью, будь то грузовик, следующий из города А в город Б, выпущенная по хитрой траектории ракета, или самолет противника, выполняющий заложенный манёвр.
Наверное, каждый имеющий отношение к теме знает или, по крайней мере, слышал, про кривые Безье, B-сплайны, сплайны Эрмита и прочие интерполяционные и сглаживающие сплайны и совершенно правильно предложил бы использовать в описанной ситуации один из них, но не всё так просто, как хотелось бы.
Двоичное кодирование вместо JSON
Почему меня это должно волновать
Данные хранятся в памяти в виде структур данных, таких как объекты, списки, массивы и т.д. Но если вы хотите отправить данные по сети или в файле, вам нужно закодировать их в виде последовательности байтов. Перевод из представления в памяти в последовательность байтов называется кодированием, а обратное преобразование – декодированием. Со временем схема данных, обрабатываемых приложением или хранящихся в памяти, может эволюционировать, туда могут добавляться новые поля или удаляться старые. Следовательно, используемая кодировка должна иметь как обратную (новый код должен быть способен читать данные, написанные старым кодом), так и прямую (старый код должен быть способен читать данные, написанные новым кодом) совместимость.
В этой статье мы обсудим различные форматы кодирования, выясним почему двоичное кодирование лучше, чем JSON и XML, и как методы двоичного кодирования поддерживают изменения в схемах данных.
Типы форматов кодирования
Существует два типа форматов кодирования:
- Текстовые форматы
- Двоичные форматы
Весь Хабр в одной базе. Комментарии и веб-приложение
Часть 1 | mega.nz | Онлайн демо | GitHub
Наверное, это продолжение статьи, в которой я парсил Хабр в базу данных. Теперь настало время её применить.
Создание roguelike в Unity с нуля: генератор подземелий
На этот раз мы погрузимся в реализацию алгоритма генератора подземелий. В прошлой статье мы создали первую комнату, а теперь сгенерируем остальной уровень подземелья.
Но прежде чем мы начнём, я бы хотел исправить ошибку из предыдущего поста. На самом деле, за последние недели я научился кое-чему новому, из-за чего часть проделанной мной работы устарела, и я хочу рассказать об этом.
Помните созданный нами класс Position? Вообще-то в Unity уже имеется встроенный класс, выполняющий точно такие же функции, но с немного более качественным управлением — его проще объявлять и обрабатывать. Этот класс называется Vector2Int. Поэтому перед началом мы удалим из MapManager.cs класс Position и заменим каждую переменную Position на переменную Vector2Int.
Это же надо проделать в нескольких местах скрипта DungeonGenerator.cs. Теперь давайте приступим к остальной части алгоритма.
Как на Python подобрать экипировку для игрового перса
Как я сгенерировал на Python тысячу лиц для своей игры
Поэтому я решил создать генератор лиц на основе знаменитой игры Papers, Please.
Генератор лиц Dukope (из Papers, Please)
Сбор данных
Я скачал примерно 50 портретов с pixabay.com (все изображения имеют лицензию CC и не требуют указания авторства).
Затем я вырезал фон каждого изображения в Photoshop (просто выбрал всё инструментом выделения многоугольника и нажал на Delete). В дальнейшем я планировал воспользоваться эффектом cutout , чтобы скрыть все недочёты.
Изображения с удалённым фоном
Рецепты для хворающих SQL-запросов
За прошедшее время вы уже воспользовались им более 6000 раз, но одна из удобных функций могла остаться незамеченной — это структурные подсказки, которые выглядят примерно так:
Прислушивайтесь к ним, и ваши запросы «станут гладкими и шелковистыми». :)
А если серьезно, то многие ситуации, которые делают запрос медленным и «прожорливым» по ресурсам, типичны и могут быть распознаны по структуре и данным плана.
В этом случае каждому отдельному разработчику не придется искать вариант оптимизации самостоятельно, опираясь исключительно на свой опыт — мы можем ему подсказать, что тут происходит, в чем может быть причина, и как можно подойти к решению. Что мы и сделали.
Давайте чуть подробнее рассмотрим эти кейсы — как они определяются и к каким рекомендациям приводят.
Golang + Phaser3 = MMORPG — Делаем базу для бесконечной генерации мира
На русскоязычных ресурсах трудно найти подходящую информацию, возможно этот материал позволит вам понять некоторые основы для создания многопользовательских игр и не только. Я планирую сделать серию статей по созданию 2.5D MMORPG, то бишь в изометрии, наш мир будет разделен на процедурно-генерируемые чанки, состоящие из тайтлов. Сервер будет написан на языке Golang, который как мне кажется отлично для этого подходит, клиентская часть будет на JavaScript с использованием фреймворка — Phaser.js
Создаем генерацию мира
И так в этой статье мы напишем генератор чанков для ММО на Голанг, мы не будем пока рассматривать Phaser. Для процедурной генерации нам потребуется шумовая функция, мы будем использовать Шум Перлина, рекомендую ознакомиться с данной статьей и переписать код на Го или взять мой вариант.
Кармическое проклятье Хабра
Непредвиденные последствия
«Система кармы Хабра и ее влияние на пользователей» — это тема для курсовой как минимум
Тема про карму на «Пикабу»
Я мог бы начать эту статью с того, что я давно читаю Хабр, но это будет не совсем точным высказыванием. Правильный тезис звучал бы так: «я давно читаю статьи с Хабра» — но не интересовался тем, что происходит внутри сообщества, когда этой весной решил наконец-то зарегистрироваться. Это типичная ошибка человека, который приходит на Хабр из поисковика читать полезные статьи о тонкостях программирования или интересные новости из мира технологий. Пока ты видишь портал только с этой, положительной стороны, ты не задаёшься вопросами о том, что происходит под капотом. Конечно, в комментариях или статьях время от времени проскальзывали упоминания кармы — но ведь карма есть почти на всех крупных порталах (наивно полагал я), это нормально для саморегулирующихся интернет-сообществ.
Мне пришлось всерьёз задуматься об этом после того, как я неожиданно потерял возможность писать больше одного комментария в пять минут.
При этом внешне всё шло отлично: мои комментарии всё время плюсовали, мой рейтинг рос — и вдруг оказалось, что у меня отрицательная карма. Весь мой длительный опыт интернет-общения, все пользовательские привычки, да и банальный здравый смысл кричали мне, что это какая-то ошибка: показатель одобрения пользователя сайта другими пользователями сайта не может одновременно расти и падать! Но я решил не рубить сплеча, а провести небольшое исследование, как аналитическое (в виде изучения мнений пользователей о карме), так и статистическое (в виде анализа показателей аккаунтов).
Процедурная генерация многоэтажных 3D-подземелий
В последнее время я играл в несколько roguelike, поэтому решил попробовать написать собственный процедурный генератор подземелий. Существует множество способов решения этой задачи, и я выбрал алгоритм автора TinyKeep, описанный здесь. Я расширил этот алгоритм, чтобы он работал в 3D и мог создавать многоэтажные подземелья.
Код примера выложен в репозитории Github. Для демонстрации я использую Unity3D, но эти концепции, разумеется, применимы к любому другому движку.
Два измерения
Сначала мне нужно написать алгоритм для двух измерений. В целом он работает так же, как алгоритм TinyKeep, но имеет отличия для создания более интересных уровней.
Сцена для этого примера называется Dungeon2D. Код для него находится в папке Scripts2D.
Алгоритм
Мир разделён в виде прямоугольной сетки. Я предполагаю, что 1 единицы будет достаточно для обозначения коридора. В полной игре 1 единица измерения Unity может соответствовать например 5 метрам. Для сетки я выбрал размер 30×30.
Information
- Rating
- Does not participate
- Location
- Чернигов, Черниговская обл., Украина
- Date of birth
- Registered
- Activity