Канал для поиска исполнителей для разных задач и организации мини конкурсов
Last updated 1 month, 1 week ago
✨ Хочу поделиться подборкой IT-каналов коллег из Сбера ✨
В ней есть каналы, связанные с разработкой, аналитикой, нашим любимым AI ? и даже лайфстайл-контентом.
Скорее добавляй себе и наслаждайся чтением ?
Telegram
Sber IT
Nastya Smelova invites you to add the folder “Sber IT”, which includes 21 chats.
? Интернализация приложения с i18next ?****
i18next - это фреймворк интернационализации приложения, написанный на JavaScript и для JavaScript. Использует подкапотом Intl API, который описан в посте выше.
Предоставляет такие стандартные функции как множественное число, контекст, интерполяция, форматирование. i18next можно использовать для веб-приложений, мобильных устройств и десктоп приложений (так у них написано на официальном сайте?).
*☑️ *Интерполяция
Интерполяция - одна из наиболее часто используемых функций в I18N. Она позволяет вставить динамические значения в наши переводы.
```
{
"key": "{{what}} is {{how}}"
}
i18next.t('key', { what: 'i18next', how: 'great' });
// -> "i18next is great"
```
*☑️ *Форматирование
Мы можем отформатировать значения (строковые и числовые), которые вставляем в нашу строку.
```
{
"intlNumber": "Some {{val, number}}",
"intlNumberWithOptions": "Some {{val, number(minimumFractionDigits: 2)}}"
}
i18next.t('intlNumber', { val: 1000 });
// --> Some 1,000
i18next.t('intlNumber', { val: 1000.1, minimumFractionDigits: 3 });
// --> Some 1,000.100
i18next.t('intlNumber', { val: 1000.1, formatParams: { val: { minimumFractionDigits: 3 } } });
// --> Some 1,000.100
i18next.t('intlNumberWithOptions', { val: 2000 });
// --> Some 2,000.00
i18next.t('intlNumberWithOptions', { val: 2000, minimumFractionDigits: 3 });
// --> Some 2,000.000
```
*☑️*Множественное число
Помогает обрабатывать правила плюрализации для разных языков, что позволяет корректно изменять формы слов в зависимости от числа.
```
{
"key_one": "item",
"key_other": "items",
"keyWithCount_one": "{{count}} item",
"keyWithCount_other": "{{count}} items"
}
i18next.t('key', {count: 0}); // -> "items"
i18next.t('key', {count: 1}); // -> "item"
i18next.t('key', {count: 5}); // -> "items"
i18next.t('key', {count: 100}); // -> "items"
i18next.t('keyWithCount', {count: 0}); // -> "0 items"
i18next.t('keyWithCount', {count: 1}); // -> "1 item"
i18next.t('keyWithCount', {count: 5}); // -> "5 items"
i18next.t('keyWithCount', {count: 100}); // -> "100 item
```
*☑️ *Контекст
Контекст в i18next позволяет указать дополнительную информацию о том, где и как используется определенный перевод.
```
{
"friend": "A friend",
"friend_male": "A boyfriend",
"friend_female": "A girlfriend"
}
i18next.t('friend'); // -> "A friend"
i18next.t('friend', { context: 'male' }); // -> "A boyfriend"
i18next.t('friend', { context: 'female' }); // -> "A girlfriend"|>
```
? Доку можно посмотреть здесь
В следующем посте покажу, как мы можем оптимизировать наш код зная вот это все ?
‼️Ребята, нам нужен middle frontend разработчик ‼️
В команду занимающуюся разработкой системы сквозной аналитики для маркетинга КИБ Сбербанка ✨, ищем frontend-разработчика.
Позиция: Frontend-разработчик
Занятость: полная
Формат: Москва, Офис\Гибрид
Обязанности:
? Знание HTML5 и CSS3;
? Знания JavaScript ES6+ и
TypeScript (понимание основных конструкций)
? Понимание принципов работы с бэкендом (REST)
? Опыт разработки на базе React (в связке с TypeScript)
? Опыт работы с библиотеками управления состоянием (предпочтительно Redux, Redux Toolkit) и любой из ui библиотек
Git, npm
? Умение разбираться в чужом коде (очень важно)
Будет плюсом:
Опыт работы с препроцессорами стилей Sass
Опыт написания Unit-тестов (Jest)
Опыт командной разработки (с использованием Confluence, Jira)
Умение работать с webpack
Иметь представление о CI/CD
Наличие открытых
репозиториев GitHub / Bitbucket
Понимание Flux-архитектуры
Условия
Льготные условия кредитования и ипотеки;
Скидки на продукты компаний-партнеров;
Бесплатная подписка СберПрайм+;
Обучение за счет Компании: онлайн курсы в Виртуальной школе Сбера и неограниченный доступ к библиотеке, обучение в Корпоративном университете, Тренинги, митапы и возможность получить новую квалификацию.
Вопросики и резюме: @krasnovm ?
? Решение задачи
Много кто ответил, что значение b это undefined
, но нет. Кто выбрал 33 либо ошибку можно сказать правы. Но есть нюанс. Давайте разберемся.
?Присваивание b = 33 без уточнения var, let
или const
интерпретируется как присваивание значения уже существующему имени из более высоких областей видимости. Если же имя не существует ни в одной из областей видимости, как в этом случае, поведение отличается в зависимости от того, исполняется ли данный код в strict mode.
?Если strict mode включен (т.е. объявлен "use strict" в этой функции или в более высокой области видимости, или если используется система модулей es6, и т.д.), то попытка присваивания несуществующему имени вызовет исключение ReferenceError: assignment to undeclared variable b.
?Если же strict mode отключен, то присваивание создаст новое имя в наивысшей области видимости. В случае браузеров ей является window
, поэтому появится новый аттрибут window.b === 33
, а в случае node.js высшей областью видимости является global, поэтому появится новый аттрибут global.b === 3
.
Как то так ?
?Promise API. Часть 1
В этой части разберем Promise.all. Часто про него спрашивают на собесах да и в работе иногда используется. Например, мы хотим запустить множество параллельных промисов, а не запускать их последовательно - и вот тут нам понадобиться Promise.all()
let promise = Promise.all(iterable);
Метод Promise.all
принимает массив промисов (может принимать любой перебираемый объект, но обычно используется массив) и возвращает новый промис.
Новый промис завершится, когда завершится весь переданный список промисов, и его результатом будет массив их результатов.
_____
❗️Важно!
Если любой из промисов завершится с ошибкой, то промис, возвращённый Promise.all
, немедленно завершается с этой ошибкой. В случае ошибки, остальные результаты игнорируются.
Порядок элементов массива в точности соответствует порядку исходных промисов. Даже если первый промис будет выполняться дольше всех, его результат всё равно будет первым в массиве!
? Ну и примерчики:
```
const promise1 = new Promise((resolve) => setTimeout(resolve, 1000, 'Hello'));
const promise2 = new Promise((resolve) => setTimeout(resolve, 2000, 'World'));
const promise3 = new Promise((resolve) => setTimeout(resolve, 1500, '!'));
Promise.all([promise1, promise2, promise3])
.then((values) => {
console.log(values); // Output: ['Hello', 'World', '!']
})
.catch((error) => {
console.error(error);
});
```
```
const values = ['Hello', 'World', '!'];
const promises = values.map((value) =>
new Promise((resolve) => setTimeout(resolve, 1000, value)));
Promise.all(promises)
.then((results) => {
console.log(results); // Output: ['Hello', 'World', '!']
})
.catch((error) => {
console.error(error);
});
```
Канал для поиска исполнителей для разных задач и организации мини конкурсов
Last updated 1 month, 1 week ago