Получи случайную криптовалюту за регистрацию!

Ayub Begimkulov - уроки по JS

Логотип телеграм канала @ayub_begimkulov_coding — Ayub Begimkulov - уроки по JS A
Логотип телеграм канала @ayub_begimkulov_coding — Ayub Begimkulov - уроки по JS
Адрес канала: @ayub_begimkulov_coding
Категории: Telegram
Язык: Русский
Количество подписчиков: 2.73K
Описание канала:

По вопросам и деловым предложениям писать на @ayub_begimkulov

Рейтинги и Отзывы

3.50

2 отзыва

Оценить канал ayub_begimkulov_coding и оставить отзыв — могут только зарегестрированные пользователи. Все отзывы проходят модерацию.

5 звезд

0

4 звезд

1

3 звезд

1

2 звезд

0

1 звезд

0


Последние сообщения 2

2023-03-05 21:25:10 Всем привет!

Наконец вышло мое видео про i18n, и как я с ним работаю.

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

Оставляйте комментарии и лайки - это помогает каналу быстрее расти.



994 viewsAyub Begimkulov, 18:25
Открыть/Комментировать
2023-03-05 13:12:36 Также, касательно пропущенного вчера поста и видосов на прошлой неделе.

Про все помню. Розыгрыш будет. Пока накопилось 2 видоса и 1 пост.

На этой неделе снял 2 видоса, жду когда они выйдут с монтажа. Скорее всего успею выложить только 1.

В планах сделать сразу большой розыгрыш. Может повысить призы (2 сессии менторинга либо $100).
1.0K viewsAyub Begimkulov, 10:12
Открыть/Комментировать
2023-03-05 13:04:42 Всем привет!

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

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

Что-то типа такого:


const nonEnglishLetters = /[^a-zA-Z]/;

if (nonEnglishLetters.test(name)) {
showEnglishNameScreen();
}

// do something else


Однако, тут есть проблема. Мы ведь проверяем на английский алфавит, а не на латинский (таких оказывается не мало).

Решением на бекенде было просто использовать пакет unicodedata. Похожие библиотеки есть на js, но весят они как 2 наших бандла, так как хранят инфу о всех символах.

Собственно, после небольшого ресерча нашел, что есть такая вещь, как unicode regular expressions.

В целом о возможности использовать unicode'ы в регулярках я знал, но не слышал о скриптах, блоках и категориях (что-то типа \w+ в обычной регулярке).

Так вот, оказалось можно проверить на символ из любого алфавите с помощью /\p{L}/u.

А если нужен символ из латинского алфавита, то вот так - /\p{Script=Latin}/u.

Таких конструкций довольно много, подробнее можете почитать тут:

https://www.regular-expressions.info/unicode.html

#devtips #regex
1.0K viewsAyub Begimkulov, edited  10:04
Открыть/Комментировать
2023-03-03 12:08:58 Друзья, тут пока готовил урок по i18n - решил собрать решение, которое я обычно использую на своих проектах (Про то, почему не юзаю что-то готовое - расскажу в видео).

Основные принципы моего решения:

- Полная типизация (насколько это возможно).
- Не большой размер (всего примерно 200-300 строк).
- Простота. Не вижу смысла поддерживать большое кол-во форматов, это только добавляет ненужную сложность.

Так вот, хотел спросить, есть ли смысл выносить его в пакет, чтобы вы могли пользоваться им?

Из фичей, что там есть:

- Полная поддержка TS, правильно подхватываются типы на основе переданных ключей. Не надо ничего писать руками. Также из уникальных фичей - будет требовать передать count если у вас плюральный ключ.
- Стандартный функционал - выбор ключей на основе языка, интерполяция через {{}} синтаксис, плюрализация.
- Хуки для React.
- Компонент для сложных переводов (кейсы когда внутри переденного текста должна быть ссылка или любой другой компонент).
- Асинхронная подгрузка ключей.
- Возможность работы с удобным для вас форматом плюрализации (можно конфигурировать).

Из того, с чем могут быть проблемы в начале:

- Различные кейсы с SSR. По идее ничего особенного там не должно быть, но еще не тестил.
- Поддержка плюрализации для разных языков (В целом я могу взять из какой-нибудь другой либы на пока, а потом подкорректировать).
- Небольшие неудобства с АПИ (тут как раз нужен будет фидбэк).
- Интеграции с хранилищами ключей и инструменты для работы с различными сборщиками (webpack, vite и тд.). Должно доехать со временем.
- Пока интеграция только с React, потом можно будет донести для других фреймворков.

