Search
Write a publication
Pull to refresh
62
0

Программист

Send message

Различные способы передачи данных в компоненты Angular

Reading time3 min
Views4K
Привет, Хабр! Представляю вашему вниманию перевод статьи «Different Ways to Pass Inputs to a Component in Angular» автора Netanel Basal.

image

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

Создадим компонент select, который получает следующие входные данные — size и placement.

Использование Inputs


Первый метод, с которым мы все знакомы — использование декорантора Input.

@Component({
  selector: 'app-select',
  template: `
    <p><b>Size</b> {{ size }}</p>
    <p><b>Placement:</b> {{ placement }}</p>    
    `
})
export class SelectComponent {
  @Input() size: 'sm' | 'md' | 'lg' = 'md';
  @Input() placement: 'top' | 'bottom' | 'right' | 'left'  = 'bottom'
}

И этот код отлично работает, за исключением того, что он не такой гибкий. Например нам нужно задать переменной size значение large для любого select в нашем приложении. Таким образом мы должны разрешить клиетну переписать любой input на глобальном уровне.

Использование зависимости Injection


Для этого мы можем использовать функцию внедрения зависимостей Angular.

import { InjectionToken, Injectable } from '@angular/core';

@Injectable({ providedIn: 'root' })
export class SelectConfig {
  size: 'sm' | 'md' | 'lg' = 'md'
  placement: 'top' | 'bottom' | 'right' | 'left' = 'bottom';
}

export function setSelectConfig(config: Partial<SelectConfig>) {
  return {
    ...new SelectConfig(),
    ...config
  }
}

Для начала нам нужно создать конфигурацию провайдера. Этот провайдер может быть использован как token, type, а также задавать значения по умолчанию для каждого input. Используем это в нашем компоненте select:
Читать дальше →

О хранении JWT токенов в браузерах

Reading time3 min
Views68K

Открытый стандарт JWT официально появился в 2015 (rfc7519) обещая интересные особенности и широкие перспективы. Правильное хранение Access токена является жизненно важным вопросов при построении системы авторизации и аутентификации в современном Web, где становятся все популярнее сайты, построенные по технологии SPA.

Неправильное хранение токенов ведет к их краже и переиспользованию злоумышленниками.
Читать дальше →

10 расширений для VS Code, без которых я не могу программировать

Reading time3 min
Views160K
VS Code — мой любимый редактор кода. Это — самый популярный из существующих редакторов, возможности которого можно расширять практически до бесконечности. И, что удивительно, разработала его компания Microsoft. Я полагаю, что ни один из других редакторов и ни одна из других IDE не может дать разработчику хотя бы половину того, что способен дать ему VS Code. Одна из сильных сторон VS Code — это система расширений. Она позволяет создавать расширения буквально на все случаи жизни. Хочу рассказать вам о моём топ-10 расширений для VS Code.


Читать дальше →

Рабочий кабинет инженера в третьем поколении

Reading time5 min
Views25K
Моё почтение, Господа и Дамы! В связи с продвижением удалённой работы в массы многие делятся своей организацией рабочих мест.

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



!Осторожно! В статье от заголовка до самого конца есть ирония, самоирония и специфическая подача материала.

Читать дальше →

Как я перестал бояться и написал игрового бота

Reading time12 min
Views8.3K
Или старое доброе динамическое программирование без этих ваших нейросетей.

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

image
Экран игры с сервера проекта Codenjoy
Читать дальше →

Визуализация промисов и Async/Await

Reading time8 min
Views45K


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

Представляю вашему вниманию перевод статьи «JavaScript Visualized: Promises & Async/Await» автора Lydia Hallie.

Приходилось ли вам сталкиваться с JavaScript кодом, который… работает не так, как ожидается? Когда функции выполняются в произвольном, непредсказуемом порядке, или выполняются с задержкой. Одна из главных задач промисов — упорядочение выполнения функций.

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

Коротко о nRF51822: Быстрый старт

Reading time10 min
Views62K

1. Вступление


Добрый день.

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

Однако есть нюанс — шаг вправо, шаг влево от стандартной подборки STM32/8, AVR и иже с ними или углубление в более сложные интерфейсы тех же самых STM32/8, и тишина. Лишь изредка на далеком-далеком форуме кто-то задает вопрос, который в итоге остается без ответа…

К чему я, собственно, веду. Не так давно возникла необходимость использования в проекте чипа nRF51822 компании Nordic Semiconductor с популярной ныне тематикой Bluetooth low energy (далее — BLE) на борту.

image

