Обновить
-1
0
Михаил@MuKPo6

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

Отправить сообщение

Детальный React. Реконсиляция, рендеры, Fiber, виртуальное дерево

Уровень сложностиСложный
Время на прочтение19 мин
Охват и читатели34K

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

На момент написания статьи, последняя стабильная версия React 18.2.0. За 10 лет разработчики Facebook проделали колосальный объем работы, было реализовано много фич и сделано не мало оптимизаций. За эти годы, так же, происходили и кардинальные архитектурные изменения. Очевидно, одной статьи мало, чтобы покрыть всю механику React, поэтому, данная публикация станет первой в серии статей о внутреннем устройстве React. Здесь мы познакомимся с основными сущностями и архитектурными решениями.

Читать далее

Как GameDev-специалисту защитить свои права на продукт? Практические рекомендации от юристов

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели1.8K

Как создателю игры приобрести право использования всех составляющих элементов игры, право на игру в целом и избежать юридических рисков? Публикуем подробную инструкцию от GameDev-юристов

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

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

Читать далее

Абсолютный минимум об Unicode на 2023 год (всё ещё — никаких оправданий!)

Уровень сложностиСредний
Время на прочтение18 мин
Охват и читатели22K

Двадцать лет назад Джоэл Спольски написал: «Не существует такой штуки, как «обычный текст». Если имеется строка, но неизвестно, какую кодировку символов она использует — смысла в этой строке нет. Больше нельзя спрятать голову в песок и притвориться, что «обычный» текст имеет кодировку ASCII.»

Многое изменилось за 20 лет. В 2003 году главный вопрос звучал так: «Что это за кодировка?». В 2023 году такой вопрос больше не стоит: с вероятностью в 98% это — UTF-8. Наконец то! Можно снова спрятать голову в песок!

Читать далее

GNU Shepherd — что это за альтернатива systemD?

Время на прочтение10 мин
Охват и читатели11K

Привет, хабр! На связи Аргентум. Сегодня мы поговорим о системах инициализации в Linux, а точнее - об малоизвестной GNU Shepherd.

Мы изучим самые популярные известные системы инициализации - и попытаемся изучить GNU Shepherd.

Ну, друзья, да благословит нас Столлман!

Вперёд!

Простой и удобный шаблон для bash-скриптов выполняемых по расписанию

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели31K

Хочу поделиться с сообществом простым и полезным шаблоном скрипта-обёртки на bash для запуска заданий по cron (а сейчас и systemd timers), который моя команда повсеместно использует много лет.

Сначала пара слов о том зачем это нужно, какие проблемы решает. С самого начала моей работы системным администратором linux, я обнаружил, что cron не очень удобный планировщик задач. При этом практически безальтернативный. Чем больше становился мой парк серверов и виртуальных машин, тем больше я получал абсолютно бесполезных почтовых сообщений "From: Cron Daemon". Задание завершилось с ошибкой - cron напишет об этом. Задание выполнено успешно, но напечатало что-нибудь в STDOUT/STDERR - cron всё равно напишет об этом. При этом даже нельзя отформатировать тему почтового сообщения для удобной автосортировки. Сначала были годы борьбы с использованием разных вариаций из > /dev/null, 2> /dev/null, > /dev/null 2>&1, | mail -E -s '<Subject>' root@.

Читать далее

Вдыхайте DIY: Создаем собственную умную вентиляцию для дома

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели58K


Зачем всё это?


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

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

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

Рекомендации по ведению SQL-кода

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели27K
В этом материале разберем общие рекомендации по ведению SQL-кода на примере СУБД MS SQL (T-SQL). Однако, многие пункты можно также применить и к другим СУБД.
Читать дальше →

Онлайн визуализация алгоритмов: жадного, Дейкстры, A* и двунаправленного поиска

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели11K

В прошлых публикациях на Хабре я находил все жилые дома в пешей доступности от входов в метро и МЦК и жилье в 500м от сетевых продуктовых магазинов в Москве.

Когда настал момент объединить все метрики для мегаполиса, включая пешеходные расстояния и экологию в единую модель, то производительность расчетов стала упираться в вычисления маршрутов внутри GraphHopper.

И в этот же день в чате OpenStreetMap RU появляется ссылка на проект honzaap Pathfinding, который визуализирует алгоритмы поиска кратчайшего маршрута и еще делает анимацию по шагам на реальных данных в карте прямо в браузере. Поделюсь с вами примерами визуализаций поиска маршрута для прогулки из Серебряного Бора в Большой театр в Москве.

Читать далее

Безотказные очереди в RabbitMQ: Гарантированная доставка сообщений

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели22K

