Pull to refresh
4
0
Александр Гордейко @AxG

Программист

Send message

Как работают функции provide и inject во Vue 3?

Reading time4 min
Views16K

Функции provide и inject во Vue 3 как по мне предлагают интересный подход к реализации паттерна Dependency Injection, однако принцип их работы недостаточно хорошо описан в документации. Они похожи на большой чёрный ящик с магией Vue, хотя на самом деле работают довольно просто. Я во всем разобрался, и хочу рассказать вам.

Читать далее
Total votes 11: ↑11 and ↓0+11
Comments0

Как I2P-роутер работает без выделенного IP-адреса. Магия прямого подключения двух абонентов за NAT-ом

Reading time5 min
Views22K

Модель выхода в сеть через NAT работает только в одну сторону – от пользователя за натом до веб-ресурса. Когда соединение установлено пользователем, веб-сервер может ему отвечать, но, если установленной сессии нет, – до пользователя нельзя достучаться извне, потому что тысячи других абонентов провайдера выходят в сеть под этим же IP-адресом, который по факту не принадлежит никому из них.

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

Читать далее
Total votes 21: ↑21 and ↓0+21
Comments15

Сравнение производительности CSS и CSS-in-JS в реальном мире

Reading time7 min
Views22K
Технология CSS-in-JS заняла прочное место среди инструментов фронтенд-разработки. И возникает ощущение, что CSS-in-JS-тренд в ближайшем будущем лишь усилится. Особенно — в мире React. Например, в исследовании State of CSS, проведённом в 2020 году, приняли участие 11492 человека. Лишь 14,3% из них не слышали о Styled Components (о ведущей CSS-in-JS-библиотеке). А вот пользовались этой библиотекой более 40% участников исследования.



Мне уже давно хотелось найти серьёзный материал, посвящённый сравнению производительности CSS-in-JS-библиотек, вроде Styled Components, и доброго старого CSS. Но я, к сожалению, ничего такого, вроде сравнения их производительности на реальном проекте, а не на каком-то простом наборе тестов, найти не смог. Поэтому я решил сам сделать такое сравнение. Я перевёл реальное приложение со Styled Components на Linaria, на библиотеку, которая выполняет извлечение CSS в файлы во время сборки проекта. В результате в приложении, использующем Linaria, не выполняется генерирование стилей во время работы этого приложения на компьютере пользователя.
Читать дальше →
Total votes 59: ↑59 and ↓0+59
Comments73

30 лет Линукса. Интервью с Линусом Торвальдсом. Часть 1

Reading time23 min
Views37K


Тридцать лет назад Линусу Торвальдсу был 21 год, он был студентом Хельсинского университета. Именно тогда он впервые выпустил ядро Linux. Анонс этого события начинался так: «Я делаю (свободную) операционную систему (просто в качестве хобби, большой и профессиональной она не будет…)». Три десятилетия спустя все топ-500 суперкомпьютеров в мире работают под Linux, равно как и более 70% всех смартфонов. Linux явно стал и большим, и профессиональным. 
Читать дальше →
Total votes 100: ↑99 and ↓1+98
Comments24

30 лет Линукса. Интервью с Линусом Торвальдсом. Часть 2

Reading time6 min
Views16K


Первая часть интервью.

Распределенная система контроля версий Git


Дж.А.: Linux – только первая из ваших работ, глобально повлиявших на мир опенсорса. В 2005 году вы также создали Git, исключительно популярную распределенную систему контроля версий. Вы быстро перенесли дерево исходников ядра Linux из проприетарного хранилища Bitkeeper в новоиспеченный Git, который сделали опенсорсным, и в том же году передали поддержку Git Джунио Хамано. История этих событий увлекательна, расскажите, что побудило вас передать этот проект так быстро, и как вы нашли и выбрали Джунио? 

ЛТ: Итак, ответ на этот вопрос состоит из двух частей.


