Pull to refresh
24
0
Семён @scoffs

Fullstack, Open Source, QA

Send message

Управление стейтом с помощью React Hooks – без Redux и Context API

Reading time7 min
Views30K
Всем привет! Меня зовут Артур, я работаю ВКонтакте в команде мобильного веба, занимаюсь проектом VKUI — библиотекой React-компонентов, с помощью которой написаны некоторые наши интерфейсы в мобильных приложениях. Вопрос работы с глобальным стейтом у нас пока открыт. Существует несколько известных подходов: Redux, MobX, Context API. Недавно я наткнулся на статью André Gardi State Management with React Hooks — No Redux or Context API, в которой автор предлагает использовать React Hooks для управления стейтом приложения.

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

image
Читать дальше →
Total votes 17: ↑14 and ↓3+11
Comments19

Знай сложности алгоритмов

Reading time2 min
Views1M
Эта статья рассказывает о времени выполнения и о расходе памяти большинства алгоритмов используемых в информатике. В прошлом, когда я готовился к прохождению собеседования я потратил много времени исследуя интернет для поиска информации о лучшем, среднем и худшем случае работы алгоритмов поиска и сортировки, чтобы заданный вопрос на собеседовании не поставил меня в тупик. За последние несколько лет я проходил интервью в нескольких стартапах из Силиконовой долины, а также в некоторых крупных компаниях таких как Yahoo, eBay, LinkedIn и Google и каждый раз, когда я готовился к интервью, я подумал: «Почему никто не создал хорошую шпаргалку по асимптотической сложности алгоритмов? ». Чтобы сохранить ваше время я создал такую шпаргалку. Наслаждайтесь!
Читать дальше →
Total votes 312: ↑296 and ↓16+280
Comments99

Как посчитать длину текста и не привлекать внимание санитаров

Reading time10 min
Views33K

Привет! Меня зовут Алексей Ивасюта, я фронтенд-разработчик в Авито в кластере Seller Experience. В этой статье я расскажу, как правильно рассчитать длину текста в Java Script. Эта статья будет одинаково полезна как начинающим разработчикам, так и весьма опытным. Благодаря ей вы поймете устройство Unicode и особенности его работы в JS.

Читать далее
Total votes 58: ↑57 and ↓1+71
Comments58

Полное понимание асинхронности в браузере

Reading time24 min
Views104K
Про асинхронность JavaScript написано много статей, документации и книг. Но вся информация сильно распределена по интернету, поэтому сложно быстро и полностью разобраться, что к чему, и составить цельную картину в голове. Не хватает одного исчерпывающего гайда. Именно эту потребность я и хочу закрыть своей статьёй.

Читать дальше →
Total votes 78: ↑78 and ↓0+78
Comments25

Зачем студентам теория графов

Reading time7 min
Views9.1K

Информация об изображении
(Здание кёнигсбергской биржи (построено в 1875 году, сохранилось до сих пор) и Зелёный мост (построен в 1322 году, не сохранился) — «решение Эйлером задачи о кёнигсбергских мостах явилось первым в истории применением теории графов»).

Ранее я уже писал про приложения теории графов: тут и тут.

В этой статье хочу помочь коллеге в теории графов – он пожаловался в комментарии к своей статье, что:
Здесь я попытался в максимально доступной форме объяснить, как же это делать. И в первую очередь я делаю это для студентов, которые изучают данную тему и могут не понимать, зачем вообще графы нужны. Учась, я лично убедился, что для многих эта тема была «проходной» и они не извлекли из нее никакой ценной информации, а также так и не поняли, как работать с матрицами.

На это я ответил:
ИМХО для IT-студентов нужно сразу сказать, что списки (стеки, очереди) и бинарные деревья это графы. И всякие схемы, типа схемы метро, автодорог, принципиальные в электронике можно рассматривать как графы. Приложения теории графов — это фундаментальные свойства всяких подобных схем.