RabbitMQ - это открытая реализация протокола AMQP (Advanced Message Queuing Protocol), является мощным и гибким брокером сообщений. Он обеспечивает надежное и эффективное взаимодействие между компонентами системы, предоставляя разработчикам инструменты для создания гибких и масштабируемых архитектур.

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

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

Читать далее

Откуда брать идеи для пет-проектов

Уровень сложностиПростой
Время на прочтение2 мин
Охват и читатели26K

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

Читать далее

Введение в Чистую архитектуру через 6 кругов рефакторинга

Уровень сложностиСредний
Время на прочтение15 мин
Охват и читатели49K

Разделяй и влавствуй, или как провести клининг легаси-кода GoLang.

Этот пост является частью большого цикла статей, в которых мы демонстрируем, как создавать приложения на Go, которые легко разрабатывать, поддерживать и с которыми приятно работать в долгосрочной перспективе. Мы делаем это, делясь проверенными методами, основанными на множестве экспериментов с командами, которыми мы руководили, и научных исследованиях («при съёмках фильма ни одно животное не пострадало»).

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

Что касается подхода к «чистой» архитектуре, описываемого далее, то это симбиоз двух идей: разделение Ports и Adapters, а также контроль за тем, как пакеты ссылаются друг на друга...

Оставь надежду, всяк сюда входящий

Делаем «router-on-a-stick» в linux namespaces

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели8.7K


Не буду томить вас долгим вступлением. Ниже подробное описание этой реализации.

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

Как я создал свою первую 2D игру

Время на прочтение2 мин
Охват и читатели6.1K

Привет всем! Я хотел бы поделиться своим небольшим опытом создания простой 2D игры.

Если вы следили за моими предыдущими постами, то знаете, что помимо программирования я увлекаюсь музыкой. И вот, когда я записывал свой альбом в стиле Synthwave, меня посетила идея: "Эта музыка подошла бы для космической игры. Было бы здорово, если бы кто-то использовал ее как фоновую музыку в игре. Подожди-ка, я же умею программировать. Я могу создать такую игру сам и использовать свою музыку для нее." И я начал искать движок на котором можно было бы реализовать мою идею.

Unity я не хотел использовать. Хотелось что то по проще и одном из постов в телеграмме я увидел рекламу движка PointJS. Зашел на сайт, почитал, посмотрел как с ним работать(у автора есть свой ютуб канал с уроками). Выяснилось что у движка есть своя IDE. Мне понравилось и я захотелось поддержать отечественного производителя(автор проекта из России). Короче говоря, я ее купил. И это не реклама!!!

Читать далее

Аэропоника — это сложно

Уровень сложностиПростой
Время на прочтение19 мин
Охват и читатели42K

Аэропоника — перспективный и эффективный способ выращивания растений. Такие выводы я сделал, начитавшись статей. Я только что успешно вырастил на балконе клубнику и полон энтузиазма двигаться дальше. Я берусь за аэропонику. Кажется, что это не сложно, надо, всего лишь, вместо размещения растений в земле, разместить их в каких-нибудь ёмкостях и распылять раствор на корни. Это привело меня к эпопее с клубникой в контейнере (1, 2, 3) и ряду экспериментов с аэропоникой, о которых я ещё не писал. За это время у меня накопился некоторый багаж знаний относительно аэропоники, им я и буду делиться в этом посте.

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

Читать далее

Event Loop в деталях

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели137K

В данной статье поговорим о том, почему Event Loop вообще был создан, как с ним работать и почему про него спрашивают на собесах.

JS был спроектирован как однопоточный язык программирования. Это значит, что он может выполнять только одну операцию одновременно. Тем не менее у JavaScript есть такой механизм как Event Loop, который как раз и позволяет выполнять "асинхронные" операции. Почему "асинхронные" в кавычках? Да просто потому что JavaScript тоже выполняет их синхронно, асинхронности в самом JavaScript как таковой нет. Вперед под кат, будем разбираться)

Promise.then()

Неортодоксальный Eloquent. Часть 1

Уровень сложностиСредний
Время на прочтение16 мин
Охват и читатели10K

Eloquent - это мощный и умный инструмент, нравящийся многим своими возможностями. Он позволяет с лёгкостью выполнять операции с базами данных, сохраняя при этом простоту использования. Реализуя паттерн Active Record (AR), описанный Фаулером в книге "PoEAA", является одним из лучших реализаций на сегодняшний день.

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

Как и все существующие инструменты, у Eloquent имеются свои нюансы. Как ответственные разработчики, мы всегда должны помнить о том, на что соглашаемся. Если Вы хотите узнать больше об AR и философии её разработки, очень рекомендую статью Шона МакКула.

Читать далее

Кто такой архитектор ПО и как им стать

