Функции provide и inject во Vue 3 как по мне предлагают интересный подход к реализации паттерна Dependency Injection, однако принцип их работы недостаточно хорошо описан в документации. Они похожи на большой чёрный ящик с магией Vue, хотя на самом деле работают довольно просто. Я во всем разобрался, и хочу рассказать вам.
Программист
Как I2P-роутер работает без выделенного IP-адреса. Магия прямого подключения двух абонентов за NAT-ом
Модель выхода в сеть через NAT работает только в одну сторону – от пользователя за натом до веб-ресурса. Когда соединение установлено пользователем, веб-сервер может ему отвечать, но, если установленной сессии нет, – до пользователя нельзя достучаться извне, потому что тысячи других абонентов провайдера выходят в сеть под этим же IP-адресом, который по факту не принадлежит никому из них.
В ключе I2P сложность ситуации заключается в том, что скрытая сеть полностью децентрализована и все участники общаются со своими соседями напрямую. Вопрос, на который ответит эта статья: как происходит взаимодействие с пользователями, чьи I2P-роутеры находятся вне прямой доступности для установки соединения.
Сравнение производительности CSS и CSS-in-JS в реальном мире
Мне уже давно хотелось найти серьёзный материал, посвящённый сравнению производительности CSS-in-JS-библиотек, вроде Styled Components, и доброго старого CSS. Но я, к сожалению, ничего такого, вроде сравнения их производительности на реальном проекте, а не на каком-то простом наборе тестов, найти не смог. Поэтому я решил сам сделать такое сравнение. Я перевёл реальное приложение со Styled Components на Linaria, на библиотеку, которая выполняет извлечение CSS в файлы во время сборки проекта. В результате в приложении, использующем Linaria, не выполняется генерирование стилей во время работы этого приложения на компьютере пользователя.
30 лет Линукса. Интервью с Линусом Торвальдсом. Часть 1
Тридцать лет назад Линусу Торвальдсу был 21 год, он был студентом Хельсинского университета. Именно тогда он впервые выпустил ядро Linux. Анонс этого события начинался так: «Я делаю (свободную) операционную систему (просто в качестве хобби, большой и профессиональной она не будет…)». Три десятилетия спустя все топ-500 суперкомпьютеров в мире работают под Linux, равно как и более 70% всех смартфонов. Linux явно стал и большим, и профессиональным.
30 лет Линукса. Интервью с Линусом Торвальдсом. Часть 2
Первая часть интервью.
Распределенная система контроля версий Git
Дж.А.: Linux – только первая из ваших работ, глобально повлиявших на мир опенсорса. В 2005 году вы также создали Git, исключительно популярную распределенную систему контроля версий. Вы быстро перенесли дерево исходников ядра Linux из проприетарного хранилища Bitkeeper в новоиспеченный Git, который сделали опенсорсным, и в том же году передали поддержку Git Джунио Хамано. История этих событий увлекательна, расскажите, что побудило вас передать этот проект так быстро, и как вы нашли и выбрали Джунио?
ЛТ: Итак, ответ на этот вопрос состоит из двух частей.
Во-первых, я совершенно не хотел создавать новую систему контроля исходников. Linux был создан, так как мне очень интересен низкоуровневый интерфейс между аппаратным и программным обеспечением — в принципе, эта работа была выполнена из любви к предмету и личного интереса. Напротив, Git был создан из необходимости: не потому, что я интересуюсь контролем исходников, а потому что большинство имевшихся на тот момент систем контроля версий вызывали у меня подлинное отвращение, а та единственная, что показалась мне наиболее терпимой и при этом действительно весьма хорошо сочеталась с моделью разработки Linux (BitKeeper) стала несостоятельной.
Переводим на DoH домашнюю сеть, или еще один щелчок по носу фильтрации
После сравнительно недавнего анонса компанией Mozilla запуска поддержки DNS-over-HTTPS (DoH) в продакшн в сети не утихают споры, зло это или благо. По моим ощущениям, позиция "зло" базируется в основном на том, что при этом манипуляция вашими DNS-запросами даже в полезных для вас целях будет затруднена, поэтому я пока что остаюсь на позиции "благо".
В Российской Федерации операторы связи, поставленные в очень жесткие условия нашим законодательством, вынуждены строить изощренные многоуровневые системы блокировок доступа к запрещенному Роскомнадзором на территории РФ контенту, на одном из уровней которых более-менее успешно работает перехват DNS-запросов. Использование DoH позволит обойти этот уровень, что в совокупности с использованием VPN может несколько облегчить вам жизнь. Обратите внимание, само по себе решение не может избавить вас от блокировок, потому что вряд ли в России есть провайдер, полагающийся только на фильтрацию через DNS. Вам нужен еще какой-то вариант обойти блокировки, например VPN, один из описанных в моих предыдущих статьях.
Парадоксально, но в текущем паноптикуме оператору связи ничем не грозит ваш обход его блокировок (с использованием специальных средств для этого), поэтому если вы опасаетесь навредить ему таким образом — эти опасения напрасны.
Но переходить на специальный браузер, чтобы обойти перехват DNS — не наш путь. Наш путь — перевести все устройства домашней сети на DoH, быстро, эффективно и без лишних трудозатрат.
Бюджетный дачный интернет
В преддверии дачного сезона решим проблему с устойчивым интернет соединением в рамках ограниченного бюджета.
Дано:
• Отсутствие базовых станций мобильного оператора в прямой видимости.
• Нестабильный мобильный интернет на скорости до 2Мбит/c.
• Расстояние до вышки ~2км.
• Щитовой дом внутри которого будет располагаться Wi-Fi роутер.
Основы управления памятью в JavaScript: как это работает и какие проблемы могут возникнуть
Большинство разработчиков редко задумываются о том, как реализовано управление памятью в JavaScript. Движок обычно делает все за программиста, так что последнему нет смысла размышлять о принципах функционирования механизма управлением памятью.
Но рано или поздно разработчикам все же приходится разбираться с проблемами, связанными с памятью — например, утечками. Ну а разобраться с ними получится лишь тогда, когда есть понимание механизма выделения памяти. Эта статья и посвящена объяснениям. В ней также есть советы о самых распространенных видах утечек памяти в JavaScript.
Процесс создания игровой 3D модели Hard Surface
Решил я тут написать небольшую (огромную) статью, о том как я делаю игровые модели. В общем начал я делать это оружие, и пришла такая мысль, что можно попробовать описать весь процесс, вдруг кому-то пригодиться. Это не только моя первая статья, ещё и моя первая работа в качестве дизайнера.
Небольшое отступление, я не буду рассказывать тут как правильно моделировать, или раскрашивать модель, объяснять те или иные решения по дизайну и сетке и т.п. Так же тут не будет информации по анимации, риггинге и т.п. Для этого есть специализированные статьи, и когда будет необходимо, я буду ссылаться на это. Эта статья рассчитана больше для на начинающих, тех кто уже познал основы моделирования но не особо понимает как выглядят все ступени создания игровой модели. Тут будет много информации, хотя иногда она будет не полной, но это будет толчком в нужном направлении, чтобы поискать более полную информацию и поглубже изучить определённые темы. Здесь я расскажу о конкретно моём общем процессе создание модели. Я не претендую на истину в последней инстанции, это то как именно я делаю, то что я наработал за несколько лет работы. Есть десятки других способов делать всё что я тут описываю, и делать быстрее, но база у всех одна, отличаются лишь методы, программы и т.п. Это довольно долгий способ, но универсальный, подходит как для простых моделей, так и для сложных, с минимальными проблемами в процессе. После практики, по скорости будет конечно немного уступать другим, но не сильно, на эту модель ушло 1.5-2 недели, включая разработку дизайна. Тут в основном будет только техническая часть (или как это лучше назвать), проще говоря, что, как и где нажать чтобы получился определённый результат, и за что отвечают определённые кнопки, функции, определения и т.п. Буду стараться объяснять всё подробно. И да, я никогда не писал подобные статьи, это моя первая работа и думаю что последняя, просто был некий порыв написать это. Что-то вроде благодарности, за то что я в своё время учился на таких-же статьях, как на этом сайте, так и на десятке других. И так как учился я в основном на обрывках информации, тут я решил улучшить несколько старых техник и максимально всё собрать вместе. Из-за такого обучения терминология у меня может хромать, хоть и понятна. Так что заранее извиняюсь если будет некомфортно вместо "текстурирование" читать "раскрашивание" и т.п. вещи. И ещё, если с названием "Рис" есть знак "+", то его можно приблизить.
Жизнь без AppStore и Google Play: работаем с Huawei Mobile Services и AppGallery
С конца 2019 Huawei поставляет Android-смартфоны без сервисов Google, в том числе без привычного всем магазина приложений Google Play. В качестве альтернативы китайская компания предлагает собственные разработки — Huawei Mobile Services (HMS), а также магазин AppGallery. В этом тексте мы расскажем, как с этим жить и работать.
Как извлечь пользу из статической типизации
Эта статья о том, как извлечь максимум пользы из статической системы типов при дизайне вашего кода. Статья пытается быть language agnostic (получается не всегда), примеры на Java и взяты из жизни.
Valve выпустила Proton 6.3 для запуска Windows-игр под Linux
Компания Valve продолжает активно работать над совершенствованием своего проекта Proton, который позволяет запускать современные Windows-игры в среде ОC Linux. Запуск проекта состоялся в 2018 году, то есть не так и давно, но с тех пор инструмент неплохо эволюционировал.
Например, в декабре прошлого года компания выпустила 5.13-4 с поддержкой Cyberpunk 2077 — это произошло на следующий день после выхода самой игры. Сейчас вышла новая версия, как водится, еще более функциональная. Что там нового? Давайте посмотрим.
Qt? ImGUI? wxWidgets? Пишем свое
Привет, хабровчане! Хочу рассказать о своей системе UI, которую я написал для своего игрового движка, на которой делаю редактор для него же.
Красной таблетки не существует
О чем это
Я долгое время был адептом идей о
— Что можно с помощью ООП решить все проблемы масштабирования программ;
— Что с помощью одной методологии можно выстроить разработку проектов;
— Что с помощью нескольких гениальных книг можно научиться проектировать интерфейсы.
На самом деле, после пары десятков проектов я пришел к выводу, что все это — не более чем заблуждения, и чудеса происходят только в книгах авторов, которые делают на своих бестселлерах миллионы. Или в головах консультантов, которые делают деньги, продавая вам фуфло в виде Agile, KPI и прочих умных слов.
Я не сделаю, возможно, в этом посте никаких открытий. Но сэкономлю вам пару лет, если вы решитесь поверить моему опыту.
Некоторые программистские заблуждения о времени
Наверняка вы уверены, что какие-то — а то и все — из этих утверждений истинны всегда и везде:
- В сутках всегда 24 часа.
- Неделя всегда начинается и заканчивается в том же месяце.
- Неделя (или месяц) всегда начинается и заканчивается в том же году.
- У времени нет начала и конца.
- В месяце может быть 28, 29, 30 или 31 день.
- Високосный год бывает раз в 4 года.
- В каждом месяце везде всегда одно и то же количество дней.
- На сервере и на клиенте всегда будет одно и то же время.
- Можно легко вычислить количество часов и минут начиная с какого-то момента времени.
- В каждой минуте 60 секунд.
Хотя практика показывает, что полагаться на истинность этих заявлений при разработке ПО — заблуждение. Ну ладно, не все эти пункты относятся к заблуждениям. Некоторые утверждения были бы верны, если бы не досадные баги и пограничные случаи, которых за историю ПО накопилось несметное количество.
Грубая оценка проблемности GitHub-проектов
Здравствуйте, меня зовут Дмитрий Карловский и я… практикую терморектальную ароматерапию. Понимаю, что каждый любит своё болото, и будет защищать его до последней капли жижи. Тем не менее, высокая инженерная культура требует объективности в оценке инструментов.
Часто для решения одной и той же задачи существует более чем один подходящий по функциональности вариант. При прочих равных, хотелось бы выбрать такой проект, который доставит меньше всего проблем. Но как навскидку оценить объём этих проблем, не тратя несколько человеколет для собственноручного набивания всевозможных шишек?
Что ж, давайте разберём, какие бывают проблемы, как их оценить и посравниваем некоторые популярные проекты.
13 сюрпризов неайтишной компании
Пару-тройку лет назад подобные соображения подтолкнули меня попробовать поработать в компании, где источником дохода является что угодно, только не разработка софта. Удачно подвернулось предложение от бывших коллег занять должность IT-директора в одной из ведущих организаций финансовой сферы, и я приступил к кипучей деятельности, браво закатав рукава. Теперь, спустя некоторое время, с высоты, так сказать, полученного опыта, хочу поделиться сюрпризами, что ожидали меня на этом пути – конечно, те, кому уже довелось поработать в разных сферах и разных организациях, скорее всего не обнаружат тут для себя ничего ни нового, ни удивительного, однако для наивных айтишников вроде меня, видавших доселе только однотипные «бодишопы»-аутсорсеры, что-то может показаться и вправду неожиданным.
TypeScript: Раскладываем tsconfig по полочкам. Часть 1
В данной статье я хочу предоставить переработанную и упорядоченную выжимку документации по настройке tsconfig.json, которая, я уверен, будет полезна тем, кто только начинает свой путь в мире TypeScript или тем, кто до этого момента не нашёл времени и сил, чтобы разобраться в деталях и теперь хочет закрыть этот пробел.
Короткофокусные и ультракороткофокусные проекторы Epson: какие, зачем и для кого?
Сдвиг объектива, широкий диапазон зума – все это делает проекторы гибкими и удобными в установке и эксплуатации, но не решает главной задачи, которая возникает у значительной доли пользователей проекционной техники: как создать проекцию как можно большей максимальной диагонали с минимального расстояния до стены или экрана?
Причина сформировавшегося стереотипа «проектор далеко от экрана» вполне ясна: качественная короткофокусная оптика стоит дорого, поэтому в бюджетных моделях ее не встретишь. Тут, как в случае борьбы VHS с BETACAM цена «решает». К счастью, стереотип != истина, и среди ассортимента проекторов Epson имеются и короткофокусные проекторы, которые ставятся так, как изображено во втором варианте (или даже ближе!)
В данной публикации мы рассмотрим четыре ситуации, когда короткофокусный проектор становится насущной необходимостью, а также коротко пробежимся по линейке КФ и УКФ-проекторов Epson и их предназначению. Всех заинтересованных прошу под кат.
Абстракции в глазах смотрящего
Один из самых часто встречающихся мне споров — спор о выборе нужного уровня абстракции при кодинге. Граница между перегруженностью и ненужной многословностью очень размыта, она стала одним из причин бесконечных дебатов.
К сожалению, маловероятно, что эти споры будут когда-нибудь решены, по одной простой причине — универсального правильного ответа не существует. Простота кода в глазах смотрящего. Точнее, она сильно зависит от способности читающего воспринимать абстракции. То, что одному кажется чрезвычайным усложнением, идеально выразительно и понятно для другого. И оба имеют полное право на восхваление/порицание кода, а любые изменения идут одному из них в ущерб.
Information
- Rating
- Does not participate
- Location
- Санкт-Петербург, Санкт-Петербург и область, Россия
- Date of birth
- Registered
- Activity