Pull to refresh
2
0

WEB-программист, сетевой администратор

Send message

React Context: создание глобального стора, используя useContext и useState

Reading time4 min
Views22K

Что такое react-контекст?

React Context API - это интерфейс, который позволяет сохранять некоторую величину (переменную или объект), и использовать ее между несколькими компонентами. Под самим же контекстным стором, или как его просто называют - контекстом, понимают эту сохраненную величину.

Интерфейс react-контекста состоит из метода createContext, компонента Context.Provider и хука useContext. 

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

Для чего использовать контекст?

Читать далее
Total votes 6: ↑3 and ↓30
Comments11

Тестирование сообщений в Kafka

Level of difficultyMedium
Reading time5 min
Views5.4K

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

Читать далее
Total votes 4: ↑2 and ↓2+3
Comments0

Kafka для самых маленьких разработчиков, аналитиков и тестировщиков

Level of difficultyEasy
Reading time11 min
Views23K

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

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

Читать далее
Total votes 33: ↑32 and ↓1+39
Comments15

«Всегда закрывай за собой двери!»: краткое пособие по работе с портами

Reading time9 min
Views25K

Открытые порты — это распахнутые двери в вашу инфраструктуру. Сервис, который слушает по ним запросы, обрабатывает входящие данные и реагирует на них в зависимости от заложенной логики. Из-за ошибок на этом уровне возникают уязвимости, которые хактивист может эксплуатировать для нелегитимного доступа к инфраструктуре.

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

Привет! Меня зовут Иван, я ведущий инженер по информационной безопасности в Selectel. Давно хотели научиться настраивать сетевые интерфейсы? Хорошая новость: мы в Selectel запускаем цикл статей по работе с портами в разрезе ИБ. В этом материале разберем, как с помощью различных межсетевых экранов: локальных, облачных и МСЭ в составе NGFW — обеспечить дополнительную защиту сервисов. Подробности под катом!
Читать дальше →
Total votes 38: ↑37 and ↓1+54
Comments6

Не дай мозгу себя обмануть: 5 когнитивных искажений, распространённых в IT

Reading time16 min
Views20K

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

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

Когнитивные ошибки бессознательны. Однако осознание их существования помогает критично относиться к собственному мышлению, отлавливая когнитивные «ловушки» заранее, еще на стадии появления. Ну, и таким образом принимать гораздо более обоснованные решения.

Кстати, ранее в блоге мы уже рассказывали про искажения мышления, связанные со знанием и компетенциями. Теперь настало время раскрыть тему искажений подробнее.

Читать далее
Total votes 45: ↑43 and ↓2+53
Comments13

Что не так со статьями о выгорании

Level of difficultyMedium
Reading time26 min
Views14K

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

Читать далее
Total votes 56: ↑52 and ↓4+58
Comments95

10 кубиков синтаксического сахара

Level of difficultyEasy
Reading time5 min
Views12K

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

Читать далее
Total votes 29: ↑29 and ↓0+37
Comments21

lnav — супернедооценённый инструмент для работы с логами

Reading time6 min
Views16K

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

В мире разработки, системного администрирования и DevOps не смотря на то, что давно существуют и заняли свою нишу инструменты, связанные с централизованным сбором, визуализацией и анализом логов (graylog, ELK/EFK, loki, loggly и другие), всё ещё существует необходимость периодически взять шашку в руки и поработать со старыми/добрыми (а может быть и не очень добрыми) текстовыми логами. За 21 год своей деятельности я успел побыть системным администратором, DevOps инженером, разработчиком, CTO и системным аналитиком, но необходимость периодической работы с логами неизменно присутствовала в том или ином виде всегда. Это может быть разбор вывода нового сервиса или контейнера на машине разработчика, что-то, что ещё не успели завести (или сознательно по каким-либо причинам не завели) на централизованную систему сбора логов или, например, сервис, временно включенный в режиме debug для поиска причин проблемы. Ситуаций бывает много и ситуации бывают разные, а текстовые логи были, есть и ещё долго будут с нами.

Все, кто как-либо связан с DevOps знают про такие утилиты как more, less, tail, head, grep, sed, awk (а кто-то и ещё десяток более специфичных) и при необходимости их используют, но из тех, с кем я общался, никто не подтвердил мне, что знает про lnav. Я и сам не знал и искал нечто подобное более десяти лет. lnav — это не просто швейцарский армейский нож в мире работы с логами, а целый космический корабль, на котором можно улететь в соседнюю галактику. Мой мир разделился на "до" и "после" знакомства с этой утилитой. Там, где раньше требовались часы, а то и десятки часов на анализ логов, теперь хватает считанных минут.

