Pull to refresh
27
0.1
Григорьев Андрей @Pochemuk

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

Send message

Сравнение форматов PNG: от первой до третьей редакции

Level of difficultyEasy
Reading time30 min
Views2.5K

Недавно опубликованная третья редакция спецификации Portable Network Graphics (PNG) 2025 года, разработанная World Wide Web Consortium (W3C), привлекла внимание к эволюции этого формата (W3C PNG Specification (Third Edition, 2025)). Ранее я, как и многие, использовал PNG, не задумываясь о его развитии и различных редакциях. Углубившись в изучение спецификаций PNG (1996, 2003, 2025), я решил подготовить данную статью, чтобы обобщить ключевые изменения и их значение для веб-дизайна, разработки игр и мультимедиа. Статья не претендует на исчерпывающий охват, но стремится предоставить полезный обзор для всех заинтересованных, включая начинающих. Приветствуются любые замечания и предложения по улучшению материала в комментариях к публикации. Весь код, приведённый ниже, выложил в репозиторий. Надеюсь, чтение будет полезным и увлекательным.

Читать далее

Жребий брошен: оптимальная генерация распределений и алгоритм Кнута-Яо

Level of difficultyMedium
Reading time8 min
Views2.8K

Задача
Три айтишника — Маша, Вася и Петя — пошли в поход. После ужина они решают, кто будет мыть посуду. Петя дежурит один, а Маша с Васей — вдвоём. Значит, нужно выбрать Петю с вероятностью ⅓, а Машу с Васей — с вероятностью ⅔. Под рукой — только честная монетка. Как с её помощью устроить такой жребий?

Когда мы обсуждали эту задачу со студентами, они предложили такой способ. Бросим монету дважды: если выпали два орла — дежурит Петя; если один орёл и одна решка — Маша с Васей; если две решки — перебрасываем

Чтобы выбрать дежурного так, в среднем уходит 8⁄3 броска (чуть позже мы это докажем). Можно ли сделать это быстрее? Существует ли алгоритм, для которого ожидаемое число бросков меньше?

Оказывается, можно придумать простой, но неочевидный метод, позволяющий смоделировать событие с вероятностью ⅓ — и в среднем требует не больше двух бросков. Он называется алгоритмом Кнута–Яо

В этой статье мы пройдём весь путь к этому алгоритму. Начнём с базовых методов, поймем, сколько бросков они требуют в среднем, и найдём границу, быстрее которой не может работать никакой алгоритм. А затем построим тот, который этой границы достигает — оптимальный для вероятности ⅓

В финале мы обобщим эту идею: научимся моделировать любую вероятность p от 0 до 1 — и любое дискретное распределение. Заодно познакомимся с важным понятием, называемым энтропией

А в самом конце, как всегда — красивая задача

Читать далее

Удалённое включение компьютера бесплатно, без SMS и без облаков, с помощью Mikrotik Другая реализация

Level of difficultyEasy
Reading time3 min
Views19K

Расширенное использование средств RouterBoard в домашних условиях используя скрипты для интересных идей

Читать далее

Удалённое включение компьютера бесплатно, без SMS и без облаков, с помощью Mikrotik

Reading time3 min
Views116K
… а также без проброса портов, SSH/telnet и установки сторонних приложений. С любого компьютера, подключённого к интернет и даже с телефона!

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

Разбираемся с работой SAMBA в корпоративном домене

Level of difficultyMedium
Reading time25 min
Views22K

Привет, Хабр!
Меня зовут Александр, я работаю в команде над продуктом ALD Pro.

В статье поговорим о том, как обеспечить надежную работу файлового сервера Samba в больших доменах с Kerberos-аутентификацией и авторизацией через PAC-сертификат, как настроить права доступа на уровне ACL файловой системы, как на самом деле работает стандартная проверка прав доступа "Пользователь-Группа-Остальные" и как расширяется алгоритм при использовании POSIX ACL.