Во-первых, я совершенно не хотел создавать новую систему контроля исходников.  Linux был создан, так как мне очень интересен низкоуровневый интерфейс между аппаратным и программным обеспечением — в принципе, эта работа была выполнена из любви к предмету и личного интереса. Напротив, Git был создан из необходимости: не потому, что я интересуюсь контролем исходников, а потому что большинство имевшихся на тот момент систем контроля версий вызывали у меня подлинное отвращение, а та единственная, что показалась мне наиболее терпимой и при этом действительно весьма хорошо сочеталась с моделью разработки Linux (BitKeeper) стала несостоятельной.
Читать дальше →
Total votes 47: ↑46 and ↓1+45
Comments7

Переводим на DoH домашнюю сеть, или еще один щелчок по носу фильтрации

Reading time8 min
Views123K

После сравнительно недавнего анонса компанией Mozilla запуска поддержки DNS-over-HTTPS (DoH) в продакшн в сети не утихают споры, зло это или благо. По моим ощущениям, позиция "зло" базируется в основном на том, что при этом манипуляция вашими DNS-запросами даже в полезных для вас целях будет затруднена, поэтому я пока что остаюсь на позиции "благо".
image


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


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


Но переходить на специальный браузер, чтобы обойти перехват DNS — не наш путь. Наш путь — перевести все устройства домашней сети на DoH, быстро, эффективно и без лишних трудозатрат.

Читать дальше →
Total votes 35: ↑33 and ↓2+31
Comments67

Бюджетный дачный интернет

Reading time3 min
Views51K

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

Дано:

• Отсутствие базовых станций мобильного оператора в прямой видимости.
• Нестабильный мобильный интернет на скорости до 2Мбит/c.
• Расстояние до вышки ~2км.
• Щитовой дом внутри которого будет располагаться Wi-Fi роутер.

Читать далее
Total votes 25: ↑23 and ↓2+21
Comments67

Основы управления памятью в JavaScript: как это работает и какие проблемы могут возникнуть

Reading time8 min
Views30K


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

Но рано или поздно разработчикам все же приходится разбираться с проблемами, связанными с памятью — например, утечками. Ну а разобраться с ними получится лишь тогда, когда есть понимание механизма выделения памяти. Эта статья и посвящена объяснениям. В ней также есть советы о самых распространенных видах утечек памяти в JavaScript.
Читать дальше →
Total votes 23: ↑20 and ↓3+17
Comments9

Процесс создания игровой 3D модели Hard Surface

Reading time29 min
Views12K

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

Небольшое отступление, я не буду рассказывать тут как правильно моделировать, или раскрашивать модель, объяснять те или иные решения по дизайну и сетке и т.п. Так же тут не будет информации по анимации, риггинге и т.п. Для этого есть специализированные статьи, и когда будет необходимо, я буду ссылаться на это. Эта статья рассчитана больше для на начинающих, тех кто уже познал основы моделирования но не особо понимает как выглядят все ступени создания игровой модели. Тут будет много информации, хотя иногда она будет не полной, но это будет толчком в нужном направлении, чтобы поискать более полную информацию и поглубже изучить определённые темы. Здесь я расскажу о конкретно моём общем процессе создание модели. Я не претендую на истину в последней инстанции, это то как именно я делаю, то что я наработал за несколько лет работы. Есть десятки других способов делать всё что я тут описываю, и делать быстрее, но база у всех одна, отличаются лишь методы, программы и т.п. Это довольно долгий способ, но универсальный, подходит как для простых моделей, так и для сложных, с минимальными проблемами в процессе. После практики, по скорости будет конечно немного уступать другим, но не сильно, на эту модель ушло 1.5-2 недели, включая разработку дизайна. Тут в основном будет только техническая часть (или как это лучше назвать), проще говоря, что, как и где нажать чтобы получился определённый результат, и за что отвечают определённые кнопки, функции, определения и т.п. Буду стараться объяснять всё подробно. И да, я никогда не писал подобные статьи, это моя первая работа и думаю что последняя, просто был некий порыв написать это. Что-то вроде благодарности, за то что я в своё время учился на таких-же статьях, как на этом сайте, так и на десятке других. И так как учился я в основном на обрывках информации, тут я решил улучшить несколько старых техник и максимально всё собрать вместе. Из-за такого обучения терминология у меня может хромать, хоть и понятна. Так что заранее извиняюсь если будет некомфортно вместо "текстурирование" читать "раскрашивание" и т.п. вещи. И ещё, если с названием "Рис" есть знак "+", то его можно приблизить.

