Pull to refresh
1
0.3

Пирожочек

Send message

Гессиан больше не нужен. Упрощаем оценку неопределенностей в машинном обучении

Level of difficultyHard
Reading time6 min
Views153

Привет. Меня зовут Макс, с недавнего времени я занимаюсь в AIRI вопросами ИИ для вычислительной химии и физики. А до того работал в научной группе Т‑Банка, где занимался проблемой неопределенности нейронных сетей. Недавно нашу статью «Identity Curvature Laplace Approximation for Improved Out‑of‑Distribution Detection» приняли на WACV 2025 — престижную конференцию по машинному зрению.

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

Подробнее о новом методе — в тексте ниже.

Read more

Java для Sega Mega Drive — возможно ли это?

Level of difficultyMedium
Reading time12 min
Views3.7K

В этом проекте я хотел ответить на вопрос: возможно ли написать игру на Java для Sega Mega Drive/Genesis. Не хочу раскрывать спойлеры, но ответом будет «да».
Несколько лет назад я повстречал проект Java Grinder, который позволяет писать код для различных ретро процессоров на Java, в том числе для Sega Mega Drive. По сути, он интерпретирует байт-код из файлов .class, полученных после компиляции, в код на Ассемблере 68K. Если файлу класса нужны другие файлы классов, то они тоже считываются и обрабатываются. Все вызовы методов API записываются в выходном коде, либо как встроенный ассемблерный код, либо как вызовы предварительно написанных функций, выполняющих свою задачу.

Читать далее

Опыт написания компилятора вручную

Level of difficultyMedium
Reading time9 min
Views7.7K

Компилятор и главный репозиторий: GitHub

Здесь я напишу о своём личном проекте — компиляторе к C-подобному языку. Я не являюсь профессиональным разработчиком, изучал эту тему почти самостоятельно и не читал никакие книги по написанию компиляторов (но читал по операционным системам).

Читать далее

Невидимый вывод grep при поиске, включающим конец строки в файлах с разделителем строк CRLF

Level of difficultyEasy
Reading time6 min
Views1.3K

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

Уже сталкивался с этим, но давно и причину вспомнил не сразу. Пофрустрировав, всё-таки припомнил, разобрался детальнее и решил написать небольшую заметку.

