Всем привет!
Сегодня будет большой пост и много апдейтов, поэтому давайте по порядку.
В первую очередь, на прошлой неделе пропустил один пост и на позапрошлой неделе вышло только одно видео, розыгрыш будет - я ни про что не забыл.
Во вторых, хотел бы дать апдейт по моей работе и дальнейшему развитию канала.
Как вы знаете дела по миру сейчас идут не очень, моя компания не являлась исключением. Поэтому я, как и 50% компании, попал под сокращения.
Большинство сотрудников уволили одним днем, меня оставили на месяц, так как я вел встречи фронтов + тренинг по TS для команды. Однако чуть больше недели назад у меня был последний день.
Сразу писать не хотел, так как родители тут тоже сидят, не хотел, чтобы лишний раз волновались. Да и думал, как это все лучше подать (в итоге понял, что никак).
В целом у меня все отлично, пережевать за меня не стоит. Финансовая подушка есть, без работы остаться не должен.
Вкратце о том, почему происходит такая ситуация (я не гуру - чисто мое понимание).
Большинство компаний, особенно на западе, живет на инвестиции. Что это значит?
Это значит то, что у компании нету профита и она работает "в минус".
Тут, наверное, логический вопрос - откуда берутся тогда деньги? Берутся они как раз от инвесторов, которые верят, что когда-то эта компания станет успешной и их инвестиции преумножатся.
Так компания может жить довольно долго работая в убыток. Каждый раз когда заканчиваются деньги - мы привлекаем еще один раунд инвестиций и так, пока компания не будет прибыльной либо не станет публичной.
Обычно инвесторы тоже не дураки и деньгами просто так не раскидываются. Стандартная формула оценки стоимости it компании - годовой доход * 10. На основе этой формулы обычно и дают инвестиции (выкупают долю в компании).
Однако если есть бум какой-то индустрии, то на этот коэффициент могут закрыть глаза, так как рост в таких случаях идет быстрее, чем обычно. Соответственно, вы можете получить оценку компании, которая будет в разы превышать х10 вашего дохода.
Так было с крипто-компаниями в 17-м и 21-м годах, так сейчас происходит с AI стартапами.
Проблема наступает тогда, когда этот бум заканчивается, а компания до сих пор не приносит прибыль. Деньги рано или поздно должны закончиться, а по предыдущей (высокой) оценке никто не будет выкупать долю.
И тут компания оказывается в сложной ситуации. Нужно либо каким-то образом привлечь еще денег (можно продать большую долю компании и остаться ни с чем), либо быстрее выйти в окупаемость.
Что-то одно обычно не выберешь, в любом случае нужен микс. Поэтому компании делают большой акцент на профит, а не разработку ненужных фич, и уменьшают расходы, параллельно пытаясь что-то придумать с инвесторами.
Как вы понимаете, основной расход в IT компании - это сотрудники. Так что тут вариантов особо не много у стартапов.
С крупными IT компаниями я думаю тут тоже самое, за исключением того, что инвестиции идут от профита других отделов, ну и можно брать выгодные кредиты.
Еще в добавок есть момент того, что большинство сотрудников там толком и не работает (посмотрите любое видео "day in life of a software engineer at X").
Вот такие дела! Опять же, я тут не профессионал, делюсь именно своим пониманием в этой теме.
Сегодня будет большой пост и много апдейтов, поэтому давайте по порядку.
В первую очередь, на прошлой неделе пропустил один пост и на позапрошлой неделе вышло только одно видео, розыгрыш будет - я ни про что не забыл.
Во вторых, хотел бы дать апдейт по моей работе и дальнейшему развитию канала.
Как вы знаете дела по миру сейчас идут не очень, моя компания не являлась исключением. Поэтому я, как и 50% компании, попал под сокращения.
Большинство сотрудников уволили одним днем, меня оставили на месяц, так как я вел встречи фронтов + тренинг по TS для команды. Однако чуть больше недели назад у меня был последний день.
Сразу писать не хотел, так как родители тут тоже сидят, не хотел, чтобы лишний раз волновались. Да и думал, как это все лучше подать (в итоге понял, что никак).
В целом у меня все отлично, пережевать за меня не стоит. Финансовая подушка есть, без работы остаться не должен.
Вкратце о том, почему происходит такая ситуация (я не гуру - чисто мое понимание).
Большинство компаний, особенно на западе, живет на инвестиции. Что это значит?
Это значит то, что у компании нету профита и она работает "в минус".
Тут, наверное, логический вопрос - откуда берутся тогда деньги? Берутся они как раз от инвесторов, которые верят, что когда-то эта компания станет успешной и их инвестиции преумножатся.
Так компания может жить довольно долго работая в убыток. Каждый раз когда заканчиваются деньги - мы привлекаем еще один раунд инвестиций и так, пока компания не будет прибыльной либо не станет публичной.
Обычно инвесторы тоже не дураки и деньгами просто так не раскидываются. Стандартная формула оценки стоимости it компании - годовой доход * 10. На основе этой формулы обычно и дают инвестиции (выкупают долю в компании).
Однако если есть бум какой-то индустрии, то на этот коэффициент могут закрыть глаза, так как рост в таких случаях идет быстрее, чем обычно. Соответственно, вы можете получить оценку компании, которая будет в разы превышать х10 вашего дохода.
Так было с крипто-компаниями в 17-м и 21-м годах, так сейчас происходит с AI стартапами.
Проблема наступает тогда, когда этот бум заканчивается, а компания до сих пор не приносит прибыль. Деньги рано или поздно должны закончиться, а по предыдущей (высокой) оценке никто не будет выкупать долю.
И тут компания оказывается в сложной ситуации. Нужно либо каким-то образом привлечь еще денег (можно продать большую долю компании и остаться ни с чем), либо быстрее выйти в окупаемость.
Что-то одно обычно не выберешь, в любом случае нужен микс. Поэтому компании делают большой акцент на профит, а не разработку ненужных фич, и уменьшают расходы, параллельно пытаясь что-то придумать с инвесторами.
Как вы понимаете, основной расход в IT компании - это сотрудники. Так что тут вариантов особо не много у стартапов.
С крупными IT компаниями я думаю тут тоже самое, за исключением того, что инвестиции идут от профита других отделов, ну и можно брать выгодные кредиты.
Еще в добавок есть момент того, что большинство сотрудников там толком и не работает (посмотрите любое видео "day in life of a software engineer at X").
Вот такие дела! Опять же, я тут не профессионал, делюсь именно своим пониманием в этой теме.
❤38💊6💯3👍2🔥2⚡1🍓1
Ок, Айюб, а какие дальнейшие планы?
Я решил, что пока не буду искать работу, а займусь развитием канала и другими проектами.
Почему я пришел к такому решению?
Тут на самом деле можно написать отдельный пост на эту тему, но если вкратце, то я не вижу себя через 5-10 лет, как топ менеджер в крупной компании, вот прям совсем. А в качестве разработчика до потолка можно дойти довольно быстро. Если интересна эта тема более подробно - дайте знать в комментариях.
Поэтому я в каком-то плане был даже рад своему сокращению, так как самому с работы, где хорошо платят и не смотрят за каждым шагом, сложно уйти.
Как я уже и сказал, в планах продолжать развивать ютуб канал и выпускать как можно более полезные и качественные ролики. Дальше уже запускать другие проекты, которые будут приносить деньги. А в будущем хотелось бы крупные IT продукты и бизнесы.
Понимаю, что не все сразу, поэтому начну с простого - монетизации канала с помощью решения проблем своей аудитории.
Будет ли это стандартный курс, комьюнити, какая-то платформа или что-то другое - я пока точно не знаю и не могу давать каких-то конкретных обещаний.
А пока, как первый шаг хочу начать проводить 1:1 коучинг. Я и так раньше его проводил для некоторых людей, которые сами писали в личку. Теперь эта опция доступна публично!
Выглядит это примерно так:
- Проводим собес, понимаем сильные и слабые стороны, что нужно подтянуть, ставим цели.
- Я составляю план развития, кидаю на обсуждение, добавляем/удаляем какие-то пункты.
- Провожу уроки по нашему плану (1-2 раза в неделю), отвечаю на вопросы, разбираем текущие проблемы на работы и тд.
Также иногда провожу разовые сессии - собес, ревью проекта, помощь с резюме или какой-то задачей, либо же любая другая тема, которая может быть интересна.
По цене - на данный момент $50/час. Опция не для всех, но и у меня время ограниченное. Планирую набрать только 5-10 человек, чтобы оставалось время на другие активности. Отбираю тех, кому реально могу помочь достичь их цели.
Пока никаких красивых сайтов нету (хотя планируется). Если хотите записаться - тогда заполняйте данную форму.
Давайте сразу попробую ответить на вопросы, которые могут у вас возникнуть:
- Значит ли монетизация канала то, что я буду рассказывать некоторую информацию только тем, кто платит мне деньги?
Нет, скорее наоборот. Будет больше времени на съемку видео и улучшение качества. Информация сама по себе бесплатная, платите вы обычно за ответы на вопросы, структуру, задания, и персонализированную работу с вами.
- Могу ли я записаться на коучинг, если я еще не работаю?
Все зависит от ситуации. Я работаю с теми людьми, которые уже умеют писать код и могут решать задачи, однако не понимают, какие у них есть пробелы, как их закрыть и как выйти на следующий уровень в своей карьере.
Если у вас проблемы с пониманием основ какой-то технологии - то есть много более дешевого (и даже бесплатного) материала, который поможет вам с вашей проблемой.
Если есть еще вопросы - пишите в комментариях, постараюсь всем ответить!
UPD: многие люди не замечают ссылку на Гугл-форму в посте, поэтому отпишу еще раз. Для записи оставляйте заявку вот тут https://forms.gle/LiR7h6v4nouMZCgj7
Я решил, что пока не буду искать работу, а займусь развитием канала и другими проектами.
Почему я пришел к такому решению?
Тут на самом деле можно написать отдельный пост на эту тему, но если вкратце, то я не вижу себя через 5-10 лет, как топ менеджер в крупной компании, вот прям совсем. А в качестве разработчика до потолка можно дойти довольно быстро. Если интересна эта тема более подробно - дайте знать в комментариях.
Поэтому я в каком-то плане был даже рад своему сокращению, так как самому с работы, где хорошо платят и не смотрят за каждым шагом, сложно уйти.
Как я уже и сказал, в планах продолжать развивать ютуб канал и выпускать как можно более полезные и качественные ролики. Дальше уже запускать другие проекты, которые будут приносить деньги. А в будущем хотелось бы крупные IT продукты и бизнесы.
Понимаю, что не все сразу, поэтому начну с простого - монетизации канала с помощью решения проблем своей аудитории.
Будет ли это стандартный курс, комьюнити, какая-то платформа или что-то другое - я пока точно не знаю и не могу давать каких-то конкретных обещаний.
А пока, как первый шаг хочу начать проводить 1:1 коучинг. Я и так раньше его проводил для некоторых людей, которые сами писали в личку. Теперь эта опция доступна публично!
Выглядит это примерно так:
- Проводим собес, понимаем сильные и слабые стороны, что нужно подтянуть, ставим цели.
- Я составляю план развития, кидаю на обсуждение, добавляем/удаляем какие-то пункты.
- Провожу уроки по нашему плану (1-2 раза в неделю), отвечаю на вопросы, разбираем текущие проблемы на работы и тд.
Также иногда провожу разовые сессии - собес, ревью проекта, помощь с резюме или какой-то задачей, либо же любая другая тема, которая может быть интересна.
По цене - на данный момент $50/час. Опция не для всех, но и у меня время ограниченное. Планирую набрать только 5-10 человек, чтобы оставалось время на другие активности. Отбираю тех, кому реально могу помочь достичь их цели.
Пока никаких красивых сайтов нету (хотя планируется). Если хотите записаться - тогда заполняйте данную форму.
Давайте сразу попробую ответить на вопросы, которые могут у вас возникнуть:
- Значит ли монетизация канала то, что я буду рассказывать некоторую информацию только тем, кто платит мне деньги?
Нет, скорее наоборот. Будет больше времени на съемку видео и улучшение качества. Информация сама по себе бесплатная, платите вы обычно за ответы на вопросы, структуру, задания, и персонализированную работу с вами.
- Могу ли я записаться на коучинг, если я еще не работаю?
Все зависит от ситуации. Я работаю с теми людьми, которые уже умеют писать код и могут решать задачи, однако не понимают, какие у них есть пробелы, как их закрыть и как выйти на следующий уровень в своей карьере.
Если у вас проблемы с пониманием основ какой-то технологии - то есть много более дешевого (и даже бесплатного) материала, который поможет вам с вашей проблемой.
Если есть еще вопросы - пишите в комментариях, постараюсь всем ответить!
UPD: многие люди не замечают ссылку на Гугл-форму в посте, поэтому отпишу еще раз. Для записи оставляйте заявку вот тут https://forms.gle/LiR7h6v4nouMZCgj7
❤40👍21💯4🗿3🍓1
Всем привет!
Пока вчера делал форму записи на коучинг, вспомнил, что как-то натыкался на статью, как levels.fyi достигли 1 миллиона юзеров без какой-то значимой инфраструктуры. Ознакомьтесь с статьей, она довольно легко читается.
Однако тут мне кажется показывается на примере, что мы, как программисты часто фокусируемся на ненужных деталях, которые не обязательно принесут пользу бизнесу. Очень часто замечаю такую проблему за собой и своими знакомыми.
Мне на самом деле и в голову не приходило то, что можно использовать google sheets в качестве БД + простого бека. Я знал о том, что можно как-то манипулировать там данными через API, но не видел применения всему этому в таком ключе.
Я думаю, если вам интересно будет запускать какой-то сервис для пользователей, то стоит задуматься о том, нельзя ли сделать первую версию с использованием готовых инструментов?
Также добавлю, что для себя я всегда смотрю на баланс между простотой использования других решений и дальнейшими изменениями.
Например, свой блог я делал на react + gatsby, хотя казалось бы, есть wordpress и много чего другого.
Однако я понимал, что при требовании какого-то дополнительного расширения сайта, мне это проще будет сделать на React, нежели писать плагин для какой-то махины. Да и перфоманс, SEO и деплой будут проще статического сайта.
В общем, единой формулы тут нету, но держать в голове эту мысль стоит.
https://www.levels.fyi/blog/scaling-to-millions-with-google-sheets.html
Пока вчера делал форму записи на коучинг, вспомнил, что как-то натыкался на статью, как levels.fyi достигли 1 миллиона юзеров без какой-то значимой инфраструктуры. Ознакомьтесь с статьей, она довольно легко читается.
Однако тут мне кажется показывается на примере, что мы, как программисты часто фокусируемся на ненужных деталях, которые не обязательно принесут пользу бизнесу. Очень часто замечаю такую проблему за собой и своими знакомыми.
Мне на самом деле и в голову не приходило то, что можно использовать google sheets в качестве БД + простого бека. Я знал о том, что можно как-то манипулировать там данными через API, но не видел применения всему этому в таком ключе.
Я думаю, если вам интересно будет запускать какой-то сервис для пользователей, то стоит задуматься о том, нельзя ли сделать первую версию с использованием готовых инструментов?
Также добавлю, что для себя я всегда смотрю на баланс между простотой использования других решений и дальнейшими изменениями.
Например, свой блог я делал на react + gatsby, хотя казалось бы, есть wordpress и много чего другого.
Однако я понимал, что при требовании какого-то дополнительного расширения сайта, мне это проще будет сделать на React, нежели писать плагин для какой-то махины. Да и перфоманс, SEO и деплой будут проще статического сайта.
В общем, единой формулы тут нету, но держать в голове эту мысль стоит.
https://www.levels.fyi/blog/scaling-to-millions-with-google-sheets.html
👍20❤9🔥4💯4🍓1🎃1
Всем привет!
Пока готовил видео начал в очередной раз задумываться о том, что некоторые хуки являются просто обертками, для того, чтобы упростить работу разработчика. Однако их можно написать самим.
Самый очевидный пример - это
Однако если задуматься по глубже, то хуки, которые реально нужны из коробки - это useState, useEffect, useLayoutEffect, useContext, useDebugValue, ну и некоторые новые хуки, добавленные в React 18.
Давайте в качестве упражнения напишем хуки
И так,
Тут мы как раз пользуемся тем, что
Хорошо, давайте теперь напишем
Как мы видим, тут тоже логика получается не такой сложной. Мы просто используем переданный reducer для того, что создавать новый стейт.
В целом, все хуки, которые мы описали, не так сложно написать самому. И я думаю многие из вас могли уже догадываться о том, что они просто добавлены для чтого, чтобы сделать жизнь разработчика проще.
Однако какие еще хуки мы могли бы написать сами?
А что по поводу
Он ведь просто создает мутабельный объект, привязанный к компоненту. Наверное простым решением было бы использование
Но для реализации
Каким еще образом мы можем создать наш объект так, чтобы он был привязан к компоненту и не изменялся от рендера к рендеру?
И тут мне пришла странная идея:
По идее нам ничто не мешает создать наш объект один раз через
Но для реализации
Не знаю, чем вам эта информация может быть полезна, кроме как для более детального понимания устройства React. Однако надеюсь вы получили тот же фан, что и я при реализации данных хуков.
#devtips #react
Пока готовил видео начал в очередной раз задумываться о том, что некоторые хуки являются просто обертками, для того, чтобы упростить работу разработчика. Однако их можно написать самим.
Самый очевидный пример - это
useCallback
:
function useCallback(cb, deps) {
return useMemo(() => cb, deps);
}
Однако если задуматься по глубже, то хуки, которые реально нужны из коробки - это useState, useEffect, useLayoutEffect, useContext, useDebugValue, ну и некоторые новые хуки, добавленные в React 18.
Давайте в качестве упражнения напишем хуки
useReducer
, useMemo
, useCallback
сам.И так,
useCallback
мы уже покрыли, давайте следующим шагом покроем useMemo
:
function areDepsEqual(prevDeps, deps) {
if (prevDeps.length !== deps.length) {
return false;
}
return prevDeps.every((item, index) => item === deps[index]);
}
function useMemo(factory, deps) {
const prevDepsRef = useRef(null);
const result = useRef(null);
const prevDeps = prevDepsRef.current;
useEffect(() => {
prevDepsRef.current = deps;
});
if (!prevDeps || !areDepsEqual(prevDeps, deps)) {
result.current = factory();
}
return result.current;
}
Тут мы как раз пользуемся тем, что
useRef
возвращает ссылку на один и тот же объект, поэтому мы можем просто сравнить массив зависимостей и в случае чего обновить значение в объекте.Хорошо, давайте теперь напишем
useReducer
:
function useReducer(reducer, initialState) {
const [state, setState] = useState(initialState);
const reducerRef = useRef(reducer);
useLayoutEffect(() => {
reducerRef.current = reducer;
});
const dispatch = useCallback((action) => {
setState((state) => reducerRef.current(state, action));
}, []);
return [state, dispatch];
}
Как мы видим, тут тоже логика получается не такой сложной. Мы просто используем переданный reducer для того, что создавать новый стейт.
В целом, все хуки, которые мы описали, не так сложно написать самому. И я думаю многие из вас могли уже догадываться о том, что они просто добавлены для чтого, чтобы сделать жизнь разработчика проще.
Однако какие еще хуки мы могли бы написать сами?
useEffect`/`useLayoutEffect`/`useInsertionEffect
- все требуют вызова в определенный момент жизни компонента, поэтому их тут самому не написать.useDebugValue`/`useDeferredValue`/`useTransition
- тоже все завязаны на внутренности React.useState
должен как-то прикрепляться к компоненту и хранить значение между рендерами, так что тут тоже ничего не сделаешь.А что по поводу
useRef
?Он ведь просто создает мутабельный объект, привязанный к компоненту. Наверное простым решением было бы использование
useMemo
:
function useRef(value) {
const [ref] = useMemo(() => ({ current: value }), []);
return ref;
}
Но для реализации
useMemo
мы уже используем useRef
...Каким еще образом мы можем создать наш объект так, чтобы он был привязан к компоненту и не изменялся от рендера к рендеру?
И тут мне пришла странная идея:
function useRef(value) {
const [ref] = useState({ current: value });
return ref;
}
По идее нам ничто не мешает создать наш объект один раз через
useState
и дальше уже его мутировать. Да и по канонам React стейт мутировать нельзя. Но это связанно с тем, что мутации не поведут за собой обновление компонента, однако другие части приложения будут использовать последнее значение стейта.Но для реализации
useRef
тут никаких проблем не должно быть. Наш “рефовый” стейт и так никогда не будет обновляться.Не знаю, чем вам эта информация может быть полезна, кроме как для более детального понимания устройства React. Однако надеюсь вы получили тот же фан, что и я при реализации данных хуков.
#devtips #react
👍43❤20🔥7💯3🍓1
Всем привет!
Пока смотрел выступление от создателя svelte, где он делится своим мнением про текущее направление веба, вспомнил, что не писал сегодня пост.
Поэтому решил ничего не придумывать, и поделиться как раз этим выступлением). Вышло на ютуб оно день назад, так что думаю многие из вас еще не успели посмотреть.
Вообще вижу svelt, как отдельный мир, по сравнению с другими фреймворками. Поэтому интересно послушать мнение его создателя.
Пока посмотрел 20 минут — очень интересно. Всем советую!
https://youtu.be/uXCipjbcQfM
Пока смотрел выступление от создателя svelte, где он делится своим мнением про текущее направление веба, вспомнил, что не писал сегодня пост.
Поэтому решил ничего не придумывать, и поделиться как раз этим выступлением). Вышло на ютуб оно день назад, так что думаю многие из вас еще не успели посмотреть.
Вообще вижу svelt, как отдельный мир, по сравнению с другими фреймворками. Поэтому интересно послушать мнение его создателя.
Пока посмотрел 20 минут — очень интересно. Всем советую!
https://youtu.be/uXCipjbcQfM
YouTube
Rich Harris on frameworks, the web, and the edge
Watch Rich Harris, Svelte's creator, share insights on frontend trends, the edge, and the web at Vercel's Svelte Meetup hosted by Cockroach Labs in NYC. Build with Vercel today: https://vercel.fyi/trysvelte.
0:00 Introduction
1:25 Your framework is fine…
0:00 Introduction
1:25 Your framework is fine…
👍17❤10💯3🍓1
Всем привет!
Может кто-то уже видел, готовится релиз TS 5.1.
Как таковых больших изменений нету, однако очень приятные улучшения.
В особенности первый пункт про использование undefined в качестве return type.
Очень не нравится, когда TS просит добавить пустой return, для того, чтобы все пути в функции возращали какое-то значение. Теперь наконец эту и другие боли исправили.
Также очень крутая фича с Linked Cursors. Раньше для этого плагины надо было ставить — а теперь из коробки будет работать!
Единственное, что огорчает — это то, что не добавляют способ типизировать ошибки в функциях. Proposal на это висит уже почти 7 лет.
https://devblogs.microsoft.com/typescript/announcing-typescript-5-1-beta/
Может кто-то уже видел, готовится релиз TS 5.1.
Как таковых больших изменений нету, однако очень приятные улучшения.
В особенности первый пункт про использование undefined в качестве return type.
Очень не нравится, когда TS просит добавить пустой return, для того, чтобы все пути в функции возращали какое-то значение. Теперь наконец эту и другие боли исправили.
Также очень крутая фича с Linked Cursors. Раньше для этого плагины надо было ставить — а теперь из коробки будет работать!
Единственное, что огорчает — это то, что не добавляют способ типизировать ошибки в функциях. Proposal на это висит уже почти 7 лет.
https://devblogs.microsoft.com/typescript/announcing-typescript-5-1-beta/
❤13👍5💯3⚡1🍓1
Всем привет!
Вышло новое видео, где я говорю про хук useReducer. Разберем, для чего он нужен, и почему я его не использую.
Обязательно оставляйте лайки и фидбэк в комментариях. Также не забывайте делиться видео с друзьями - это помогает каналу быстрее расти.
https://youtu.be/WfkZ5-h8yNU
Вышло новое видео, где я говорю про хук useReducer. Разберем, для чего он нужен, и почему я его не использую.
Обязательно оставляйте лайки и фидбэк в комментариях. Также не забывайте делиться видео с друзьями - это помогает каналу быстрее расти.
https://youtu.be/WfkZ5-h8yNU
YouTube
Почему я не использую хук useReducer? | React Hooks
В данном видео мы поговорим про такой хук, как useReducer. Расскажу про его особенности, для чего он задумывался, и почему я никогда его не использую (и что использую вместо него).
Ссылка на код из видео:
https://github.com/Ayub-Begimkulov/youtube-tuto…
Ссылка на код из видео:
https://github.com/Ayub-Begimkulov/youtube-tuto…
❤20👍11🔥5💯3🍓1
Всем привет!
На прошлой неделе опять не уложился в дедлайны по видосам. Также было 2 долга (1 пост и 1 видос) с прошлых недель. Пришло время все закрывать).
Для тех, кто не в курсе, я пообещал выпускать 2 видео в неделю и 1 пост в день на протяжении 2023-го года. За каждый пропущенный видос или пост я разыгрываю $50 или 1:1 сессию коучинга/менторинга.
На этот раз будет 3 победителя — поэтому шансы выше!
Для участия нужно будет оставить ровно 1 комментарий под следующим постом. Победителей выберу на этой неделе (не раньше, чем через 24 часа). Благо скрипт для этого у меня уже есть.
На прошлой неделе опять не уложился в дедлайны по видосам. Также было 2 долга (1 пост и 1 видос) с прошлых недель. Пришло время все закрывать).
Для тех, кто не в курсе, я пообещал выпускать 2 видео в неделю и 1 пост в день на протяжении 2023-го года. За каждый пропущенный видос или пост я разыгрываю $50 или 1:1 сессию коучинга/менторинга.
На этот раз будет 3 победителя — поэтому шансы выше!
Для участия нужно будет оставить ровно 1 комментарий под следующим постом. Победителей выберу на этой неделе (не раньше, чем через 24 часа). Благо скрипт для этого у меня уже есть.
❤16💯7❤🔥2👍1👎1🍓1
Пост для сбора комментариев на розыгрыш.
❤25💯6🍓1🎃1
Всем привет!
Хотел бы поделиться своим мнением касательно enum’ов в Typescript.
Как вы знаете, сейчас стало модно их хейтить, причиной является то, какой output они генерируют.
Мне кажется это связано с тем, насколько они странно реализованы.
Если создать enum без значений, либо использовать числа в качестве значений enum — то сгенерируется странная структура данных, которая будет маппить не только элементы вашего enum к числам, но и числа к каждому элементу.
Наглядный пример можно увидеть вот в этом плейграунде.
Также есть еще одна странная вещь, которая называется const enums.
Это те же enum, только во время компиляции они инлайнятся и исчезают из кода.
В теории идея крута. На практике это может сильно замедлить сборку, да и кроме самого tsc никто особо с ними и не умеет работать (по крайней мере бабель точно не умел).
В основном по этим причинам и не хотят люди их использовать.
Однако, если использовать только не константные строковые enum — то они очень удобны.
Во первых, сразу одной записью генерируется значение + тип.
Во вторых, в те типы, которые ожидают ваш enum, нельзя присвоить обычную строку с таким же значением. Обязательно нужно использовать элемент енума. На языке умных людей это называется номинальностью.
В общем, в конечном итоге вам решать, юзать их или нет. Но если придерживаться этих 2-х правил — то я думаю, что они очень удобны.
#devtips #typescript
Хотел бы поделиться своим мнением касательно enum’ов в Typescript.
Как вы знаете, сейчас стало модно их хейтить, причиной является то, какой output они генерируют.
Мне кажется это связано с тем, насколько они странно реализованы.
Если создать enum без значений, либо использовать числа в качестве значений enum — то сгенерируется странная структура данных, которая будет маппить не только элементы вашего enum к числам, но и числа к каждому элементу.
Наглядный пример можно увидеть вот в этом плейграунде.
Также есть еще одна странная вещь, которая называется const enums.
Это те же enum, только во время компиляции они инлайнятся и исчезают из кода.
В теории идея крута. На практике это может сильно замедлить сборку, да и кроме самого tsc никто особо с ними и не умеет работать (по крайней мере бабель точно не умел).
В основном по этим причинам и не хотят люди их использовать.
Однако, если использовать только не константные строковые enum — то они очень удобны.
Во первых, сразу одной записью генерируется значение + тип.
Во вторых, в те типы, которые ожидают ваш enum, нельзя присвоить обычную строку с таким же значением. Обязательно нужно использовать элемент енума. На языке умных людей это называется номинальностью.
В общем, в конечном итоге вам решать, юзать их или нет. Но если придерживаться этих 2-х правил — то я думаю, что они очень удобны.
#devtips #typescript
👍34❤5💯3⚡2🍓1💊1
Всем привет!
Как вы знаете, this в JavaScript далеко не из самых простых вещей для понимания.
Есть очень много разных кейсов — use strict, type=“moulde”, arrow/обычные функции, классы и тд.
Так вот, хотел бы поделиться с вами самым полноценным объяснением, что я встречал. И самое удивительное то, что написано оно в ответах на stack overflow.
Всем рекомендую почитать, там очень много случаев, о которых я сам не знал.
https://stackoverflow.com/questions/3127429/how-does-the-this-keyword-work-and-when-should-it-be-used/3127440#3127440
#devtips #js
Как вы знаете, this в JavaScript далеко не из самых простых вещей для понимания.
Есть очень много разных кейсов — use strict, type=“moulde”, arrow/обычные функции, классы и тд.
Так вот, хотел бы поделиться с вами самым полноценным объяснением, что я встречал. И самое удивительное то, что написано оно в ответах на stack overflow.
Всем рекомендую почитать, там очень много случаев, о которых я сам не знал.
https://stackoverflow.com/questions/3127429/how-does-the-this-keyword-work-and-when-should-it-be-used/3127440#3127440
#devtips #js
Stack Overflow
How does the "this" keyword work, and when should it be used?
I am looking to find a clear explanation of what the "this" keyword does, and how to use it correctly.
It seems to behave strangely, and I don't fully understand why.
How does this work and
It seems to behave strangely, and I don't fully understand why.
How does this work and
💯26👍21🔥8✍3❤1🍓1
Всем привет!
Сегодня хотел бы поделиться одной вещью, которая очень сильно помогла прокачать мои софт скиллы — это ведение различных встреч на работе.
Да, понимаю, что занятие не из самых приятных, особенно для более замкнутых людей. Однако смотря назад понимаю, что это дало чуть ли не самый большой прогресс в уверенности.
Собственно, немного самой истории. Раньше мне было очень сложно говорить на встречах, где находится много людей, особенно, если я их плохо знаю.
Я помню даже в первые дни на новой работе было некомфортно на стендапе рассказывать про свой прогресс по задачам.
Однако, когда я попал в Яндекс — все поменялось. Работал я в маленькой команде и в целом хотел активно расти по грейду. Все это требовало активного участие и в продуктовой проработке фич.
Да, можно было бы быть чуть менее активным, тогда где-то бы и продукт брал бы на себя часть, а где-то лид, но в любом случае избежать полностью и молчать не вышло бы.
Тогда результаты были бы не те, да и понимание быстро пришло, что это точка роста огромная, так как многие люди с двух ног даже на встречи всего отдела приходили. Так что пришлось идти против себя и адаптироваться.
В общем, вот уже я и не в Яндексе, но понимаю, что все эти муторные встречи может и не были полезны с точки зрения хард скиллов, но вот софты очень сильно выросли.
На последней работе тоже было очень просто интегрироваться в команду. Считай сразу начал всякие идеи рассказывать на фронтовых встречах и спорить по тех моментам.
Так что всем советую пробовать брать ответственность на себя и активно участвовать на встречах и вести их. Занятие может не самое приятное по началу, но для развития карьеры и в жизни будет супер полезно.
#devtips #softskills
Сегодня хотел бы поделиться одной вещью, которая очень сильно помогла прокачать мои софт скиллы — это ведение различных встреч на работе.
Да, понимаю, что занятие не из самых приятных, особенно для более замкнутых людей. Однако смотря назад понимаю, что это дало чуть ли не самый большой прогресс в уверенности.
Собственно, немного самой истории. Раньше мне было очень сложно говорить на встречах, где находится много людей, особенно, если я их плохо знаю.
Я помню даже в первые дни на новой работе было некомфортно на стендапе рассказывать про свой прогресс по задачам.
Однако, когда я попал в Яндекс — все поменялось. Работал я в маленькой команде и в целом хотел активно расти по грейду. Все это требовало активного участие и в продуктовой проработке фич.
Да, можно было бы быть чуть менее активным, тогда где-то бы и продукт брал бы на себя часть, а где-то лид, но в любом случае избежать полностью и молчать не вышло бы.
Тогда результаты были бы не те, да и понимание быстро пришло, что это точка роста огромная, так как многие люди с двух ног даже на встречи всего отдела приходили. Так что пришлось идти против себя и адаптироваться.
В общем, вот уже я и не в Яндексе, но понимаю, что все эти муторные встречи может и не были полезны с точки зрения хард скиллов, но вот софты очень сильно выросли.
На последней работе тоже было очень просто интегрироваться в команду. Считай сразу начал всякие идеи рассказывать на фронтовых встречах и спорить по тех моментам.
Так что всем советую пробовать брать ответственность на себя и активно участвовать на встречах и вести их. Занятие может не самое приятное по началу, но для развития карьеры и в жизни будет супер полезно.
#devtips #softskills
❤34🔥12👍7💯2🏆2🍓1
Всем привет!
Вышло новое видео на канале, где мы общаемся и решаем задачки с Василием — техлидом и моим бывшим руководителем.
Дайте знать, как вам формат полу-общения/полу-собеса. На самом деле в начале планировали сделать именно жесткий тех собес, но все как-то пошло чуть в другую сторону.
https://youtu.be/qo-EWg_VCOo
Вышло новое видео на канале, где мы общаемся и решаем задачки с Василием — техлидом и моим бывшим руководителем.
Дайте знать, как вам формат полу-общения/полу-собеса. На самом деле в начале планировали сделать именно жесткий тех собес, но все как-то пошло чуть в другую сторону.
https://youtu.be/qo-EWg_VCOo
YouTube
ЛАМПОВОЕ СОБЕСЕДОВАНИЕ и общение с ТЕХЛИДОМ | FRONTEND | JAVASCRIPT
В данном видео мы проводим собеседование и общаемся с Василием - техлоидом и моим бывшым руководителем. Говорим про Vue и React, решаем неочевидные задачи и делимся мнением на холиварные темы.
00:00-04:20 - Знакомство с кандидатом и его последней работой…
00:00-04:20 - Знакомство с кандидатом и его последней работой…
🔥20❤5👍4💯2🍓1
Всем привет! Пришло время подводить результаты конкурса!
Победители у нас @hdbdbeben, @whoisbroken, @avil_dev с комментами под индексами 364, 314 и 446 соотвественно.
Из интересного — у победитель прошлого конкурса выиграл и тут, что удивило меня самого тоже.
Со всеми свяжусь в личке, давайте поздравим победителей.
Победители у нас @hdbdbeben, @whoisbroken, @avil_dev с комментами под индексами 364, 314 и 446 соотвественно.
Из интересного — у победитель прошлого конкурса выиграл и тут, что удивило меня самого тоже.
Со всеми свяжусь в личке, давайте поздравим победителей.
👍29🎉5💯3⚡1👎1🍓1
Всем привет!
Хотел бы поделиться интересной вещью, о которой я сам недавно узнал. Это Edge Runtime.
По сути это мини рантайм схожий с Node.js, однако он не имеет доступ ко всем его API. В качестве движка также использует V8.
В доке говориться, что сам edge runtime нужен больше для фреймворков. Однако есть еще и edge functions. Это по сути те же lambda функции, но на edge runtime.
И вот тут как раз и проявляется основная польза, по сравнению с Node.js. Из-за лимитированного количества фич, сам рантайм стартует очень быстро, что позволит избежать больших холодных стартов, как в случае с лямбда-функциями.
В общем, выглядит как супер интересная штука, так как для большинства случаев особо нативные АПИ и не нужны.
https://edge-runtime.vercel.app/
#devtips #cloud
Хотел бы поделиться интересной вещью, о которой я сам недавно узнал. Это Edge Runtime.
По сути это мини рантайм схожий с Node.js, однако он не имеет доступ ко всем его API. В качестве движка также использует V8.
В доке говориться, что сам edge runtime нужен больше для фреймворков. Однако есть еще и edge functions. Это по сути те же lambda функции, но на edge runtime.
И вот тут как раз и проявляется основная польза, по сравнению с Node.js. Из-за лимитированного количества фич, сам рантайм стартует очень быстро, что позволит избежать больших холодных стартов, как в случае с лямбда-функциями.
В общем, выглядит как супер интересная штука, так как для большинства случаев особо нативные АПИ и не нужны.
https://edge-runtime.vercel.app/
#devtips #cloud
Vercel
Vercel Functions
Functions enable running compute on-demand without needing to manage your own infrastructure, provision servers, or upgrade hardware.
❤11💯5🎉2👍1🍓1
Всем привет!
Выпустил новое видео, где я провожу ревью проекта для сдачи недвижимости, стек — react, redux, RTQ, typescript.
Постарался в этот раз подойти больше со стороны архитектуры и flow данных, нежели конкретных моментов в коде. Обязательно дайте фидбэк в комментариях касательно такого формата.
https://youtu.be/T7wyC4cWWjs
Выпустил новое видео, где я провожу ревью проекта для сдачи недвижимости, стек — react, redux, RTQ, typescript.
Постарался в этот раз подойти больше со стороны архитектуры и flow данных, нежели конкретных моментов в коде. Обязательно дайте фидбэк в комментариях касательно такого формата.
https://youtu.be/T7wyC4cWWjs
YouTube
РЕВЬЮ ПРОЕКТА ДЛЯ СДАЧИ НЕДВИЖИМОСТИ | FRONTEND | REACT REDUX
В данном видео мы рассмотрим проект для сдачи недвижимости в аренду написанный на стеке React, Redux, Redux-toolkit, TypeScript. Разберем проблемы в код, UX и архитектуре и поправим некоторые из них.
Ссылка на проект:
https://github.com/locrun/sdaem-by
…
Ссылка на проект:
https://github.com/locrun/sdaem-by
…
❤39👍6💯3🔥2🏆2🍓1
Всем привет!
Небольшой апдейт по поводу моей библиотеки для i18n (писали некоторые подписчики, что используют в своих проектах).
Так вот, примерно 3 недели назад, человек открыл issue о том, что получает ошибку
Мне это показалось странным, так как я все тестировал несколько раз. Причем самое интересное, при тестировании внутри самого проекта, такой проблемы не было, однако при добавлении через npm такая проблема всплывала (пока не узнал почему так, хотя интересно).
В общем, причина оказалась как раз в подхвате параметров из литеральной строки вот в этой части кода.
Там по итогу используется очень много conditional и вложенных типов, что в какой-то момент TS говорит “все” и останавливает проверку.
Причем самое интересное то, что эта ошибка возникает не при использовании метода
Сравнение как раз происходит совсем в неочевидном месте — при инициализации дженериков для хуков react.
То есть при передачи инстанса в дженерик, TS проверят, что переданный аргумент соответствует ограничению (constraint) и как раз на этом моменте и фейлиться.
В целом, как эту проблему поправить я пока не знаю, надо посидеть и подумать. Есть пару идей с костылями, а есть чуть более правильные решения.
Изначально я поэтому и сделал подхват параметров опциональным, чтобы при каких-то проблемах с TS его можно было отключить по флагу и все работало нормально.
Но как видите, получилось не идеально. В общем, надо будет подумать, как все лучше организовать. А пока просто ревертнул последние изменения.
Небольшой апдейт по поводу моей библиотеки для i18n (писали некоторые подписчики, что используют в своих проектах).
Так вот, примерно 3 недели назад, человек открыл issue о том, что получает ошибку
Type instantiation is excessively deep and possibly infinite
от TS, когда типизирует хуки (конкретный пример смотрите в самом issue).Мне это показалось странным, так как я все тестировал несколько раз. Причем самое интересное, при тестировании внутри самого проекта, такой проблемы не было, однако при добавлении через npm такая проблема всплывала (пока не узнал почему так, хотя интересно).
В общем, причина оказалась как раз в подхвате параметров из литеральной строки вот в этой части кода.
Там по итогу используется очень много conditional и вложенных типов, что в какой-то момент TS говорит “все” и останавливает проверку.
Причем самое интересное то, что эта ошибка возникает не при использовании метода
get
, в типизации которого как раз и используется эта махина, а при сравнении 2-х инстансов.Сравнение как раз происходит совсем в неочевидном месте — при инициализации дженериков для хуков react.
// use-i18n.ts
export function useI18N<I18NType extends I18N<any>>() { /* .... */}
// i18n.ts
const i18n = new I18N({...params})
const useI18N = useI18NBase<typeof i18n>;
// ^^^^^^^^^^^^^^^^^^^^^^^^
// Type instantiation is excessively deep and possibly infinite
То есть при передачи инстанса в дженерик, TS проверят, что переданный аргумент соответствует ограничению (constraint) и как раз на этом моменте и фейлиться.
В целом, как эту проблему поправить я пока не знаю, надо посидеть и подумать. Есть пару идей с костылями, а есть чуть более правильные решения.
Изначально я поэтому и сделал подхват параметров опциональным, чтобы при каких-то проблемах с TS его можно было отключить по флагу и все работало нормально.
Но как видите, получилось не идеально. В общем, надо будет подумать, как все лучше организовать. А пока просто ревертнул последние изменения.
GitHub
GitHub - Ayub-Begimkulov/i18n
Contribute to Ayub-Begimkulov/i18n development by creating an account on GitHub.
👍22❤4💯2🎉1🍓1