Как стать автором
Обновить
14
0
Николай Рябов @pyatyispyatil

Frontend Developer

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

Нырнуть в Солнце: Миссия Parker Solar Probe

Время на прочтение13 мин
Количество просмотров28K
Существует такая не очень умная шутка: “В телескоп на Солнце можно посмотреть два раза в жизни — правым и левым глазом”. Сложно назвать ее призывом к соблюдению техники безопасности, скорее наоборот, чем больше работающих способов демонстрации Солнца при помощи телескопа ты знаешь, или, чем больше ты лично наблюдал Солнце в телескоп, тем более глупой она кажется. Простые технологии — солнечные фильтры или проекция на экран, позволяют совершенно безопасно любоваться нашим светилом. А более продвинутые технологии и баллистические хитрости позволили созданному человеком аппарату Parker Solar Probe погрузиться непосредственно в Солнце в 2021 году (и да, анекдоты про “полетим ночью” тоже стали смотреться несколько хуже). Об этом мы сегодня и поговорим.


Зонд Parker Solar Probe у Солнца, иллюстрация NASA
Читать дальше →
Всего голосов 80: ↑77 и ↓3+96
Комментарии19

Рисуем генеративные грибы на javascript

Время на прочтение8 мин
Количество просмотров18K

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

Читать далее
Всего голосов 69: ↑66 и ↓3+85
Комментарии12

Docker: заметки веб-разработчика. Итерация третья

Время на прочтение15 мин
Количество просмотров13K


Привет, друзья! Продолжаю делиться с вами заметками о Docker.


Заметки состоят из 4 частей: 2 теоретических и 2 практических. Если быть более конкретным:



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


Репозиторий с кодом приложения.


Если вам это интересно, прошу под кат.

Читать дальше →
Всего голосов 16: ↑13 и ↓3+15
Комментарии7

Основы внутреннего устройства JavaScript

Время на прочтение6 мин
Количество просмотров43K
image

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

Введение


Почти все уже слышали о концепции движка V8 и большинство людей знает, что язык JavaScript однопотоковый или что он использует очередь обратных вызовов.

В этом посте мы подробно разберём эти концепции и объясним, как же работает JavaScript. Благодаря знанию этих подробностей вы сможете писать более оптимальные приложения, надлежащим образом использующие API. Если вы работаете с JavaScript относительно недавно, этот пост поможет вам понять, почему JavaScript настолько «странный» по сравнению с другими языками. А если вы опытный разработчик на JavaScript, то он позволит вам по-новому взглянуть на внутреннее устройство JavaScript Runtime, с которым вы работаете каждый день.
Читать дальше →
Всего голосов 26: ↑23 и ↓3+29
Комментарии5

Как понять, что перед вами плохой разработчик

Время на прочтение12 мин
Количество просмотров179K

Мало просто сменить свою сферу работы на IT, желательно еще и стать хорошим разработчиком. Бывший тимлид и консультант Александр Усков рассказывает, как понять, что перед вами плохой разработчик и что с ним вообще можно делать

В этой статье мы разберем признаки слабых разработчиков, которые можно обнаружить на собеседовании, в ходе совместной работы или даже в процессе неформального разговора в курилке. Важное уточнение — все описанное в нашей статье не стоит рассматривать как чек-лист формальных правил. Это скорее некоторые закономерности, каждая из которых не является гарантией того, что перед вами — «плохой» разработчик. Но, если в одном человеке сочетаются несколько из них, то вероятность этого сильно увеличивается. 

Читать далее
Всего голосов 263: ↑159 и ↓104+93
Комментарии403

Шизофрения: учеба, работа, карьера

Время на прочтение10 мин
Количество просмотров25K

DrSqaer

Друзья, я не в коем случае не хочу обидеть тех кто тут пишет про свой опыт борьбы с болезнью, я имею в виду именно психического характера! Но не могу понять, это просто среди нас айтишников так распространены такие вот диагнозы и это что-то наподобие производственной болезни, или просто мы (айтишники) больше склонны к анализу своего поведения, и пытаемся как-то более осмысленно подойти к тому что происходит в голове? Просто нигде больше не вижу я таких постов, с самостоятельным анализом состояния, методичным анализом ощущений от принимаемых препаратов. Ведь чаще всего люди даже не понимают, что с ними вообще что-то происходит. Ну и опыт родственников показывает, что обычно шизофреник это такой в целом овощь без самокритики.

+5

Читать далее
Всего голосов 27: ↑24 и ↓3+27
Комментарии31

Как мы отказались от JPEG, JSON, TCP и ускорили ВКонтакте в два раза

Время на прочтение24 мин
Количество просмотров168K

На протяжении всей жизни мне приходится экономить вычислительные и сетевые ресурсы: сначала были компьютеры с 300 кГц (кило — не гига!) и 32 Кбайт RAM, интернет по dial-up. Потом я решал олимпиадные задачки. Теперь имею дело с терабайтами трафика и 50 млрд событий в сутки. И хотя современные телефоны в 1 000 раз мощнее любого оборудования двадцатилетней давности, я до сих пор оптимизирую. Думал даже, что это со мной что-то не так. Но потом понял, что все постоянно что-нибудь оптимизируют. 

Эта статья в меньшей степени о том, почему нужно бороться за производительность, и в большей о том, на что сейчас стоит заменить устаревший стек из JPEG, JSON, gzip и TCP — и как это сделать. 

Спойлер: у нас есть решение и мы его не только показываем — ссылки на open source в конце статьи.

Читать далее
Всего голосов 336: ↑324 и ↓12+411
Комментарии300

Мифы и легенды о тестировании

Время на прочтение8 мин
Количество просмотров20K

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

Примечание редакции: тема важная, поэтому в качестве иллюстраций для большей читаемости мы добавили любимые мемы про QA.

Читать далее
Всего голосов 13: ↑13 и ↓0+11
Комментарии4

Незакрытая дверь приводит к возрастанию энтропии Вселенной

Время на прочтение4 мин
Количество просмотров24K

На двери кабинета физики в институте, где я начинал свою трудовую деятельность, висела табличка: «Закрывайте, пожалуйста, дверь. Незакрытая дверь приводит к возрастанию энтропии Вселенной». Народу табличка нравилась, никто не хотел причинять вред Вселенной. Призыв действовал — дверь обычно аккуратно закрывали.

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

Читать далее
Всего голосов 17: ↑12 и ↓5+11
Комментарии15

Рефакторинг продукта как фактор развития компании. Часть 1: история одного проекта

Время на прочтение24 мин
Количество просмотров2.5K

Под катом рассказ моего коллеги по Altenar IT-аналитика Андрея Андрианова в формате “от первого лица” об особенностях нашего рефакторинга.  Надеюсь, что описанный опыт по изменению внутренней структуры кода имеющий целью облегчить понимание его работы будет вам полезен. 

Читать далее
Всего голосов 9: ↑9 и ↓0+9
Комментарии2

NPM монорепозиторий (Lerna + автодеплой GitHub Actions)

Время на прочтение5 мин
Количество просмотров12K

Привет! Мы GrandCore Foundation. Создаём идеальную организацию для развития свободных проектов: ПО, этичных онлайн-сервисов и стандартов изделий. Подробнее читайте здесь. Присоединяйтесь к нашему чату в Telegram. Всегда рады единомышленникам!

Для нашего нового проекта — универсального генератора документации у нас появилась потребность в создании монорепозитория, поскольку функционал генератора будет расширяться плагинами. Ниже читайте как мы полностью автоматизировали данный процесс при помощи GitHub Actions и Lerna.

Читать далее
Всего голосов 5: ↑4 и ↓1+4
Комментарии16

Пользовательские хуки React: зачем нам нужен контекст

Время на прочтение4 мин
Количество просмотров11K

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

Правила для пользовательских React хуков довольно просты:

Пользовательский хук — это функция JavaScript, имя которой начинается с "use" и которая может вызывать другие хуки.

Читать далее
Всего голосов 12: ↑12 и ↓0+12
Комментарии0

Dependency Injection в React — максимально просто

Время на прочтение5 мин
Количество просмотров12K

В интернете немало публикаций на тему реализации Dependency Injection (далее - DI) в React, также существует немало сторонних npm-пакетов, таких как inversify-react, react-simple-di и других. Но, по моему мнению, DI настолько просто реализуется средствами самого React, без дополнительных выкрутасов и boilerplate-кода, что никакая сторонняя библиотека во многих случаях попросту не нужна. В данной небольшой статье я постараюсь обосновать это свое мнение. Примеры кода будут приведены на TypeScript.

Читать далее
Всего голосов 4: ↑4 и ↓0+4
Комментарии27

Module Federation в Webpack 5, плагин для обмена модулями между Javascript приложениями, описание и пример

Время на прочтение4 мин
Количество просмотров47K
В пятой версии сборщика Webpack появился набор плагинов для обмена модулями между Javascript приложениями.

Эта статья — краткое описание и пример на основе двух небольших приложений построенных на фреймворке ReactJS.

Плагин Module Federation позволяет приложению экспортировать один или несколько модулей в отдельный JS файл. Отличный способ строить микрофронтенд приложения. Сторонние приложения могут импортировать себе готовые модули, это могут быть например реакт компоненты. Причём, импорт зависимостей Webpack берёт на себя. Отличие от NPM в том, что импорт в runtime.
Читать дальше →
Всего голосов 4: ↑4 и ↓0+4
Комментарии4

Микрофронтенды: о чем это мы?

Время на прочтение10 мин
Количество просмотров69K
Все эти годы вы, frontend-разработчик, писали монолиты, хотя и понимали, что это дурная привычка. Вы делили свой код на компоненты, использовали require или import и определяли npm-пакеты в package.json или плодили гит-репозитории в вашем проекте, но все равно писали монолит.
Пришло время изменить положение.
Читать дальше →
Всего голосов 23: ↑22 и ↓1+21
Комментарии18

Sparkplug — неоптимизирующий компилятор JavaScript в подробностях

Время на прочтение10 мин
Количество просмотров5.3K

Создать компилятор JS с высокой производительностью означает сделать больше, чем разработать сильно оптимизированный компилятор, например TurboFan, особенно это касается коротких сессий, к примеру, загрузки сайта или инструментов командной строки, когда большая часть работы выполняется до того, как оптимизирующий компилятор получит хотя бы шанс на оптимизацию, не говоря уже о том, чтобы располагать временем на оптимизацию. Как решить эту проблему? К старту курса о Frontend-разработке делимся переводом статьи о Sparkplug — свече зажигания под капотом Chrome 91.

Читать далее
Всего голосов 8: ↑7 и ↓1+9
Комментарии1

Будущее веба: станет ли рендеринг в <canvas> заменой DOM?

Время на прочтение7 мин
Количество просмотров26K
В последнее время было немало горестных рассуждений о последствиях решения Google использовать HTML-элемент <canvas> для рендеринга всего, что видно на экране при работе с Google Docs. И то, что это многих беспокоит, вполне понятно. Когда-то веб был задуман как система для работы с тщательно структурированной информацией, полной осмысленных метаданных и рассчитанной на совместное её использование многими людьми. Но, вместо этого, тот веб, который мы видим сегодня, представляет собой довольно сложно и запутанно устроенные приложения, которые работают в браузерных «песочницах».


Решение Google, которое заключается в том, чтобы перейти от вывода на страницы HTML-элементов к рисованию пикселей на <canvas>, нельзя назвать чем-то таким, чего раньше никто не видел и не пробовал. Другие передовые веб-приложения уже вышли далеко за пределы традиционных схем работы с HTML-элементами. Так, в Google Maps вывод данных на <canvas> используется уже многие годы. В VS Code для отрисовки идеального интерфейса терминала тоже используется <canvas>. А в подающем надежды наборе инструментов Google Flutter, который позволяет создавать кросс-платформенные интерфейсы, в веб-браузере, по умолчанию, используется рендеринг с использованием <canvas>.

Но в этот раз происходящее вызывает несколько иные ощущения. А именно, появляется такое чувство, что рендеринг в <canvas> и другие современные технологии, вроде WebAssembly, увели нас за точку невозврата. Все привыкли к схеме работы, когда страница загружает, в виде обычного текста, JavaScript-код, который выполняется, взаимодействуя с HTML-элементами, видимыми в «инструментах разработчика». Сейчас возникает такое впечатление, что это — лишь небольшой этап на пути постоянно развивающихся технологий веб-разработки.
Читать дальше →
Всего голосов 57: ↑55 и ↓2+70
Комментарии103

12 советов по внедрению TypeScript в React-приложениях

Время на прочтение9 мин
Количество просмотров36K
TypeScript — стандарт современной фронтенд-разработки. Согласно исследованиям State of JavaScript, TS вызывает явный интерес у программистов. По данным опроса за 2019 год, почти 60% респондентов пробовали TS и продолжают использовать, 22% не пробовали и желают изучить.

Эта статья — сборник советов о том, как внедрить и улучшить использование TypeScript. Первая половина советов общая, касающаяся подходов и инфраструктуры. Вторая — несколько особо полезных фишек языка.


Читать дальше →
Всего голосов 60: ↑60 и ↓0+60
Комментарии43

Преобразование графов для процедурной генерации уровней

Время на прочтение4 мин
Количество просмотров5.1K
image

Я много занимался деконструкцией инди-игры 2017 года Unexplored Джориса Дорманса. Она идеально воплощает идею процедурно генерируемых подземелий в стиле Zelda, и я обязан был выяснить, как происходит эта магия. К счастью, основная часть логики генерации написана на специализированном языке PhantomGrammar, поэтому с помощью разработчиков я получил достаточно полное представление о том, как она работает.

Заложенные в Unexplored идеи настолько интересны, что, по моему мнению, заслуживают отдельной статьи. В основе игры лежит концепция преобразования графов, она хорошо изучена с научной точки зрения, но редко используется в играх. Эту статью я целиком посвящу данной технике, а в следующей расскажу о том, как её использует и расширяет PhantomGrammar. Далее я объясню, как эти методики используются в Unexplored для создания столь сложных уровней.
Читать дальше →
Всего голосов 10: ↑9 и ↓1+19
Комментарии3

Заметка о том, как работают хуки в React

Время на прочтение14 мин
Количество просмотров26K


Доброго времени суток, друзья!

Хочу поделиться с вами некоторыми наблюдениями относительно того, как работает React, а именно: предположениями о том, почему хуки нельзя использовать в if, циклах, обычных функциях и т.д. И действительно ли их нельзя использовать подобным образом?

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

Начнем с правил использования хуков.
Всего голосов 11: ↑7 и ↓4+8
Комментарии4

Информация

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

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

Frontend Developer
Lead