Читать далее
Total votes 11: ↑11 and ↓0+11
Comments10

Жизнь без AppStore и Google Play: работаем с Huawei Mobile Services и AppGallery

Reading time9 min
Views30K

С конца 2019 Huawei поставляет Android-смартфоны без сервисов Google, в том числе без привычного всем магазина приложений Google Play. В качестве альтернативы китайская компания предлагает собственные разработки — Huawei Mobile Services (HMS), а также магазин AppGallery. В этом тексте мы расскажем, как с этим жить и работать.

Читать далее
Total votes 7: ↑7 and ↓0+7
Comments9

Как извлечь пользу из статической типизации

Reading time29 min
Views15K

Эта статья о том, как извлечь максимум пользы из статической системы типов при дизайне вашего кода. Статья пытается быть language agnostic (получается не всегда), примеры на Java и взяты из жизни.

Читать далее
Total votes 47: ↑47 and ↓0+47
Comments68

Valve выпустила Proton 6.3 для запуска Windows-игр под Linux

Reading time2 min
Views25K

Компания Valve продолжает активно работать над совершенствованием своего проекта Proton, который позволяет запускать современные Windows-игры в среде ОC Linux. Запуск проекта состоялся в 2018 году, то есть не так и давно, но с тех пор инструмент неплохо эволюционировал.

Например, в декабре прошлого года компания выпустила 5.13-4 с поддержкой Cyberpunk 2077 — это произошло на следующий день после выхода самой игры. Сейчас вышла новая версия, как водится, еще более функциональная. Что там нового? Давайте посмотрим.
Читать дальше →
Total votes 67: ↑67 and ↓0+67
Comments66

Красной таблетки не существует

Reading time5 min
Views128K

О чем это


Я долгое время был адептом идей о равенстве, свободе и братстве том, что существует красная таблетка.

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

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

Я не сделаю, возможно, в этом посте никаких открытий. Но сэкономлю вам пару лет, если вы решитесь поверить моему опыту.

Читать дальше →
Total votes 355: ↑326 and ↓29+297
Comments348

Некоторые программистские заблуждения о времени

Reading time4 min
Views15K

Наверняка вы уверены, что какие-то — а то и все — из этих утверждений истинны всегда и везде:

  • В сутках всегда 24 часа.
  • Неделя всегда начинается и заканчивается в том же месяце.
  • Неделя (или месяц) всегда начинается и заканчивается в том же году.
  • У времени нет начала и конца.
  • В месяце может быть 28, 29, 30 или 31 день.
  • Високосный год бывает раз в 4 года.
  • В каждом месяце везде всегда одно и то же количество дней.
  • На сервере и на клиенте всегда будет одно и то же время.
  • Можно легко вычислить количество часов и минут начиная с какого-то момента времени.
  • В каждой минуте 60 секунд.

Хотя практика показывает, что полагаться на истинность этих заявлений при разработке ПО — заблуждение. Ну ладно, не все эти пункты относятся к заблуждениям. Некоторые утверждения были бы верны, если бы не досадные баги и пограничные случаи, которых за историю ПО накопилось несметное количество.
Читать дальше →
Total votes 58: ↑42 and ↓16+26
Comments57