Чип оказался настолько популярным на информационную составляющую, что Google с горем пополам выдал 2-3 ссылки с описанием самого BLE стека и пару абстрактных статей касательно реализации стека у чипов Nordic и Texas instruments (CC2640). Матерые программисты скажут: «Берите примеры от компании Nordic (а их там к слову с избытком) и разбирайтесь». И это верный подход, если бы не одно но, касающееся, по большей части, начинающих программистов и желающих получить быстрый результат: обилие структур, многоуровневые библиотеки — все это прекрасно и логично, но избыточно для быстрого старта или маленького проекта. Все это увеличивает порог вхождения до неоправданных высот.
Читать дальше →

Нечеткая логика и конечные автоматы против ПИД-регулятора. Избиение младенцев продолжается

Reading time14 min
Views25K

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


Этот текст является продолжением предыдущих публикаций:


  1. Простой регулятор на базе нечеткой логики. Создание и настройка.
  2. Нечеткая логика в красивых картинках. Поверхности отклика для разных функций принадлежности.
  3. Создание регулятора на базе нечеткой логики с многоканальной настройкой.
  4. Простая нечеткая логика слеплена «из того что было» для газотурбинного двигателя.
  5. Нечеткая логика против ПИД. Скрещиваем ежа и ужа. Авиадвигатель и алгоритмы управления АЭС.


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


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


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


Далее под катом – ПИД-регулятор, нечёткая логика и конечные автоматы для управления газотурбинным двухроторным двигателем (ГТД). Тем, кто впервые планирует познакомиться с работой нечеткой логики, рекомендую начать со статьи «Простой регулятор на базе нечеткой логики. Создание и настройка»

Читать дальше →

Дружим STM32 с LCD дисплеем 1604 по I2C шине (библиотека HAL)

Reading time6 min
Views49K
Привет, Хабр!

В этой статье я хотел бы рассказать о своем опыте подключения LCD дисплеев к микроконтроллеру STM32 с использованием библиотеки HAL по I2C шине.

image

Подключать буду дисплей 1602 и 2004. Они оба имеют припаянный I2C адаптер на основе чипа PCF8574T. Отладочной платой выступит Nucleo767ZI, а средой разработки – STM32CubeIDE 1.3.0.
Читать дальше →

LED-драйвер со стоимостью BOM-а меньше 1$. Это возможно?

Reading time9 min
Views39K
Разработка LED-драйвера – интересная и комплексная задача. Рынок в этом направлении весьма насыщен – иногда кажется, что производство светодиодных светильников везде. Начиная от гаража и заканчивая огромными заводами. Что касается драйверов, гиганты типа Philips или Meanwell с одной стороны, добротные китайцы вроде Moso и Billion с другой, noname китайцы с третьей… В этих условиях к инженерным составляющим (схемотехнической и конструкторской) добавляется задача оптимизации изделия по цене.



Итак, рассказываю про разработку LED-драйвера при существенном ограничении по цене комплектующих.
Читать дальше →

Отложенное применение функционала директив в Angular

Reading time4 min
Views4.3K
Недавно мне надо было решить задачу по смене старого механизма для вывода всплывающих подсказок, реализованного средствами нашей библиотеки компонентов, на новый. Я, как всегда, решил не заниматься изобретением велосипеда. Для того чтобы приступить к решению этой задачи, я занялся поисками опенсорсной библиотеки, написанной на чистом JavaScript, которую можно было бы поместить в директиву Angular и в таком виде использовать.



В моём случае, так как я много работаю с popper.js, я нашёл библиотеку tippy.js, написанную тем же разработчиком. Для меня такая библиотека выглядела как идеальное решение задачи. Библиотека tippy.js обладает обширным набором возможностей. С её помощью можно создавать и всплывающие подсказки (элементы tooltip), и многие другие элементы. Эти элементы можно настраивать с помощью тем, они быстры, строго типизированы, обеспечивают доступность контента и отличаются многими другими полезными возможностями.
Читать дальше →

Как эффективно работать с тикетами (issues) на GitHub

Reading time7 min
Views12K
Тикеты на GitHub бывают разные: запросы на реализацию каких-то возможностей, отчёты об ошибках, жалобы от клиентов, оповещения от систем безопасности, ретроспективы для команды и т. д. Здесь мы рассмотрим, как команда может использовать и обсуждать их.

Содержание:


Читать дальше →

Продвинутый TypeScript