В конце посмотрим возможности нашего файлового менеджера fly-fm и я поделюсь ещё одной своей утилитой aldpro-setfacl, которая позволяет настраивать права доступа к файлам полностью из графического интерфейса

Читать далее

Все о перемещаемых профилях и перенаправлении папок простыми словами

Level of difficultyEasy
Reading time10 min
Views10K

Давно хотел написать про перемещаемые профили, но не было времени. Много в Интернете читал разные отзывы, мнения, комментарии и т. д. Зачастую пишут люди, которые не полностью разобрались в данном вопросе или у них не было практического опыта. Так же много статей и видеороликов, выкладываемых в сеть, были раскрыты не полностью, а в общих чертах. Такое ощущение, что человек сам не до конца понимает сути вопроса (что вряд ли), или считает, что все уже обладают достаточными знаниями и потому многие детали не раскрываются. Пропускались мелочи, на которые стоило бы обратить внимание. Полностью раскрытую тему нигде не нашел, поэтому и решился за написание этой статьи.

Читать далее

Как устроены серийники для Windows, и как восстановить стёршийся COA

Level of difficultyMedium
Reading time9 min
Views27K

Эта история начинается с того, что я попытался переустановить Windows на ноутбуке, доставшемся мне вот с такой наклейкой Certificate of Authenticity (COA): часть символов серийника видны хорошо, остальные – в большей или меньшей степени угадываются; но несколько попыток ввести серийник «на глаз» успехом не увенчались. Пришлось углубляться в вопрос подробнее.

Читать далее

Как Выигрывать в Игре Быки и Коровы (Метод Выбитых Зубов)

Level of difficultyEasy
Reading time2 min
Views4K

Существует старинная народная логическая игра. Называется быки и коровы. Её ещё называют mastermind.

В этом тексте я представил мой алгоритм для поиска решения в этой игре. Я назвал этот метод: Матрица возможных решений.

Суть алгоритма покажу в частном виде, то есть на примере.

Читать далее

Алгоритм сравнения отпечатков пальцев: комбинация классических алгоритмов

Level of difficultyHard
Reading time18 min
Views4.9K

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

Читать далее

Отвязное приключение: в гостях у разработчика «ГЭГ»

Level of difficultyEasy
Reading time13 min
Views8.1K
image

Помните ли вы уникальную игру «ГЭГ: Отвязное приключение»? В своё время она буквально взорвала сознание игроков, предложив нечто совершенно оригинальное и ни на что не похожее. Те, кто хотя бы раз столкнулся с ней, уже никогда не забудут увиденное. Я сам принадлежу к числу тех, кто наблюдал за проектом со стороны, не играя в него самостоятельно, но даже этого было достаточно, чтобы он осталась в моей памяти навсегда, оставив неизгладимый след.
Сегодня я хочу предложить вам эксклюзивное интервью с Ярославом Кемницем – одним из авторов этого знакового для отечественного геймдева проекта. В нём он расскажет историю появления студии «ZES't Corporation», поделится множеством интересных подробностей о создании «ГЭГ: Отвязное приключение», а также забавными воспоминаниями тех лет. Прочитав это интервью, вы узнаете, как раньше создавались игры, в какой атмосфере проходил этот процесс, и получите отличное настроение, окунувшись в ностальгический вайб нашего прошлого. Даже если вы не фанат этой игры или никогда о ней не слышали, это интервью наверняка подарит вам удовольствие и позволит ощутить тёплую атмосферу ушедшей эпохи!
Читать дальше →

Я победил замедление YouTube

Reading time4 min
Views431K

Привет, Хабр! Ухудшение работы YouTube стало поистине трагическим событием, которое прибило почти все загрузчики видео, но я нашел легальный способ улучшить ситуацию! Как починить оборудование Google, не привлекая внимание санитаров.

Читать далее

Что нового в мире обхода блокировок Интернета в середине 2024

Level of difficultyEasy
Reading time13 min
Views175K