Грубая оценка проблемности GitHub-проектов

Reading time4 min
Views3.9K

Здравствуйте, меня зовут Дмитрий Карловский и я… практикую терморектальную ароматерапию. Понимаю, что каждый любит своё болото, и будет защищать его до последней капли жижи. Тем не менее, высокая инженерная культура требует объективности в оценке инструментов.


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


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

Читать дальше →
Total votes 22: ↑10 and ↓12-2
Comments28

13 сюрпризов неайтишной компании

Reading time9 min
Views93K
Отработав много лет в компаниях, занимающихся разработкой программного обеспечения на заказ, невольно начинаешь задумываться — а как всё-таки выглядит вся эта суета с другой стороны, со стороны заказчика? Грешным делом начинает казаться, что там всё просто и понятно, все люди сведущи и профессиональны, решения принимаются осмысленно и обоснованно, да и вообще, жизнь кипит, а не как в этом нашем айтишном болоте…

Пару-тройку лет назад подобные соображения подтолкнули меня попробовать поработать в компании, где источником дохода является что угодно, только не разработка софта. Удачно подвернулось предложение от бывших коллег занять должность IT-директора в одной из ведущих организаций финансовой сферы, и я приступил к кипучей деятельности, браво закатав рукава. Теперь, спустя некоторое время, с высоты, так сказать, полученного опыта, хочу поделиться сюрпризами, что ожидали меня на этом пути – конечно, те, кому уже довелось поработать в разных сферах и разных организациях, скорее всего не обнаружат тут для себя ничего ни нового, ни удивительного, однако для наивных айтишников вроде меня, видавших доселе только однотипные «бодишопы»-аутсорсеры, что-то может показаться и вправду неожиданным.
Итак, поехали
Total votes 185: ↑177 and ↓8+169
Comments251

TypeScript: Раскладываем tsconfig по полочкам. Часть 1

Reading time10 min
Views84K

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

Читать далее
Total votes 30: ↑29 and ↓1+28
Comments4

Короткофокусные и ультракороткофокусные проекторы Epson: какие, зачем и для кого?

Reading time10 min
Views34K
Исторически сложилось так, что когда мы слышим слово «проектор», то представляем себе его вот так:


Сдвиг объектива, широкий диапазон зума – все это делает проекторы гибкими и удобными в установке и эксплуатации, но не решает главной задачи, которая возникает у значительной доли пользователей проекционной техники: как создать проекцию как можно большей максимальной диагонали с минимального расстояния до стены или экрана?

Причина сформировавшегося стереотипа «проектор далеко от экрана» вполне ясна: качественная короткофокусная оптика стоит дорого, поэтому в бюджетных моделях ее не встретишь. Тут, как в случае борьбы VHS с BETACAM цена «решает». К счастью, стереотип != истина, и среди ассортимента проекторов Epson имеются и короткофокусные проекторы, которые ставятся так, как изображено во втором варианте (или даже ближе!)

В данной публикации мы рассмотрим четыре ситуации, когда короткофокусный проектор становится насущной необходимостью, а также коротко пробежимся по линейке КФ и УКФ-проекторов Epson и их предназначению. Всех заинтересованных прошу под кат.
Читать дальше →
Total votes 14: ↑13 and ↓1+12
Comments22

Абстракции в глазах смотрящего

Reading time7 min
Views4.7K

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

К сожалению, маловероятно, что эти споры будут когда-нибудь решены, по одной простой причине — универсального правильного ответа не существует. Простота кода в глазах смотрящего. Точнее, она сильно зависит от способности читающего воспринимать абстракции. То, что одному кажется чрезвычайным усложнением, идеально выразительно и понятно для другого. И оба имеют полное право на восхваление/порицание кода, а любые изменения идут одному из них в ущерб.
Читать дальше →
Total votes 20: ↑20 and ↓0+20
Comments2
1
23 ...

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity