Как стать автором
Обновить
-1
0
Андрей @Amil_Gaoul

Пользователь

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

Работа с событиями на стероидах

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров2.9K

Это будет познавательная статья про одну из самых интересных возможностей Angular, о которой редко вспоминают. Но также это будет и реклама нашей open-source-библиотеки. Поскольку вы, возможно, просто не знаете, насколько она вам нужна. 

За какой-то 1кБ gzip вы сможете улучшить DX во многих различных сценариях, которые мы рассмотрим ниже. Если вы уже знакомы с этой библиотекой, в статье я расскажу про пару новых возможностей.

Как Angular работает с событиями? Что происходит, когда вы пишете (click) в шаблоне? Какая магия обрабатывает клавишу Escape, когда вы подписываетесь на (keydown.esc)? Немного заглянем в исходный код и узнаем про малоизвестный публичный API и как можно использовать его себе во благо.

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

MVP: что это такое и как работает?

Время на прочтение14 мин
Количество просмотров317K
Читая новости про проекты и сервисы, вы могли часто сталкиваться с понятием MVP. Но что скрывается под этой аббревиатурой и почему MVP так часто используют на начальных этапах развития продукта? Давайте прямо сейчас вместе разберемся в этом.

Что собой представляет MVP


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

Ручная установка и настройка Arch Linux — шпаргалка шаг за шагом

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров14K

ARCH


Подготовка к установке


Скачиваем образ дистрибутива Arch Linux


Утилиты для записи образа на флеш-накопитель:


  • Linux — balenaEtcher
  • Windows — Rufus
  • Кроссплатформенный Ventoy (рекомендовано)

Руководство на Habr как записать образ на флеш-накопитель с помощью Ventoy
Видео на YouTube по использованию Ventoy

Читать дальше →
Всего голосов 20: ↑17 и ↓3+18
Комментарии64

Успех тимлида — это успех команды: три ошибки тимлидов в начале пути

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

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

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

Декомпозиция — ваша суперсила

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров10K

Можно долго изучать Angular, оттачивая навыки работы с разными аспектами фреймворка, разбирая паттерны и лучшие практики. Но в конце концов, когда вы станете мастером своего дела, всегда останется умение, которое можно улучшать бесконечно: способность декомпозировать сложные задачи на удобоваримые куски. Это одно из самых важных качеств хорошего архитектора. Если вы чувствуете уверенность в своих знаниях сеньора, я советую вам направить усилия в этом направлении для дальнейшего роста.

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

Читать далее
Всего голосов 27: ↑26 и ↓1+25
Комментарии2

Скрытый потенциал функции inject в Angular

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров4K

Привет! В этой заметке покажу, как можно использовать функцию inject на сто процентов.

Обычно ведь как: если функцией inject и пользуются, то только для того, чтобы заменить инжект через конструктор. Удобно, конечно. Но что, если я скажу, что это не всё, на что способна функция inject? Давайте посмотрим на паре примеров, как ещё её можно использовать.

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

Обобщенные фабрики тайпгардов в TypeScript

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров7.4K

Привет, Хабр! Меня зовут Сергей Соловьев, я разрабатываю интерфейсы международных платежей в Тинькофф Бизнесе. Уверен, многие хотят писать надежный, поддерживаемый, но при этом лаконичный код. Как найти баланс?

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

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

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

Typescript Generics

Уровень сложностиСложный
Время на прочтение8 мин
Количество просмотров7.7K

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

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

При этом написание типов бывает действительно утомительным, но Typescript предоставляет возможности ускорить и этот процесс. Здесь нам на помощь придут дженерики.

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

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

Умный дом на Raspberry Pi и Home Assistant: добавляем диммеры и реле Wiren Board

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров26K

К нам обратился Петр из Минска, который решил рассказать о своем опыте сборки умного дома. Он выбрал популярную платформу Raspberry Pi и интегрировал домашние устройства в Home Assistant.

Но со светом возникли проблемы: Петр запланировал везде диммирование, причем диммеры должны работать, даже когда контроллер выключен. Здесь как раз подошли модули Wiren Board. Но как сделать так, чтобы эти модули заработали под Home Assistant?

Петр установил шлюз Modbus-Ethernet и написал на Python интеграцию модулей Wiren Board в Home Assistant.

Мы посетили умный дом Петра и спешим поделиться с читателями подробностями.

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

Умная квартира айтишника: хотел всё на Wi-Fi, но передумал

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров63K

Артур — айтишник из Минска, который любит все технологичное и современное. После покупки новой квартиры с черновой отделкой все сомнения были отброшены: она будет умной!

Как тогда казалось Артуру, беспроводные технологии — самое передовое и удобное решение для инженерных систем умного дома. Тем более многие кондиционеры, пылесосы, приводы штор, лампы, регуляторы теплых полов и другая бытовая техника поддерживают Wi-Fi «из коробки».

Однако появились аргументы против. В итоге Артур выбрал гибридное решение, сочетающее как проводные технологии, так и Wi-Fi с Zigbee.

В статье мы расскажем о выборе Артура и инженерных системах, которые работают в его умной квартире. Интересно? Ныряйте под кат.

Читать далее
Всего голосов 31: ↑30 и ↓1+31
Комментарии134

Решаем ошибку при миграции на Storybook 7

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров865

Привет, я фронтенд-разработчик в Skyeng. При переходе с шестой версии Storybook на седьмую встретилась ошибка «Providers from the BrowserModule have already been loaded. If you need access to common directives such as NgIf and NgFor, import the CommonModule instead».

В этой статье объясняю, почему возникает баг и как его исправить.

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