Читать далее
Total votes 46: ↑46 and ↓0+63
Comments22

Собираем бюджетный домашний NAS на 14 ТБ

Level of difficultyMedium
Reading time13 min
Views71K


Начав заниматься фотографией, я быстро ощутил нехватку места на компьютере. Фотографии в RAW имеют большой вес, а про видео говорить ещё страшнее. Решение проблемы очень простое — собрать NAS.

О моём опыте сборки бюджетного NAS на 14 ТБ я напишу далее в статье.
Читать дальше →
Total votes 139: ↑138 and ↓1+170
Comments261

Как работает интернет

Level of difficultyEasy
Reading time30 min
Views82K

Если вы полный ноль в интернет-технологиях, и хотите получить общее понимание Интернета, прочитав всего одну статью, то эта статья - для вас.

Здесь вы узнаете о 4 уровнях модели TCP/IP. О том, что такое MAC-адрес и IP-адрес, и зачем нам 2 типа цифровых адресов. Как работает DNS. Зачем нужны коммутаторы и роутеры. Как работает NAT. Как устанавливается защищённое соединение. Что такое инфраструктура открытых ключей, и зачем нужны TLS-сертификаты. Чем отличаются три версии протокола HTTP. Как происходит HTTP-аутентификация. И в конце будет несколько слов о VPN.

Читать далее
Total votes 103: ↑96 and ↓7+107
Comments61

Как читать код

Level of difficultyEasy
Reading time3 min
Views15K

Моя самая большая мечта при смене работы: узнать все о проекте самостоятельно. Не задать ни одного вопроса, а просто потратить немного времени на изучение материалов.

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

Я совсем не разработчик. Как быстро изучить новый язык программирования?

Читать далее
Total votes 20: ↑14 and ↓6+11
Comments27

Как оптимизировать размер контейнерного образа в Docker

Reading time6 min
Views6.1K

Введение


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

Я для сравнения покажу различные варианты Dockerfile, а в конце этой статьи приведу таблицу, в которой будет показано, образы какого размера получаются из каждого файла. Так вам будет проще оценить, каково влияние от каждого варианта оптимизации.
Читать дальше →
Total votes 11: ↑9 and ↓2+11
Comments6

Советы по программированию, которые бы я дал себе 15 лет назад

Level of difficultyMedium
Reading time8 min
Views31K


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

▍ Если ты (или твоя команда) постоянно стреляешь себе в ногу, то почини ружьё


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

Когда я занимался разработкой для iOS, то использовал CoreData и подписывался на изменения нескольких view. Обратный вызов подписки поступал в тот же поток, из которого было запущено изменение. Иногда это был основной поток, а иногда — фоновый. В разработке для iOS важно то, что вносить изменения в UI можно только в основном потоке, иначе приложение вылетит. Поэтому подписка могла работать нормально, но потом ломалась, когда кто-то запускал изменение из фонового потока или вы позже добавляли обновление UI.

Все без раздумий воспринимали это как что-то само собой разумеющееся, и об этом часто говорили в ревью для новичков в команде. Время от времени кто-нибудь ошибался, и мы добавляли DispatchQueue.main.async, когда видели отчёт о сбое.

Я решил это исправить. У меня ушло десять минут на внесение изменений в слое подписки, теперь подписчики вызывались в основном потоке, что позволило избавиться от целого класса сбоев и сняло с нас часть умственной нагрузки.
Читать дальше →
Total votes 45: ↑43 and ↓2+59
Comments15

Решаем проблему блокировок (и YouTube) за 5 минут на роутере Mikrotik через контейнеры и без VPN

Level of difficultyMedium
Reading time11 min
Views133K

Всем привет! Это моя первая статья на хабре, которая точно кому-то пригодится в данное время. Здесь я расскажу как ускорить ютуб и разблокировать доступ к некоторым заблокированным ресурсам прямо на роутере Mikrotik и без VPN.

В моем случае используется MikroTik hAP ax3. Стоит упомянуть, что подойдут только роутеры с архитектурой ARM, ARM64 или x86 (CHR), которые и поддерживают контейнеры.

Кто подходит под эти условия, велком под кат)

Читать далее
Total votes 109: ↑109 and ↓0+128
Comments222

Мой первый баг: инструменты и ресурсы для начинающих тестировщиков

Level of difficultyEasy
Reading time4 min
Views6.9K

Тестирование — это кропотливый труд. Однако новичкам найти полезные ресурсы бывает сложнее, чем отыскать баг. Решили помочь и попросили коллег-экспертов из Selectel поделиться рекомендациями. Сохраняйте подборку в закладки и делитесь любимчиками в комментариях — превратим статью в хаб полезных материалов!
Читать дальше →
Total votes 32: ↑32 and ↓0+44
Comments0