TL;DR: Причина – встреча символа возврата каретки CR (\r) с управляющей последовательностью \x1B[K : CR возвращает курсор в начало строки, а \x1B[K удаляет всё от курсора до конца строки. ОС - Ubuntu 24.04, терминал Terminator 2.1.3, шелл Bash.

Подробности

Стоит ли использовать Python venv в контейнере, таком как Docker? Определённо

Level of difficultyMedium
Reading time6 min
Views6.7K

Стоит ли использовать Python venv в контейнерах, таких как Docker? На первый взгляд может показаться, что это лишний шаг, ведь контейнер уже обеспечивает изоляцию. Но что, если отказ от venv обернётся неожиданными конфликтами, сложностью поддержки и скрытыми рисками для вашего проекта?

Из этой статьи узнаем, почему даже в контейнеризированной среде venv остаётся важным инструментом для обеспечения стабильности и однородности разработки.

Читать далее

CTF и нейросети: опыт решения задач по кибербезопасности с помощью ИИ

Level of difficultyMedium
Reading time7 min
Views1.2K

Всем привет!
Меня зовут Глеб Санин, аналитик данных R&D-лаборатории Центра технологий кибербезопасности ГК «Солар». В этой статье я попробовал разобраться, поможет ли ИИ в решении заданий на CTF-турнирах и с какими ограничениями можно столкнуться в моменте.

О будущем использовании ИИ в CTF, как улучшить взаимодействие человека и «машины» и об этике использования ChatGPT подискутируем в комментариях.

Читать далее

Забудь про XPath и CSS-селекторы: путь от стандартных локаторов к кастомным

Level of difficultyMedium
Reading time8 min
Views2.4K

Локаторы — важная часть автоматизации тестирования. Они позволяют находить элементы на странице для взаимодействия с ними в тестах. Но что делать, если стандартные методы, такие как CSS-селекторы и XPath, становятся громоздкими, ломаются при изменении структуры страницы или не поддерживают уникальные особенности элементов? Решение — кастомные локаторы.

Меня зовут Лёша, и я занимаюсь тестированием в 2ГИС. Моя команда работает над сервисом по бронированию отелей Отелло. В этой статье я расскажу, как использовать кастомные локаторы, чтобы тесты оставались стабильными и поддерживаемыми даже при изменениях в приложении. В примерах я использую Python, но не стоит пугаться, если вы не знакомы с этим языком, каких-то сложных операций мы сегодня выполнять не будем.

Читать далее

Теория категорий для самых маленьких. Введение

Level of difficultyMedium
Reading time5 min
Views4.7K

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

Надеюсь, они также помогут и всем заинтересованным в этой теме :-)

Читать далее

Перестаньте молиться на принципы S.O.L.I.D

Reading time6 min
Views37K

В мире разработки программного обеспечения существует множество "священных коров" — принципов и практик, которые принимаются как данность и редко подвергаются критическому анализу. Особенно показательна ситуация с принципами SOLID на русскоязычных ресурсах: достаточно открыть Хабр, чтобы найти 100500 статей о SOLID, и в каждой из них принципы интерпретируются по-разному.


Само существование такого количества "объяснительных" статей говорит о фундаментальной проблеме: если принципы требуют толкования, значит их названия не являются самодостаточными и интуитивно понятными. А если каждый разработчик понимает принципы по-своему, возникает вопрос — зачем вообще нужны принципы, которые не дают однозначного руководства к действию? Принципы SOLID, предложенные Робертом Мартином, давно стали одной из таких "священных коров". Однако пришло время честно признать: то, как мы используем SOLID сегодня, часто противоречит изначальным идеям и в целом иногда может приносить больше вреда, чем пользы. Зависит от контекста.


SRP не SRP


Самый яркий пример искажения первоначального замысла — это интерпретация принципа единственной ответственности (SRP).

Читать дальше →

Операционная система в 1 000 строках кода (часть 1)

Level of difficultyMedium
Reading time11 min
Views22K

Всем привет! В этой небольшой книге (серии статей, — прим. пер.) мы с нуля, шаг за шагом, напишем скромную ОС.

▍ Навигация по вышедшим частям



Вы можете насторожиться, услышав, что разработка ОС или ядра, в частности, их базовых функций на удивление проста. Даже система Linux, которая воспринимается как масштабный опенсорсный проект, на стадии версии 0.01 включала всего 8 413 строк кода. Сегодня ядро Linux действительно огромно, но начиналось оно, как и типичный хобби-проект, с крохотной базы кода.

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

Но сразу предупрежу — процесс окажется не так прост, как выглядит на первый взгляд. Самой сложной частью создания собственной ОС является отладка. И мы не сможем использовать для этого printf, пока её не реализуем. Здесь вам потребуется освоить различные техники и приёмы отладки, которые в разработке ПО вы никогда не использовали. В частности, начиная «с нуля», вы будете встречать сложные этапы вроде процесса загрузки и страничной организации памяти. Но не пугайтесь, «отлаживать ОС» мы тоже научимся!

Чем сложнее отладка, тем больше радости от получения рабочего продукта. Так что приглашаю вас погрузиться в захватывающий мир разработки операционных систем!
Читать дальше →

Отправляем пуш уведомления в телеграм через Spring Boot

Level of difficultyMedium
Reading time2 min
Views4.6K

Допустим, вы хотите аутентифицировать пользователей через телеграм и после этого отправлять им уведомления. В Spring Boot приложении это сделать довольно просто ✨

Читать далее

Отопление майнингом. Как я грею дом бесплатно и получаю от этого дополнительный доход

Level of difficultyMedium
Reading time3 min
Views346K

2023 год мы с колегой занимаемся монтажом отопления и вдруг на просторах интернета коллега замечает ролик про майнер, который охлаждается водой. Тут приходит одна незамысловатая мысль. Возможно ли будет интегрировать этот аппарат  в систему отопления дома и зимой получать бесплатное отопление. Как оказалось далее, ДА!)
Первые часы был небольшой шок, это вообще законно, греть дом еще и помимо этого получать прибыль с майнинга.