Reading time12 min
Views25K
Фридайвинг — ныряние на глубину без акваланга. Ныряльщик ощущает на себе закон Архимеда: он вытесняет некоторый объём воды, который выталкивает его обратно. Поэтому первые несколько метров даются тяжелее всего, но потом сила давления толщи воды над тобой начинает помогать двигаться глубже. Этот процесс напоминает изучение и погружение в системы типов TypeScript — по мере погружения становится немного легче. Но надо не забыть вовремя вынырнуть.


Фотография с сайта One Ocean One Breath.

Михаил Башуров (saitonakamura) — Senior Frontend Engineer в компании WiseBits, фанат TypeScript и фридайвер-любитель. Аналогии изучения TypeScript и ныряния на глубину не случайны. Михаил расскажет, что такое discriminated unions, как использовать вывод типов, зачем нужна номинальная совместимость и брендирование. Задержите дыхание и погружайтесь.

Пайка компонентов 0201. Слабонервных просьба удалиться от экранов

Reading time4 min
Views103K
Доброго времени суток, Хабр!



Хочу поделиться опытом пайки плат. Также затрону тему установки совсем маленьких компонентов с типоразмером 0201.
Читать дальше →

Исследуем электромагнитные поля с помощью SDR приемника и OpenCV

Reading time10 min
Views31K


SDR-приемник, даже самый дешёвый, является весьма высокочувствительным приборчиком. Если добавить к нему специальную антенну и OpenCV, то можно будет не только привычно слушать эфир, но и посмотреть на распределение электромагнитных полей в пространстве. О таком интересном применении и пойдет речь в данной статье. Внимание! Под катом много картинок и анимации!
Читать дальше →

SamsPcbGuide, часть 14: Технологии — Микроразварка и технология Chip-On-Board

Reading time8 min
Views20K
В этой самоизоляционной статье я расскажу о разварке проволочных микровыводов (англ. wire bonding). В контексте печатных плат речь пойдёт о технологии монтажа кристаллов на печатную плату (англ. chip-on-board, COB). Обязательно смотрите видео по ссылкам, микроразварка — это очень красиво!

Читать дальше →

Утилита Power Stage Designer — инструмент разработчика силовой электроники

Reading time8 min
Views21K

Приветствую! Хочу рассказать о весьма интересной для разработчика электроники утилите, которую я уже давно применяю в своей профессиональной деятельности. Утилита Power Stage DesignerTM от компании Texas Instruments — инструмент из «маст хэв» набора разработчика источников питания, преобразователей, силовой электроники. Как следует из названия, утилита предназначена для расчёта параметров силовой части (power stage), а также включает в себя некоторые дополнительные возможности, помогающие в решении смежных задач.


Основные возможности утилиты:


  • Расчёт основных параметров преобразователя;
  • Калькулятор параметров петли обратной связи «Loop Calculator»;
  • Расчёт потерь MOSFET-транзистора «FET Losses»;
  • Расчёт конденсаторов «Capacitor Calculator»;
  • Расчёт демпфирующих цепей «Snubber Calculator»;
  • Расчёт параметров цепей регулирования/стабилизации выходного напряжения «Output Voltage Scaling»;
  • Конвертер единиц измерения «Unit Converter».
Читать дальше →

CSS: полное руководство по функции calc()

Reading time11 min
Views111K
В CSS есть особая функция calc(), применяемая для выполнения простых вычислений. Вот пример её использования:

.main-content {
  /* Вычесть 80px из 100vh */
  height: calc(100vh - 80px);
}

Здесь с CSS-кодом, в котором используется calc(), можно поэкспериментировать.



Автор статьи, перевод которой мы сегодня публикуем, хочет рассказать обо всём, что стоит знать об этой весьма полезной функции.
Читать дальше →

С++, метапрограммирование и регистры микроконтроллера

Reading time7 min
Views7.7K

Привет, Хабр!


Вот уже несколько лет все свои проекты для линейки микроконтроллеров stm32 я делаю на C++.


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


Во избежание лишних вопросов: я использую связку QtCreator+gcc+gdb+openocd. Как с ней работать, описано многократно, поэтому не буду на этом останавливаться, а вот о своих подходах к работе с микроконтроллерами расскажу подробнее.


На нижнем уровне проекта, как правило, находятся драйвера периферии. С них и начнём.

Читать дальше →

3 способа рендеринга больших списков в Angular

Reading time6 min
Views19K
В 2020 году фронтенд-фреймворки стали лучше, эффективнее и быстрее. Но, даже учитывая это, рендеринг больших списков без «замораживания» браузера всё ещё может оказаться сложной задачей даже для самых быстрых из существующих фреймворков.

Это — один из тех случаев, когда «фреймворк является быстрым, а код — медленным».



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

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

Information

Rating
4,766-th
Date of birth
Registered
Activity