Время на прочтение11 мин
Охват и читатели47K

Всем привет! Меня зовут Виктор Василенко, я техлид и Solution-архитектор. Я работал в Яндексе и X5 Group и уже не первый год сотрудничаю с Практикумом. Я делюсь опытом на курсах «Алгоритмы и структуры данных» и «Асинхронное программирование на Python».

Архитектор ПО — это специалист, ответственный за проектирование структуры и организацию системы или продукта. Роль архитектора в IT-компании включает в себя не только технические задачи, но часто и коммуникационные и организационные обязанности. Также архитектор является промежуточным звеном между бизнес-процессами и технологическими решениями.

Пока что индустрия не может чётко определить эту деятельность как профессию. В общероссийском классификаторе профессий ОКПДТР архитектор встречается скорее ландшафтный, чем программного обеспечения. В вузах вы не сможете найти специальность «Архитектура программного обеспечения». 

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

В этой статье я хочу поделиться своим видением роли архитектора ПО и рассказать:

Кто такой архитектор ПО и какие они бывают;

Чем занимается архитектор решений в компаниях разного масштаба;

Чем отличаются инженеры от архитекторов ПО;

Какие обычно задачи стоят перед архитектором ПО;

Конкретно: какие нужны навыки и компетенции;

Как перейти из инженера на позицию архитектора.

Читать далее

Организация кода в Laravel. Личный опыт

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели28K

Hola Amigos! На связи Евгений Шмулевский, PHP-разработчик в Amiga. Начал заниматься программированием с 2001 года, привет Basic и Express/Turbo Pascal. Веб-разработкой — с 2011 года, а профессионально в вебе с 2013 года. Работал продолжительное время с Битрикс, а с 2018 начал осваивать Laravel. 

Читать далее

Как разработчику выучить английский язык до высокого уровня для релокации (и не только)?

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели40K

Всем привет! Сегодня, я хочу поделиться с вами своим личным опытом изучения английского языка с нуля. Данная статья будет полезна как людям только начинающим свой путь в мир прекрасного английского, так и уже погруженным с головой в изучение языка. В данной статье, я расскажу вам о базовых, но крайне полезных, принципах процесса обучения из своего личного опыта. Мой личный опыт был не самым простым, так как интенсивно изучать английский язык я начал в возрасте в 16ти лет, а не с раннего детства, как многие, сменив на своем пути порядка 5ти репетиторов. Однако, уже в 23 года, я смог получить диплом Магистра международных отношений и европейской политики на английском языке в одном из престижных вузов Европы.

Итак, с чего же стоит начать изучение, если ваш уровень новичка? Самая большая ошибка, которая отбивает желание у людей изучать язык еще в школе - это начать изучение с грамматики. Поверьте, ничего скучнее просто представить невозможно, когда вы не обладаете достаточным словарным запасом и толком даже не понимаете, какие предложения составляете, когда ваш преподаватель заставляет вас зацикливаться на Present Perfect, Present Continuous и прочих совершенно непонятных для начинающего вещах. Спросите меня сейчас и я с трудом смогу вспомнить названия всех этих времен, хотя давным давно, на интуитивном уровне, научился их использовать, без особого труда.

Грамматика - это важно, однако, нет никакого смысла сидеть над ней часами, заучивая структуры каждого времени. Переходить к изучении грамматики стоит чуть позже, на уровне А2-B1, когда вы уже начнете обладать достаточным уровнем словарного запаса. И опять же, не нужно пытаться заучить все наизусть. Постарайтесь понять суть каждого из времен, а дальше с практикой вы поймете как данные связки начнут воспроизводиться вашим мозгом сами по себе.

Читать далее

Квантовые компьютеры. С точки зрения традиционного программиста-математика. Часть 4

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели4.9K

В прошлой части мы рассмотрели двухкубитные гейты и построили какие то элементарные программы на двухкубитных гейтах.
Разберем некоторые полезные программы, которые состоят из двух или более разъединенных удаленных друг от друга частей, связанных между собой только предварительно запутанными кубитами и классическими средствами связи: телефоном, телеграфом, бумажным письмом и т.п. Например, один запутанный кубит отправляется на Луну, другой остается на Земле. Основной результат действия таких программ заключается в том, что предварительно запутанные кубиты, разделенные расстоянием, участвуют во взаимодействии с другими независимыми кубитами (взятыми уже на месте - на Луне и Земле), запутывая их в свою очередь, что в итоге такого взаимодействия получается общая связанная запутанная система, несмотря на разделенность расстоянием.

Читать далее

Информация

В рейтинге
Не участвует
Откуда
Одинцово, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Фулстек разработчик, Веб-разработчик
Ведущий
Git
Linux
ООП
PHP
MySQL