Неизвестно полезный CSS. Часть 4

Level of difficultyMedium
Reading time6 min
Views7.8K


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


Неважно, верстаете ли вы сайт для малого бизнеса или создаёте супермодное React приложение. Они поддерживаются большинством браузеров. Отдельно отмечу, что я не считаю IE11 современным браузером. По этой причине я не учитывал его.


Сегодня мы рассмотрим:

  • сброс стилей до значений, взятых из веб-стандартов;
  • возврат значений свойств, установленных в браузере;
  • что можно сделать с прыжками контента при открытии и закрытии модального окна;
  • возможность отобразить текст «красиво» с помощью ключевого слова system-ui;
  • способ стилизации элементов на языке, отличающимся от основного.

Больше не буду затягивать. Давайте посмотрим, что я вам подготовил.

Читать дальше →
Total votes 36: ↑36 and ↓0+53
Comments16

SOLID in React

Level of difficultyEasy
Reading time3 min
Views5.3K

Хочется вспомнить SOLID принципы и рассмотреть, как можно их применять в разработке интерфейсов на примере React компонентов.

S: Single Responsibility Principle (Принцип единственной ответственности). Означает, что каждый класс/функция/компонент должны выполнять только одну конкретную задачу.

На примере React компонента: компонент, который отрисовывает пользовательский интерфейс, не должен содержать в себе логику авторизации этого пользователя.

O: Open-Closed Principle (Принцип открытости-закрытости). Означает, что класс/функция/компонент должны быть открыты для расширения, но закрыты для модификации. Чтобы их можно было расширять новым функционалом, не изменяя при этом исходный код.

Читать далее
Total votes 12: ↑7 and ↓5+3
Comments21

Математика надёжности. Доклад Яндекса

Level of difficultyEasy
Reading time18 min
Views12K

Вадим Мартынов, руководитель команды платформы надёжности в Яндекс Go, в своём докладе рассказал, как влияют те или иные решения на надёжность системы и как это учитывать при разработке.

Читать далее
Total votes 76: ↑72 and ↓4+85
Comments28

Как сделать из обычного квартирного домофона IP камеру видеонаблюдения

Level of difficultyHard
Reading time7 min
Views17K

В моей квартире установлен аналоговый домофон Визит, вызывная панель которого оснащена камерой. Этот домофон не современный, а координатный - аналоговый и ему больше 10 лет.

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

Узнаём всё про соседей 👀
Total votes 23: ↑23 and ↓0+33
Comments11

Launcher для GoodbyeDPI – понятный способ обойти все блокировки и восстановить YouTube в России

Level of difficultyEasy
Reading time2 min
Views270K

Сейчас опишу интуитивно понятный способ восстановления работоспособности YouTube и обхождения любых блокировок провайдера на Windows компьютере. Уверен, что статью по указке РКН быстро удалят, так что если тема вам интересна, дочитайте до конца, сразу скачайте себе программу, даже если планируете использовать после. Заносить в закладки особого смысла нет. Ну и ставьте лайк. Отдельно также следует повысить карму ValdikSS - Пользователь / Хабр (habr.com) автору уникального решения GoodbyeDPI, который публиковал статью с описанием своего решения пару недель назад тут: Автономный способ обхода DPI и эффективный способ обхода блокировок сайтов по IP-адресу, теперь там банер РКН и слова «Эта интернет-страница удалена из публичного доступа по юридическим причинам».

Я не буду заново описывать техническое решение GoodbyeDPI, кратко это программа (или служба ОС Windows) позволяющая обнаруживать «заглушки» созданные провайдерами по указанию РКН для блокировки небогоугодных сайтов. Программа бесплатно распространяется на GitHub, является консольной утилитой мало понятной рядовому пользователю. Полное описание и ссылки есть на NNMClub ⚡ Автономный способ обхода DPI и эффективный способ обхода блокировок сайтов по IP-адресу. GoodbyeDPI и ReQrypt + Blockcheck – ресурс, конечно же, заблокирован у вас, если еще не установлен какой-либо способ обхода блокировок.

Сейчас появилось решение в виде графической оболочки для GoodbyeDPI, которое на русском языке позволяет в пару кликов решить проблемы медленного YouTube и не работающих сайтов. Решение Launcher for GoodbyeDPI, это простое окошко настройки к GoodbyeDPI, который также идёт в комплекте. Скачивайте с сайта автора, или с моего зеркала.

Восстановите YouTube и запрещенные сайты
Total votes 207: ↑194 and ↓13+217
Comments181

Information

Rating
Does not participate
Location
Екатеринбург, Свердловская обл., Россия
Date of birth
Registered
Activity