И тут началось изучение интернета и всех видео площадок, материала было не очень много. Никаких полностью рабочих кейсов не было. У многих система работала не стабильно, температура на входе и выходе сильно отличалась, что очень критично для майнера.

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

Читать далее

SOLID на котиках: коротко и по делу

Level of difficultyEasy
Reading time5 min
Views13K

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

В этой статье рассмотрим, как внедрять эти принципы с умом, и да, будет немного котиков — куда без них.

Читать далее

Sega Mega Drive: Музыка, которой не было

Level of difficultyMedium
Reading time22 min
Views11K


Когда Sega Mega Drive только появилась, её звуковой чип YM2612 был значительно недооценён. Но мне удалось выжать из него все соки, заставив музыку и вокал звучать на уровне, о котором в 90-е можно было только мечтать. Конвертация MIDI в формат Mega Drive, совмещение цифрового вокала и FM-музыки — это не просто сложно, а почти невозможно. Здесь есть все детали, раскрывающие, почему в этой, казалось бы, детской приставке похоронена несостоявшаяся музыкальная легенда. В общем, дальше, как в рекламных проспектах: просто кликните на видео ниже и наслаждайтесь эффектом слияния современных знаний и технологий прошлого!
Читать дальше →

Как организовать структуру приложения

Level of difficultyMedium
Reading time11 min
Views4.4K

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

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

Читать далее

Перенос JWT-токенов в куки: Django REST + React

Level of difficultyEasy
Reading time8 min
Views1.4K

Привет, Хабр!

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

Статья будет полезна тем, кто хочет разобраться в реализации авторизации с JWT-токенами в куки с помощью Django REST Framework.

Читать далее

Чёрные очаги в кости вокруг зубов

Reading time9 min
Views4.9K
Чаще всего причина в том, что микробы попали внутрь зуба из кариозной полости или процессе удаления нерва (лечения каналов) из-за его воспаления. Иногда это результат давней травмы, о которой уже и думать забыли.

image
На снимке врач видит примерно такую картинку: чёрное облачко вокруг корня — это и есть периодонтит

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

Кстати, это реальный повод не пропускать профилактические осмотры. Чем раньше врач заметит такую штуку, тем проще её решить, пока это не стало серьёзной проблемой.

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

В общем, профилактика рулит. Каждую пломбу важно периодически проверять. Зубы без нервов — особенно тщательно и на рентгене. Тогда дело до обострения не дойдёт и свои зубы останутся в челюсти дольше.
Читать дальше →

Пишем приложение для SIM-карты

Level of difficultyHard
Reading time12 min
Views26K
Приветствую всех!

Думаю, многим из вас доводилось слышать такое утверждение, что SIM-карта — по сути полноценный специализированный компьютер. А раз симка — это компьютер, то, очевидно, должен быть и софт для него. Как насчёт попробовать что-нибудь написать и заставить это работать прямо на карте? Давайте разбираться.



Итак, в сегодняшней статье поговорим про эту довольно редко упоминающуюся сторону сотовой связи. Узнаем, как писать приложения, чтобы они запускались на всех телефонах, от Nokia 3310 до последних айфонов. Попутно выясним, как загружать их в SIM-карты и насколько сложно это сделать, и, конечно же, напишем наш первый апплет. Традиционно будет много интересного.
Читать дальше →

256 байт веселья, или как развлечь себя Ассемблером когда скучно

Level of difficultyMedium
Reading time15 min
Views26K

Это еще одна статья про демосцену, сайзкодинг, ассемблер, MS‑DOS и ретрокодинг. То есть, о том, как ночами напролет добровольно и бесплатно писать бесполезный и очень трудоемкий код, и получать от этого массу удовольствия (и седую бороду). Даже если вы уже пробовали и вам не понравилось, вам все равно стоит почитать. Возможно, вы что‑то делали не так. Например, использовали не те буквы и цифры. А еще тут есть подборка «демок» размером в 256 байт!

Читать далее

Еще несколько шагов к повышению производительности Firebird

Level of difficultyEasy
Reading time4 min
Views818

Данная статья является второй частью перевода руководства по повышению производительности Firebird за авторством А.Ковязина и Э.Грегорио от 23.05.2024, а так же текстовой расшифровкой соответствующего видео.

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

Information

Rating
1,976-th
Registered
Activity