Представляю вашему вниманию короткий обзор что же произошло в России и в мире в области цензуры интернета и того, как этому противостоят энтузиасты. На всякий случай напоминаю, что статья «Надежный обход блокировок в 2024: протоколы, клиенты и настройка сервера от простого к сложному» заблокирована на Хабре для пользователей из РФ, но по‑прежнему без проблем открывается через прокси/VPN с иностранных адресов. Ну а мы сейчас разберем, что же изменилось с тех пор.

Сегодня в программе: Замедление YouTube — проблемы с Google Cache или намеренное вредительство? Можно ли заблокировать Shadowsocks и как РКН смог это сделать? Новые транспорты в XRay: HTTPUpgrade и SplitTunnel. Новости из мира Tor, и многое другое.

Читать далее

Повышение живучести SSD за счёт его превращения из QLC в SLC

Level of difficultyMedium
Reading time14 min
Views54K

В этой статье мы займёмся беспрецедентным экспериментом! Я шаг за шагом проведу вас через процесс преобразования SSD на базе QLC NAND в SLC SSD, что позволит значительно повысить его ресурс и общую производительность.

▍ Спецификация испытуемого SSD



На роль испытуемого я выбрал Crucial BX500, который мы уже много раз тестировали, освещая этот процесс как на нашем сайте, так и на YouTube-канале.
Читать дальше →

Delta-Rle-Huffman (DRH) Texture Format

Reading time8 min
Views4.2K

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

Внимание! В статье много картинок.

Кому интересно, добро пожаловать под кат!

Теория вероятностей в машинном обучении. Часть 1: модель регрессии

Reading time28 min
Views31K

В данной статье мы подробно рассмотрим вероятностную постановку задачи машинного обучения: что такое распределение данных, дискриминативная модель, i.i.d.-гипотеза и метод максимизации правдоподобия, что такое регрессия Пуассона и регрессия с оценкой уверенности, и как нормальное распределение связано с минимизацией среднеквадратичного отклонения.

В следующей части рассмотрим метод максимизации правдоподобия в классификации: в чем роль кроссэнтропии, функций сигмоиды и softmax и как кроссэнтропия связана с "расстоянием" между распределениями вероятностей и почему модель регрессии тоже обучается через минимизацию кроссэнтропии. Затем перейдем от метода максимизации правдоподобия к байесовскому выводу и его различным приближениям.

Данная серия статей не является введением в машинное обучение и предполагает знакомство читателя с основными понятиями. Задача статей - рассмотреть машинное обучение с точки зрения теории вероятностей, что позволит по новому взглянуть на проблему, понять связь машинного обучения со статистикой и лучше понимать формулы из научных статей. Также на описанном материале строятся более сложные темы, такие как вариационные автокодировщики (Kingma and Welling, 2013), нейробайесовские методы (Müller et al., 2021) и даже некоторые теории сознания (Friston et al., 2022).

Читать далее

Записываем музыку при помощи CSS Grid

Level of difficultyMedium
Reading time8 min
Views7.1K
Слишком часто я наблюдал за тем, как импровизирующий музыкант трясущимися руками пытается увеличить pdf размером A4 на крошечном экране телефона в самом разгаре исполнения. Мы обязаны создать плавный и отзывчивый рендеринг музыки для веба!

В вебе нотная запись должна быть столь же доступной и плавной, как текст; однако пока это не так, и это уязвляет мои чувства. Давайте решим эту актуальную проблему.

Прототип Scribe


SVG, отрендеренный Scribe 0.2

Несколько лет назад я создал прототип рендерера музыки, который назвал Scribe. Он выполняет преобразование JSON в SVG. Изначально я стремился к созданию адаптивного рендерера музыки. Это было хорошее демо, но для дальнейшего развития пришлось бы писать сложный многопроходный движок генерации макетов, а у меня тогда возникли другие дела.

Вскоре после этого я занялся адаптированием Grid под проекты компании, и тут мне почудилось нечто знакомое: я задался вопросом, а не станет ли он решением некоторых проблем, с которыми я столкнулся при разработке Scribe?
Читать дальше →