Читать дальше →
Total votes 13: ↑9 and ↓4+6
Comments15

Самый простой способ редактировать PDF

Reading time3 min
Views108K


История сложилась так, что в 80-е годы именно PostScript стал стандартом для цифровых документов, а из него появился «портативный» PDF. Вероятно, нам ещё долго придётся жить с этим наследием типографской индустрии 20 века.

Быстро поставить подпись/печать на полученный PDF и отправить его адресату — самый типичный сценарий в современном документообороте. Практика показывает, что некоторые офисные сотрудники предпочитают распечатать PDF, расписаться от руки — и отсканировать распечатку с подписью, сводя к нулю логику электронного документооборота. Если бумажная копия нужно только для сканирования, то это совершенно бесполезная трата бумаги и времени.

Посмотрим, какие есть варианты для быстрого редактирования PDF с сохранением правок в цифровом виде.
Читать дальше →
Total votes 32: ↑29 and ↓3+35
Comments158

Математика и IT

Reading time18 min
Views42K

Джорджо де Кирико. Великий метафизик (The Grand Metaphysician), 1917.

Если посмотреть список хабов Хабра, то увидим, что в IT можно выделить много направлений. Для этой статьи возьмем классификацию попроще.


1) CS — создание подходов, имеющих научную новизну. Разработка новых алгоритмов. Основная цель: научная новизна, развитие CS, решение проблем CS.


2) Инженерно-конструкторская деятельность – комбинирование уже известных подходов (алгоритмов, ЯП, библиотек, технологий, исходных кодов), их адаптация под конкретную задачу. Основная цель: создание продукта для решения конкретной практической задачи.


3) Техническое обеспечение — решение типовых (зачастую тривиальных) проблем в ходе эксплуатации “железа” и софта. Обеспечение бесперебойной работы ПО и оборудования с учетом возникающих требований.


Очевидно, что в такой классификации риск неудачи убывает в каждом пункте. При работе над новым алгоритмом или устройством обычно невозможно полностью гарантировать успех. При использовании уже известных алгоритмов, языков, технологий, библиотек и готовых деталей машин – вероятность успешного исполнения работы возрастает. В последнем случае (обеспечение ) работник (должность может быть разная: инженер, системный программист, системный администратор и т.д.) исходит из минимизации замен по принципу: “не трогать то, что хорошо работает”.


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


Кому и насколько в IT нужна математика? — Попробуем ответить на этот вопрос (хотя бы частично).

Читать дальше →
Total votes 22: ↑18 and ↓4+21
Comments193

OSINT или разведка по открытым источникам

Reading time26 min
Views145K

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

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

Надеемся, что статья будет полезна как пентестерам и охотникам за ошибками для увеличения области аудита, так и стороне защиты (blue team, application security и т.д.) для защиты инфраструктуры своей организации.

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

OSINT или как посмотреть на свою сеть глазами хакера

Reading time6 min
Views78K


Добрый день! Сегодня я вам расскажу какую информацию об организации можно обнаружить в открытых источниках и как ей может воспользоваться потенциальный злоумышленник. Многие из вас наверняка слышали об OSINT (Open Source INTelligence, перечень мероприятий, направленный на сбор информации из открытых источников), который чаще всего используется для сбора информации о конкретном человеке. Но также OSINT можно использовать для поиска информации о конкретных организациях для оценки защищенности. Ведь согласитесь, полезно посмотреть, что о вас есть в открытом доступе и как вы выглядите со стороны потенциального злоумышленника.
Читать дальше →
Total votes 10: ↑9 and ↓1+11
Comments5

История о том, как я парсер для дневника мастерил

Reading time3 min
Views17K

Год назад я начал писать ботов для всеми любимого Телеграма. На Питоне, конечно. И вот недавно мой сын пошёл в школу, где, как оказалось, был электронный дневник под названием МРКО. Как вы могли догадаться, самая первая мысль — сделать бота (пока для личного пользования), который смог бы присылать в Телеграм оценки, домашнее задание и комментарии. Кому интересно — прошу под кат.


