Начало года традиционно — время тысяч постов и статей на тему того, как поставить цели на следующие 12 месяцев. Обычно на выбор есть два стула: либо ERP-система уровня предприятия, либо полуэзотерическая визуализация. Я же хочу поделиться вариантом где-то посередине с минимум задротства и упором на практику, сдобренную каплей теории.
Software Engineer
Sacred: ностальгия, прошедшая проверку временем
К 2004 году многие игроки уже успели насладиться Diablo II и хотели попробовать что-то новое, что-то, что подарит им те же ощущения и при этом предложит совершенно другой игровой опыт. В этот год вышла Sacred (или, как ее назвал официальный локализатор Акелла, «Князь тьмы»), и тоска по хорошим диаблоидам, несомненно, стала одной из причин ее популярности. Но только ли на этом пытались выехать разработчики, создавая игру, которая в последствии стала для многих любимой? Огромный (при этом бесшовный) и очень красочный мир, словно сошедший со страниц какого-то волшебного произведения, продуманная ролевая система и множество героев на выбор, включая довольно интересных и необычных для данного жанра персонажей, таких как вампиресса, демонесса или серафима. Проект влюблял в себя с первых минут и не отпускал еще долгие дни и недели.
Хочу признаться, что я не поддался чарам этой игры и до сих пор остаюсь верен своей любимой Diablo II. Однако хорошо помню, как все вокруг были увлечены Sacred. Все мои друзья с энтузиазмом обсуждали этот хит, и почти в любом игровом клубе моего города всегда можно было найти хотя бы один компьютер, на котором был запущен Князь тьмы. И, заметьте, это происходило в эпоху доминирования таких проектов, как Counter Strike 1.5 и 1.6, Starcraft и Warcraft 3, а также созданной для нее карты DotA! Даже мой друг, который не очень интересовался играми и залипал в основном в третью часть Героев, поддался влиянию этого игрового наркотика под названием Sacred!
Так что же было в ней такого, благодаря чему небольшая студия Ascaron Entertainment в одночасье проснулась знаменитой, а в её новый (на тот момент) проект с упоением играли во всём мире? В данной статье я постараюсь ответить на этот вопрос, ведь это был один из самых успешных конкурентов Diablo, что, согласитесь, очень достойное звание!
Наконец-то не лопата! Обзор смартфона 8849 Tank Mini: компактный, защищенный, с мощным фонарем и лазерным дальномером
Сбылась мечта тех, кто подыскивал себе защищенный смартфон в компактных размерах. Tank Mini собрал в себе максимум «хотелок» любителей практичных бронесмартфонов: компактные размеры, полную пылевлагозащиту, современный производительный чипсет, крупный аккумулятор, мощный уличный фонарь с несколькими режимами работы и набор полезных инструментов, среди которых особняком стоит лазерный дальномер. Смартфон также имеет несколько интересных решений, вроде цветных светодиодных полосок для уведомлений или дополнительных программируемых функциональных кнопок. В общем весьма интересная и необычная модель, которая заметно выделяется из серой массы безликих аппаратов. Изучаем, тестируем и анализируем новый смартфон Tank Mini от бренда 8849 (принадлежит компании Unihertz).
Как уменьшить вес продуктовой анимации в 400 раз (без AI)
Все любят красивую и качественную графику, но обычно такая графика весит много и влечёт проблемы с её добавлением в дистрибутив проекта. А, возможно, и доработки по внешней загрузке или самое частое — сжатие с потерей качества. Каждый дизайнер хоть раз, да говорил «Вот бы можно было и качество сохранить, и отдать разработчикам легкие файлы…». Сегодня нет классных AI-решений для этой задачи, но в этой статье мы расскажем о том, как нам удаётся значительно ужимать графику с использованием растровых и векторных элементов, содержащей альфа-канал.
В статье мы ответим на следующие вопросы: Какой формат анимации с растровыми элементами выбрать для использования в мобильном приложении? Как уменьшить вес файла и не потерять качество картинки? И как со всем этим связаны Lottie-анимации?
Взлом аппаратного ключа методом veni, vidi, vici
К одному очень дорогому оборудованию для работы управляющей программы нужен аппаратный ключ с зашитой датой, указывающей, когда право использования оборудования кончается. За ключи исправно платили заграничному вендору, но после санкций это стало невозможным и оборудование стало простаивать. Важно, что интернет не использовался для активации ключа. Значит всё необходимое в ключ зашито. Если корпус ключа открыть, то видна одна микросхема FT232R с небольшой обвязкой.
Задача: Сделать так, чтобы можно было пользоваться оборудованием. Дистрибутив софта, требующего ключ, есть. Работает он под Windows. Просроченный ключ есть. Оборудованию около 10 лет.
Ниже описан путь решения со всеми ошибками.
Корпоративный куколдизм
Зачастую мне приходится слышать в подкастах или лицезреть в комментариях примерно такой диалог: "Я вашу айтишечку на балде вертел. Я сюда ради денег пришёл, которые в России ни в одной другой области не платят. Я вру на собесах об опыте, потому что работодатели точно так же врут соискателям об условиях работы, требования к джунам сениорские, а зарплата - нет"
Программисты всё вымирают и вымирают
Да вымереть не могут.
Откуда это всё пошло? Чем так условные «программисты» не угодили? И почему именно программисты?
JavaScript однопоточный или многопоточный? Ставим точку
Поводом для ревизии данного вопроса стало то, что я по сей день слышу от специалистов (в том числе позиционирующих себя как senior), что современный JavaScript является однопоточным. При этом они охотно задают этот вопрос на техническом интервью, вводя неуверенных кандидатов в заблуждение.
Oxlint — более быстрая альтернатива ESLint
Друзья, всем привет! Меня зовут Игорь Карелин, я frontend-разработчик в компании Домклик. Недавно стал общедоступен новый линтер «Oxlint», основанный на языке программирования Rust, и многие эксперты высоко оценили его. Какие преимущества Oxlint предоставляет по сравнению со своим предшественником ESLint?
PyZelda своими руками или как геймдевить без Unreal, Unity и кредитов
Хабры и Хаброчки, я хотел бы перед самой статьёй обсудить вопрос целесообразности писать свой движок, вместо готовых решений. Есть куча статей, которые опишут разные движки от более популярных до менее. Я бы хотел затронуть немного другой вопрос: "Как человеку, который изучал программирование много лет заняться геймдевом?". Обычно, есть два пути в геймдев:
Умышленный путь. Это когда человек, который играет в игры рано или поздно решит их создать. Тогда, он выбирает где ему учиться этому и выучивает игровые движки и C-образные языки к ним (чаще всего, C#).
Путь прогеров. Программист увлекается математикой и пишет код. Так или иначе, везде где есть код — есть компьютер. Цифровые развлечения (в том числе и игры) не проходят мимо тех людей, который постоянно пишут код. Так, часть прогеров решает написать свою игру и начать свой путь в геймдев. Об этом пути мы и поговорим.
Так зачем выбирать "сложный" путь? Во-первых, не для всех он сложнее. Лично мне сложнее перейти на C# с использованием Unity, чем написать новый проект на Python. Во-вторых, люди не всегда понимают сам движок. Сейчас я преподаю в институте "Бизнеса и Дизайна". Это один из первых профильных учреждений, занимающихся геймдевом. И вот у студентов я спросил зачем им движок. Каково было моё удивление, что далеко не все понимаю, вообще зачем он нужен. Спойлер, не из-за пресетов.
Всех заинтересовавшихся, приглашаю в мир змеиных игр!
О троице, которая хакнула настоящий поезд. Даже целых 30 поездов
Поезд, сделанный польской компанией, внезапно сломался во время техобслуживания. Специалисты были беспомощны — поезд был в порядке, только никак не хотел ехать. Доведённые до отчаяния, они вызвали на помощь команду Dragon Sector, члены которой нашли такие чудеса, о которых машинисты даже и не мечтали.
В этой истории мы отправимся в необычное путешествие. Путешествие, полное неожиданных открытий и событий, путешествие под давлением времени и больших денег, а также необычных технологий. Путешествие, в котором поезд играет самую важную роль — хотя, к сожалению, он не едет, а должен был бы. Пристегнитесь — или, по крайней мере, сядьте поудобнее, потому что дальше будут крутые повороты.
Самая дешевая заводская панель управления умным домом, которая отлично работает
Несколько лет назад уже писал про свои поиски идеальной и недорогой панели управления умным домом (статья собрала 200 закладок), тогда в 2020 году я остановился на недорогом андроид планшете, который перепрошил на чистый андроид для выполнения удаленных команд через ADB.
Программно меня всё устраивало, но вот красиво закрепить планшет на стене без колхоза и дополнительных действий было трудно. Пришлось отдавать его в багетную мастерскую для оформления в рамку, выпиливания в стенках мест под кабель и кнопки, а затем придумывать настенный крепеж, который бы не отваливался при нажатии на экран, а кнопку включения пришлось подпаивать внутри корпуса планшета, чтобы сделать её внешней. К тому же в случае проблем с устройством пришлось бы эти шаги повторять заново.
С тех пор я переехал и не захотел повторять все эти шаги, мне хотелось взять готовое заводское устройство, программно его настроить, отвязать от любых облачных сервисов и просто вставить его в подрозетник или поставить на стол. Переплачивать за панель тоже не хотелось. В итоге таким вариантом стала Sonoff NSPanel.
Выбор пал на NSPanel из‑за цены около 3,5 тысяч рублей, а также возможности установки в подрозетник или покупки настольной подставки — как у меня на фото.
Гексагональная архитектура со Spring Boot
Гексагональная архитектура стала популярным архитектурным паттерном, помогающим отделить бизнес-логику от инфраструктуры. Такое разделение позволяет откладывать принятие решений о технологиях или легко заменять их. Кроме того, это позволяет тестировать бизнес-логику в изоляции от внешних систем.
В этой статье мы рассмотрим, как реализовать гексагональную архитектуру в Spring Boot приложении. Мы разделим бизнес-логику и инфраструктуру на отдельные модули и посмотрим, как можно изолированно реализовать и протестировать эти модули.
Данная статья представляет собой практическое руководство и предполагает, что читатель имеет базовое представление о принципах, лежащих в основе гексагональной архитектуры.
Феномен постоянной Капрекара. Таинственное «число великой радости» 6174
Чем же так занимательно число 6174? Казалось бы, это обычное натуральное чётное четырёхзначное число. Не лучше и не хуже, чем, скажем, соседние 6173 и 6175. Оно даже не является простым. Тем не менее, это число имеет своё собственное название — постоянная Капрекара. А ещё оно относится к так называемым «числам великой радости».
Давайте разбираться, что же в этом числе такого особенного. Займёмся несложными вычислениями...
Как я наказал Firaxis или история о том, как перебрать бинарный движок через глушитель
Речь пойдёт о далёком 2005 году, когда только-только вышла Civilization4 от Sid Meier. К тому времени я плотно висел в Civilization3, прошёл её раз дцать на самых разных картах, и тут вышла долгожданная четвёрка. Это были годы P3-512Mb для mid-end и P4-1Gb в hi-end. Только топовые конфиги в те годы имели два гига памяти на борту.
Civilization 4 вышла с графикой уровня года 2002-2003го, что в принципе нормально для мэинстрима тех времён, особенно учитывая что это пошаговая стратегия, а не шутер. Но жрала с течением игры до 900Mb оперативки, что приводило к жуткому свопу, особенно на больших картах, особенно к концу игры, особенно на ноутбуках. Народ недоумевал, я тоже. Учитывая, что в те же годы вышел Far Cry с куда более красивой графикой, и который вполне игрался на максимуме даже с 512Mb на борту, такое поведение Civilization 4 выглядело крайне странным. Захотелось разобраться и покарать…
Создание анимированных видео в нейросети Stable Diffusion, пошаговое руководство
Друзья, всем привет, даже от меня вы уже не раз слышали, что в нейросетях сейчас можно делать буквально все: создавать тексты, генерировать музыку, делать дипфейки, создавать изображения и даже видео. Раньше генерировать видео можно было только в больших платных проектах типа Gen-2 от Runway или в пока еще бесплатном дискорд боте Pika Labs. Локальные решения были плохими или требовали топовых видеокарт.
Осторожно, много тяжелых гифок.
Хуже, чем заключенные: как в Китае студенты тренируют ИИ
Аннотаторы данных для ИИ — новая горячая профессия в IT. Несколько десятков тысяч человек работают на таких «плантациях» в Венесуэле, в том числе обучая умные пылесосы. Недавно я рассказывал о том, как это происходит в Финляндии за счет труда заключенных. За разбор картинок и оценку текстов от ИИ им там платят порядка €1,50 в час. Но самая большая индустрия аннотаторов данных на самом деле находится в Китае. И они здесь придумали свое решение, уникальное именно для этой страны.
Игры, похожие на Starfield
Starfield — новая большая игра от Bethesda и Microsoft, которая разделила игроков на два лагеря. Первый считает ее лучшей игрой студии и одним из самых мощных релизов для Xbox. Другая же осталась разочарована тем, насколько многие потенциально интересные идеи «Fallout в космосе» остались сырыми и недоделанными. Если вы из второй группы или просто хотите похожего со Starfield опыта, то для вас мы собрали восемь игр, в которые стоит поиграть. Какие-то просто похожи на Starfield, какие-то реализуют ее идеи куда лучше.
Сам написал, сам поиграл: как я написал 2D-игру для Android полностью с нуля, весом менее 1мб?
Многие программисты так или иначе имеют тягу и интерес к разработке игр. Немалое количество спецов было замечено за написанием маленьких и миленьких игрушек, которые были разработаны за короткое время «just for fun». Большинству разработчиков за счастье взять готовый игровой движок по типу Unity/UE и попытаться создать что-то своё с их помощью, особенно упорные изучают и пытаются что-то сделать в экзотических движках типа Godot/Urho, а совсем прожжённые ребята любят писать игрушки… с нуля. Таковым любителем писать все сам оказался и я. И в один день мне просто захотелось написать что-нибудь прикольное, мобильное и обязательно — двадэшное! В этой статье вы узнаете про: написание производительного 2D-рендерера с нуля на базе OpenGL ES, обработку «сырого» ввода в мобильных играх, организацию архитектуры и игровой логики и адаптация игры под любые устройства. Интересно? Тогда жду вас в статье!
Сага распределенных транзакций
В своем проекте мы столкнулись с необходимостью осуществить определенные действия с заявкой в нашей микросервисной архитектуре между несколькими сервисами. Причем если одно или несколько действий завершаются неудачно, то все следующие действия должны быть отменены, оставив состояние сущностей неизменным. Также в случае получения нефинальной ошибки мы хотели бы попробовать довести процесс до финала, не откатывая предыдущие шаги.
В монолитном приложении это было бы сделать легко, опираясь на гарантии удовлетворяющей требования ACID базы данных. В нашем же случае такой фокус не пройдет, наш бизнес-процесс затрагивает сразу несколько баз данных и брокеров сообщений, следовательно, решить эту задачу, запустив одну транзакцию, невозможно.
Поскольку наверняка не мы первые столкнулись с такой проблемой, то решили изучить существующие способы решения этой задачи.
У некоторых в команде уже был опыт работы с xa-транзакциями.
Довольно удобный способ, когда у вас есть несколько ACID СУБД. Процесс состоит из двух фаз.
Information
- Rating
- Does not participate
- Location
- Азербайджан
- Registered
- Activity