Pull to refresh
3
0
Власенко Артём @outsidious

User

Send message

Глубокий JS. В память о типах и данных

Level of difficultyHard
Reading time10 min
Views29K

Всех нас учили, что в JavaScript есть примитивные и ссылочные типы данных. Исчерпывающая информация есть в официальной документации, а на просторах интернета полно статей на этот счет.

Теория теорией, однако, JS-код исполняется не в теории, а на практике. Точнее, его компилирует и исполняет движок JS. Таких движков существует несколько, разрабатывались они разными людьми и для разных целей. Было бы наивно предполагать, что все они полностью идентичны друг другу. А значит, время разобраться, как же на самом деле хранятся вполне конкретные данные на вполне конкретном движке JS V8.

Читать далее
Total votes 42: ↑40 and ↓2+51
Comments27

Аутентификация для WebSocket и SSE: до сих пор нет стандарта?

Level of difficultyMedium
Reading time21 min
Views13K

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

В статье разберем особенности аутентификации применительно к протоколу WebSocket и технологии Server-Sent Events, обсудим, какие нюансы могут быть, когда клиентская часть находится в браузере, и на что еще стоит обратить внимание, чтобы избежать неочевидных проблем.

А еще заодно поговорим про уязвимость Cross-Site WebSocket Hijacking (CSWSH) и в целом посмотрим на многие вопросы через призму информационной безопасности.

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

Система типов — лучший друг программиста

Reading time8 min
Views32K

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

Значение в string не лучший тип для записи адреса электронной почты или страны проживания пользователя. Эти значения заслуживают гораздо более богатых и специализированных типов. Мне нужно, чтобы существовал тип данных EmailAddress, который не может быть null. Мне нужна единая точка входа для создания нового объекта этого типа. Он должен валидироваться и нормализироваться перед возвратом нового значения. Мне нужно, чтобы этот тип данных имел полезные методы наподобие .Domain() или .NonAliasValue(), которые бы возвращали для введённого foo+bar@gmail.com значения gmail.com и foo@gmail.com. Эта полезная функциональность должна быть встроена в эти типы. Это обеспечивает безопасность, помогает предотвращать баги и существенно повышает удобство поддержки.
Читать дальше →
Total votes 102: ↑100 and ↓2+116
Comments90

Docker для Angular-приложений: от простого к несложному

Level of difficultyMedium
Reading time16 min
Views5.2K

Привет, Хабр! Меня зовут Артём, я разрабатываю фронтенд систем управления сетью в YADRO. С Docker знаком давно и часто его использую. Но когда столкнулся с задачами, где недостаточно просто скопировать шаблонный Docker-файл и подправить пару строчек, решил больше погрузиться в эту тему. 

В статье я разберу типовые вопросы, связанные с запуском Angular-приложений в контейнерах, — это поможет в дальнейшем справиться с более замысловатыми задачами. Текст будет полезен тем, кто уже что-то знает про Docker, но не углублялся в детали или хочет освежить знания на практике.

Читать далее
Total votes 18: ↑17 and ↓1+18
Comments4

Сто раз сломай, один раз поправь или Как мы улучшали тестирование отказоустойчивости и восстановления API

Reading time11 min
Views6K

Привет, хабровчане!

Меня зовут Нурыев Асхат, я ведущий инженер по автоматизации в DINS. За время работы в компании я участвовал в решении множества сложных задач. В этой статье я поделюсь историей улучшения процесса и автоматизации тестирования высокой доступности и восстановления после отказа подсистемы API, состоящей из множества компонент. 

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

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

Началось все как обычно: одним прекрасным утром ко мне подошел менеджер и спросил, не хочу ли я заняться одной интересной задачей. К тому времени у меня уже был опыт организации перфоманс-тестирования и вообще улучшения процессов в команде, так что я, конечно, согласился. А когда он объяснил, чем именно предстоит заняться, глаза у меня загорелись!  Только подумайте: построить HA тестирование целой подсистемы —  есть где развернуться, проявить изобретательность!

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

Адаптационный чек-лист как инструмент мягкого введения в должность

Reading time14 min
Views74K
Новый сотрудник в компании это стресс как для новичка, так и для компании. Для него все вокруг незнакомое: офис, продукт, команда, технологический стек, процессы. Ко всему этому нужно адаптироваться и разобраться побыстрее так, чтобы не замучить окружающих.

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



Поэтому процесс адаптации важно настроить. Отлаженная система экономит время и ресурсы компании и сотрудников, позволяет ввести новичка в курс дел максимально быстро и начать получать от него результат.

Настроить систему поможет адаптационный чек-лист. Он содержит в себе ключевые аспекты адаптации на разных этапах введения в должность: зоны адаптации, какие навыки и в какой последовательности должен изучить новичок, система наставничества, аттестация и обратная связь. Подробнее о том, что такое чек-лист и как он работает, расскажет Алексей Петров (pifagor_mc).
Total votes 26: ↑25 and ↓1+35
Comments14

OnPush — ваш новый Default

Reading time6 min
Views26K

В Angular есть два режима change detection: Default и OnPush. В этой статье мы разберем, как можно спокойно использовать OnPush всегда без лишнего труда и почему стоит начать это делать.

Поехали!
Total votes 21: ↑21 and ↓0+21
Comments37

Используем DI в Angular по максимуму — концепция частных провайдеров

Reading time7 min
Views34K
В Angular очень мощный механизм Dependency Injection. Он позволяет передавать по вашему приложению любые данные, преобразовывать и переопределять их в нужных частях.

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

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

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


Total votes 25: ↑24 and ↓1+26
Comments25

Observable сервисы в Angular

Reading time7 min
Views16K

Всем привет, меня зовут Владимир. Я занимаюсь фронтенд разработкой в Tinkoff.ru.


В Ангуляре для передачи данных внутри приложения или для инкапсуляции бизнес-логики мы привыкли использовать сервисы. Для управления асинхронными потоками отлично подходит RxJS.


Ангуляр в сочетании с RxJS позволяет писать в декларативном стиле, коротко и ясно. Но иногда мы сталкиваемся со сторонними библиотеками или API, которые используют коллбэки, промисы, тем самым подталкивают нас отступить от привычного стиля и писать императивно.


Цель статьи — показать на примере подобных API, как с помощью RxJS их можно без проблем обернуть в Observable-сервисы. Это поможет достичь удобства использования в Ангуляре. Начнем с Geolocation API.


Читать дальше →
Total votes 19: ↑18 and ↓1+17
Comments19

Сложность алгоритмов. Разбор Big O

Level of difficultyMedium
Reading time14 min
Views76K

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

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

Читать далее
Total votes 20: ↑18 and ↓2+23
Comments17

Возможности Angular DI, о которых почти ничего не сказано в документации

Reading time6 min
Views39K

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

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

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Works in
Date of birth
Registered
Activity

Specialization

Frontend Developer