Век поиска кратчайшего решения задачи о кратчайшем пути

Level of difficultyMedium
Reading time22 min
Views12K

TL;DR Очень подробный разбор алгоритмов решения задачи о кратчайшем пути от классики до двунаправленного А* и ALT с кодом и примерами на OSM

Люди пытались найти более быстрые способы передвижения на протяжении всей своей истории. Появление качественной дорожной системы в римской империи в своё время привело к её расцвету, но со временем выяснилось, что и в продуманных дорожных системах бывают забавные изъяны, как например в небезызвестной задаче о кёнигсбергских мостах, считающейся отправной точкой возникновения теории графов. Неудивительно и то, что с развитием вычислительной техники логистические задачи стали одними из первых, над которыми трудились первопроходцы компьютерных наук. Задача о кратчайшем пути -- одна из них, звучит достаточно просто: есть несколько городов и дорог, соединяющих пару городов между собой, мы хотим попасть из города А в город Б пройдя при этом минимальное расстояние. Первый системный подход к этой задаче был описан в работе Эгервари в 1931г., спустя 25 лет Эдсгер Дейкстра придумал алгоритм, который сейчас является частью любого уважающего себя базового курса алгоритмов на графах. На нём же, будем честны, заканчиваются знания о кратчайших путях у большинства профессиональных разработчиков, ибо сценариев, где реализации с википедии/stackoverflow будет не хватать, крайне мало.

Может показаться, что на самом деле просто не было существенного прогресса с 60х годов, так как Дейкстра предоставил почти асимптотически оптимальный алгоритм решения задачи. На самом деле нет, прогресс был и придумали много чего интересного, хоть и действительно с того времени фокус сместился на другие задачи. Приглашаю под кат если интересно узнать что такого напридумывали, что используется в современных логистических системах, почему меня огорчает отсутствие учёта флага единства в HOMM3 при расчёте пути, ну и наконец, что за мужики на картинке выше рядом с Дейкстрой?

Читать далее

Самое понятное объяснение Специальной теории относительности

Level of difficultyMedium
Reading time13 min
Views142K

Специальная теория относительности - удивительная теория, которая опровергла многие представления о мире, в которых человечество не сомневалось всю историю своего существования.

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

В этой статье я хочу наглядно показать, что все это проще, чем кажется на первый взгляд.

Для иллюстраций я написал интерактивный визуализатор СТО, работающий в браузере. Ссылка на него и исходники проекта в конце статьи.

Читать далее

Обновление #Net chromium

Level of difficultyEasy
Reading time2 min
Views2.4K

Добрый день. Меня зовут Тимур и я программист.

В прошлой своей статье я рассказал (довольно сумбурно) про свою сборку хромиума которая претендует на то что бы быть важным кирпичиком в web3.0. Продолжаю серию сумбурных статей, я обновил ветку до 122.0.6248.1 билда и выложил уже собранный бинарник (пока только под macOS, винда на подходе)

Скачать бинарь можно по адресу http://172.86.96.172/downloads/hash-net.dmg

Это все еще обычный хромиум, с ним можно спокойно серфить как по обычному интернету так и по #Net. Но для начала нам его нужно немного поднастроить.

Читать далее

Процедурная генерация уровней для двумерного платформера

Level of difficultyEasy
Reading time8 min
Views3.6K

Привет, Хабр. Меня зовут Кирилл. Я увлекаюсь геймдевом в свободное от работы время. В этой статье я поделюсь опытом разработки процедурного генератора миров для своей инди-игры Unsigned Character. Игра представляет собой платформер с бесконечным процедурным миром, который достраивается по мере продвижения игрока. Я попытался реализовать процедурную генерацию, которая выдаёт интересный и разнообразный результат. И во многом это удалось.

Читать далее
1
23 ...

Information

Rating
5,089-th
Location
Коломна, Москва и Московская обл., Россия
Date of birth
Registered
Activity