Search
Write a publication
Pull to refresh
3
0

Пирожочек

Send message

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

Level of difficultyMedium
Reading time5 min
Views6.5K

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

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

Читать далее

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

Reading time6 min
Views48K

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


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


SRP не SRP


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

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

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

Level of difficultyMedium
Reading time11 min
Views37K

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

▍ Навигация по частям



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

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

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

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

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

Level of difficultyMedium
Reading time2 min
Views5.3K

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

Читать далее

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

Level of difficultyMedium
Reading time3 min
Views362K

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

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

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

Читать далее

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

Level of difficultyEasy
Reading time5 min
Views16K

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

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

Читать далее

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

Level of difficultyMedium
Reading time22 min
Views12K


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

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

Level of difficultyMedium
Reading time11 min
Views8.8K

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

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

Читать далее

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

Level of difficultyEasy
Reading time8 min
Views2.5K

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

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

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

Читать далее

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

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

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

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

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

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

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

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

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

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



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

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

Level of difficultyMedium
Reading time15 min
Views29K

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

Читать далее

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

Level of difficultyEasy
Reading time4 min
Views1.2K

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

Читать далее

Город детства: что будет, если продолжить игру в SimCity 2000 спустя 25 лет

Level of difficultyEasy
Reading time14 min
Views45K
Я питаю тёплые чувства не только к старым компьютерам, но и к ретро-играм, которые на них запускал. Едва ли не главная моя любовь — SimCity 2000, второй в знаменитой линейке градостроительных симуляторов от Maxis. Именно с него в середине 90-х началось моё знакомство с серией. И хотя в дальнейшем я переиграл во все остальные части SimCity, больше всего мне запала в душу именно эта — с изометрической проекцией и невероятно уютной пиксельной графикой.

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

Установка telegrtam-cli в Ubuntu и Debian

Reading time4 min
Views12K

Начну с плюсов и полезных фишек:

1. Самое главное на мой взгляд это легковесность, всего 10мб

2. Меньше движений(всё легко, быстро и красиво)

3. Больше степеней свободы(куча фишек которые не всегда есть в приложениях)

4. Вы можете быть "Призраком"(вы в сети и видите сообщение, но в статусе вы не в сети)

5. Клиент можно установить на самое разное железо, включая такое скромное, как Raspberry Pi или Orange PI(на котором и будут показаны примеры ниже)

Но не всё так легко, кроме плюсов всегда есть минусы:

1. ВСЁ КОМАНДАМИ(это очень часто пугает, и многие могут подумать что это что-то выше их понимания)

2. Всё на английском(хотя я уже держу в планах создание перевода)

3. Надо разбираться, а на это нужно время

Из этого вы уже сами должны решить, есть ли смысл!

Читать далее

OpenVPN & i2pd: VPN через I2P (часть 2)

Reading time8 min
Views22K

В предыдущей статье я описал как сконфигурировать wireguard для работы через I2P. Эту статью можно считать копией с тем отличием, что будем использовать OpenVPN.

Желание попробовать OpenVPN в конфигурации "VPN over I2P" не случайно: в i2pd работа с TCP-туннелями сделана на порядок лучше, чем с UDP (wireguard работает как раз по этому протоколу). При стандартном использовании wireguard намного привлекательнее древнего OpenVPN, но в контексте i2pd и работы с TCP-туннелями, OpenVPN показал отличные результаты: несколько суток стабильной работы с просмотром видео и прочими бытовыми нагрузками не выявили ни единого разрыва.

Ну-ка ну-ка

10 самых интересных ошибок в Java проектах за 2024 год

Level of difficultyMedium
Reading time15 min
Views11K

В 2024 году мы проверили много проектов, о чём регулярно писали в свой блог. Теперь же настала новогодняя пора, и самое время рассказывать новогодние истории. Вот и мы решили поведать о самых интересных Java ошибках, встреченных нами в Open Source проектах.

Читать далее

Пишем свой PyTorch на NumPy. Финал. Запускаем GPT-2

Level of difficultyEasy
Reading time8 min
Views4.3K

PyTorch — это мощный и гибкий фреймворк для машинного обучения, широко используемый для создания нейронных сетей. Он особенно популярен благодаря простоте использования, динамическим вычислительным графам и богатой экосистеме инструментов для обучения моделей. Для использования этого фреймворка, часто достаточно поверхностно понимать работу алгоритмов машинного обучения.

В этой части мы будем писать инференс код для GPT2 на собственной библиотеке!

Читать далее

Mapping классов с помощью плагина MapCraft в Android Studio

Level of difficultyEasy
Reading time2 min
Views1.7K


Лично меня всегда утомляла рутинная работа по созданию mapper-ов между дата классами. Особенно такого кода много, когда пишешь по Clean Artitecture. Разделяя слои. И на каждый слой создаётся куча сущностей. Очень часто в таких ситуациях эти классы просто дублируются.

Читать далее

Одна опция TCP-стека спасет приложение от даунтайма

Level of difficultyHard
Reading time15 min
Views17K

Всем привет, меня зовут Вадим Макеров, я работаю в iSpring бэкенд-разработчиком.
Однажды у нас в продукте был инцидент, который привел к даунтайму LMS и происходил несколько раз, в течении нескольких дней. Причина оказалась нетривиальной и находилась на уровне сетевых настроек подключений между сервисами.

Узнать что за опция спасает от даунтайма

Information

Rating
Does not participate
Registered
Activity