Читать дальше →
Total votes 29: ↑25 and ↓4+21
Comments15

Руководство по реализации отзывчивого дизайна в 2023 году

Level of difficultyMedium
Reading time17 min
Views34K

Сегодня построение отзывчивых макетов уже не основывается на контрольных точках (breakpoints) с фиксированной шириной. Вместо этого современные макеты должны работать на устройствах практически любого размера. Однако, к своему удивлению, я всё ещё встречаю сайты, где используется паттерн отзывчивого дизайна – когда присутствует контейнер, получающий новое значение max-width в соответствии с шириной области просмотра.

Термин «отзывчивый» сегодня отражает уже очень многое. У нас есть медиа-запросы, которые проверяют пользовательские настройки, а также современные возможности CSS, которые помогают создавать отзывчивые макеты вообще без использования медиа-запросов. Отзывчивость нынче изменилась, и мы живём в поистине прекрасное время.
Читать дальше →
Total votes 48: ↑44 and ↓4+57
Comments27

Готовим WebP правильно

Reading time4 min
Views38K
WebPХабр уже насыщен статьями на тему «нового» формата изображений WebP (описание, сравнение с JPEG2000, сравнение с BPG, использование, подключение на сайте). К сожалению, открытыми остаются вопросы: как правильно подключить WebP на сайте, чтобы «все работало», и насколько он лучше (меньше) PNG/JPEG. В этой заметке я буду отвечать на оба вопроса.

Предполагаю, что вы уже в курсе оптимизации изображений, умеете конвертировать изображения в WebP, понимаете разницу между использованием JPEG и PNG на сайте, знаете инструменты ExifTool, jpegtran, mozjpeg, JPEGrescan, optipng, pngcrush, pngwolf, zopflipng и TruePNG, а также различаете пастеризацию молока и постеризацию изображений.

Если все так — то переходим к сути.
Читать дальше →
Total votes 14: ↑12 and ↓2+10
Comments8

Математика самонаводящихся ракет из аниме

Reading time4 min
Views19K

Я создал прототип ракетной атаки! Для этого понадобилась хитрая математика, о которой будет рассказано в этой статье.

Мы поговорим о кубических кривых Безье, шуме Перлина и rotation minimizing frames.
Читать дальше →
Total votes 66: ↑65 and ↓1+75
Comments11

Javascript: базовые вопросы и понятия для самых маленьких

Level of difficultyEasy
Reading time15 min
Views48K

Javascript ― язык весьма оригинальный. Его можно любить, ненавидеть и даже бояться, но равнодушным он вас вряд ли оставит. Не знать или не понимать, с чем ты работаешь ― самая частая ошибка, допускаемая современными фронтенд‑разработчиками. Вам бы понравилось, если бы дантист, к которому вы пришли, не понимал, какой он инструмент использует и какие у него особенности работы? Очевидно, что нет. И рано или поздно, если вы действительно хотите стать профессионалами, вы разберётесь во всём, но как сделать так, чтоб это случилось раньше?

В этой статье в блоге ЛАНИТ хотелось бы показать, что о сложных вещах можно и нужно говорить просто.

Читать далее
Total votes 94: ↑93 and ↓1+115
Comments43

Тёмная тема в React с помощью Redux-toolkit

Reading time7 min
Views6.4K

Эта статья является продолжением статьи Тёмная тема в React с использованием css переменных в scss. Если в прошлый раз мы добавляли темную тему через родной реактовский контекст, то сейчас мы попробуем сделать всё то же самое, но с помощью Redux, точнее redux-toolkit

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

Information

Rating
Does not participate
Location
Томск, Томская обл., Россия
Date of birth
Registered
Activity

Specialization

Fullstack Developer
Junior
From 80,000 ₽
React
TypeScript
Node.js
Vue.js