Из того, что пока не планируется:

- Поддержка вложенных структур данных (максимум 1 уровень для плюрализации). Это сильно усложняет типизацию. В целом обсуждаемо, но пока не вижу зачем это нужно.
- Встроенный перевод для дат/времени. В любом случае никто не работает с датами сам, а переводы в библиотеках уже есть.

Какие тут плюсы для меня?

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

В общем, отпишите, что думаете.
869 viewsAyub Begimkulov, edited  09:08
Открыть/Комментировать
2023-03-02 18:11:06 Всем привет!

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

И совет простой, но почему-то самому часто бывает сложно его применять.

Делайте эту активность утром, перед работой. Особенно это касается обучения.

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

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

Не зря ведь говорят: “плати себе первому”. К времени, думаю, этот совет тоже относится.

P.S. Что думаете по поводу таких советов, на прямую не относящихся к программированию. Интересно или нет?

#devtips #learning
1.1K viewsAyub Begimkulov, edited  15:11
Открыть/Комментировать
2023-03-01 17:27:39 Всем привет!

Сегодня без мухлежей буду писать нормальную мини-статью.

Хочу поговорить про такую важную тему, как перевод проекта на TS.

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

Данная статья как раз для вас!

Также если у вас есть проект, который был плохо переведен, то я уже писал пост про то, как это можно исправить (ищете по ключевой фразе “suppress-ts-errors”).

Собственно, к самой теме.

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

Не нужно ожидать, что через месяц уже все ваши файлы будут переведены на TS. Это можно сделать, но стоит ли?

Ответ, надеюсь, у вас тоже нет.

Айюб, а как же тогда переписывать проект?

В моем опыте хорошо работает такой подход:

1) Добавляем в проект возможность писать TS файлы. Очень важно, tsconfig должен быть как можно более строгим с самого начала. А то потом намучаетесь его исправлять.

Единственное что, даем импортировать JS файлы, так как большая часть проекта пока на нем.

2) Пишем весь новый функционал на TS файлах.

3) Понимаем, какой функционал часто импортируется в другие файлы и меняется.

Такие куски можно начать переписывать вместе с какими-то задачами.

В целом, флоу такой. Если человек хочет заимпортировать модуль, написанный на JS он:

а) Импортирует его как есть, по возможности добавляет JSDoc, чтобы типизация в TS файле была правильная.
б) Если модуль старый и скорее всего не будет меняться, лучше вместо JSDoc написать .d.ts файл.
в) По желанию переписывает на TS. Это сделать намного проще, когда уже есть какие-то JSDoc аннотации + есть какое-то понимание того, как работать с тайпскриптом.

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

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

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

Также легаси куски будут описаны в .d.ts, что позволит не трогать их и избежать ненужных проблем.

Новый код уже будет типизированный и разработчики уже поймут профит, который они получают от строгой типизации.

Тогда уже можно и начинать процесс переписывания. Ключевая вещь тут не заставлять это делать. Можно предлагать на ревью, например.

Либо сделать какое-то необязательное правило. Если тронул старые файлы, перепиши хотя бы один.

Идей тут много. Но в любом случае рано или поздно кто-то перепишет эти файлы, потому что так удобнее. Просто произойдет это не сразу.

В общем, думаю идея тут ясна. Не надо закапывать продуктовую разработку на несколько спринтов. Делайте так, чтобы вся работа шла параллельно.

#devtips #typescript
709 viewsAyub Begimkulov, 14:27
Открыть/Комментировать
2023-02-28 17:12:09 Всем привет!

Готовлю видео про i18n, накидайте, что хотели бы там увидеть.
834 viewsAyub Begimkulov, 14:12
Открыть/Комментировать
2023-02-27 17:04:26 Только сегодня узнал, что codesandbox оказывается умеет запускать не только js и все, что в него компилится, но и другие языки.

Вдруг кому будет полезно)
1.0K viewsAyub Begimkulov, 14:04
Открыть/Комментировать
2023-02-26 18:25:38 Всем привет!

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

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

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

В общем, советую всем почитать.

https://www.digitalocean.com/community/tutorials/javascript-functional-programming-explained-fusion-transduction

#devtips #fp
1.1K viewsAyub Begimkulov, edited  15:25
Открыть/Комментировать
2023-02-25 19:15:32 Всем привет!

Сегодня узнал о прикольном проекте, который упрощает процесс написания скриптов.

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

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

https://www.scriptkit.com/

#devtips #workflow
816 viewsAyub Begimkulov, 16:15
Открыть/Комментировать