Кастомные декораторы в Angular приложениях

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

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

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

Путь развития Frontend разработчика (Вторая часть)

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров13K

Это вторая часть roadmap frontend разработчика, Если вы не читали первую часть, то настоятельно рекомендую ознакомится, Первая часть. В этой статье я продолжу вам рассказывать про мое представление современной карты развития frontend разработчика.

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

Техрадар от ThoughtWorks

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

Добрый день, меня зовут Павел Поляков, я Principal Engineer в каршеринг компании SHARE NOW, в Гамбурге в ?? Германии. А еще я автор Telegram-канала Хороший разработчик знает, где рассказываю обо всем, что должен знать хороший разработчик.

Сегодня я хочу поговорить Technology Radar от ThoughtWorks, как он помогает при выборе технологий и какие новости нам принес недавний выпуск.

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

Сравнение utility types библиотек или тайпскрипт на стероидах

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

Буквально за несколько лет typesctipt стал практически мастхэв в современной фронтэнд-разработке (и не только). Язык типов, работающих поверх языка javascript, который сам по себе является языком со слабой динамической типизацией со всеми вытекающими (отсутствие достойного тайп-хинтинга в редакторах, строгой проверки в анализаторах кода и прочее), нивелировал большинство из недостатков слабой типизации.

Чем такой инструмент не является обычной посадкой строгой статической типизации на динамически типизированный язык, как она есть в C#, Java, Kotlin и так далее...? Что такое типы утилиты? И какие решения всерьез могут облегчить жизнь разработчикам?

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

Умный дом в панельной хрущёвке

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров44K

Сразу признаюсь, что слово «хрущёвка» в этом тексте – скорее хук в заголовке. Правильнее было бы сказать, что я просто описываю свой опыт создания умного дома в обычной среднестатистической квартире городского жителя РФ, который я проживаю прямо сейчас.

Статья будет состоять из двух частей: первая – постановка задачи, ресерч, планы, выбор; вторая – реализация, опыт использования, ошибки и корректировки.

Читать далее
Всего голосов 70: ↑65 и ↓5+77
Комментарии252

Зачем инженеру выступать на конференции, если за это больше не платят

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров5.9K

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

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

И голос «зачем этим заниматься, если это недооценивают» сегодня слышен довольно громко. Но программному комитету есть, что ответить.

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

Анализируем виды тестов для Frontend

Уровень сложностиПростой
Время на прочтение14 мин
Количество просмотров8K

С развитием веба сайты превратились в сложные приложения, которыми ежедневно пользуются десятки и сотни миллионов людей: почта, облачные хранилища, соцсети, маркетплейсы, стриминговые платформы и т. д. И каждое из них должно работать корректно. Как это сделать? Конечно писать хороший код, а потом и тестировать его. Хотя кто‑то обходится без тестов, тем не менее тестирование — важная часть инженерных практик наравне с мониторингом. Оно помогает нам заблаговременно находить и исправлять баги (или незапланированные фичи) в приложениях. Основная цель тестирования — получить гарантию корректной работы любого ПО .

При этом тестировать современный фронтенд сложно: неуправляемая асинхронность (событийная модель браузера), различие браузеров, тяжелое окружение — это лишь малая часть сложностей. Можно ли все возложить на ручных тестировщиков или исправлять баги после жалоб пользователей? Однозначно нет. В большинстве случаев такой подход в скором времени приведет к оттоку пользователей: не все пишут о багах, просто уходят к конкурентам. Безусловно, ручное тестирование остается важным элементом разработки, но тестировщики не могут держать сотни или тысячи сценариев, которые нужно пройти перед релизом или запуском новой фичи. Так где нам получить гарантии, что ключевые сценарии приложения работают корректно? Автоматическое тестирование.

Всем привет! Меня зовут Миша, работаю фронтэнд‑разработчиком в VK в команде Облака Mail.ru, и я хочу разобрать различные виды тестов, дать их сравнительный анализ и применимость. Сразу скажу, тут не будет практики написания тестов. Потому что это нереально сделать внутри одной статьи, необходимо разобрать: теорию тестирования, классов эквивалентности, различие подходов/методов к тестированию, комбинаторику состояний, правильное использование моков и стабов, понимание чистых функций, знание архитектуры приложения. Поэтому предлагаю сконцентрироваться на видах тестирования и начать с «идеального теста».

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

Убираем YouTube Shorts из браузера

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров17K

Избавьтесь от YouTube Shorts в вашем браузере с помощью расширения Ublock Origin и ряда простых и незамысловатых шагов

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

Как я придумал 20 проектов и собрал портфолио

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров26K

Привет, Хабр! Сегодня расскажу, как сделал несколько десятков пет-проектов, научился работать с другими программистами, решать конфликты на GitHub и даже попробовал себя в роли тимлида. 

Меня зовут Абузар Мамедов, я студент курса «Фронтенд-разработчик» в Яндекс Практикуме, а этими проектами я занимался во время учёбы. Текст может быть полезен новичкам, которые хотят больше практиковаться и найти идеи для собственных проектов. 

В статье я подробнее расскажу о трёх проектах: генератор резюме с динамическим заполнением и SPA-приложение интернет-магазина и ещё одно приложение на React для поиска GIF. Чтобы понять, что можно улучшить, наставник курса Алексей Гмитрон оценил их качество и поделился мыслями.

Читать далее
Всего голосов 13: ↑6 и ↓7+1
Комментарии6
1
23 ...

Информация

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

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

Frontend Developer
Lead
От 300 000 ₽
Git
Linux
JavaScript
Angular
HTML
Adaptive layout
CSS
SCSS
BEM
Web development