zede code
2.36K subscribers
17 photos
91 links
Канал о коде и нетолько

Vue-центричный канал: https://t.iss.one/vueist
ЛС: https://t.iss.one/zede1697
Download Telegram
Всем привет. Мне тут прилетело что я тут отдельную оповещалку не делаю про стримы по курсу вью.
Но они идут и уже успешно 4 дня. Сегодня уже запустился 5ый стрим по роутеры и чанкам.

https://www.twitch.tv/izede
🔥4👍1
Всем доброго времени суток. Сегодня небольшая пауза от курса, пока часть ребят занимаются своими делами/догоняют/повторяют.
Я же анонсирую интервью с создателем Mantine. одной из лучших UI библиотек для React.

Если у вас есть вопросы к создателю. можете их накидать в комменты.
Интервью сегодня в 18:00. Увидимся!
🔥10👍1
Мы начинаем подкаст с Виталием Ртищевым. Создатель Mantine.

Начинаем с минуты на минуту https://www.twitch.tv/izede
🔥2
Всем доброго времени суток.
Сегодня продолжаем изучение Vue.
Поговорим о options api и чем options + setup отличается от script setup

https://www.twitch.tv/izede
🔥3
Всем привет. Сегодня получится лайт-вариант стрима даже уроком не назову

повозимся с Vue-хой поотвечаем на впоросы.
Попишем примитивную "админку" чата.

https://www.twitch.tv/izede
👍3🔥1
Всем привет.

Сейчас будет не-собес по фронтенд разработке на React. Присоединяйтесь
PS. На 2 следующие недели не-собесы уже будут совсем далеко не по Frontend-у 😏

https://www.twitch.tv/izede
👍2🔥2
В гостях в супер коротком формате.
Буду крайне предвзят и накидывать кучу субъективщины
Не знаю что можно за 15 мин рассказать по такой теме, но попытаюсь :D
(специально максимально холливарная тема и подача, все ради актива)
Сейчас будет не-собес по GameDev разработке на Unity. Присоединяйтесь
Будет что-то новое

https://www.twitch.tv/izede
🔥2
А вот и причина, почему стримы пока отложены.
Готовлюсь к данному докладу.
Самой трансляции на конференции не будет ((
Но обещают что через 2-3 недели видео выложат на ютубе

PS. Я помню про 2 заказа висящих на мне
- с меня доклад по v8 (тема ответственная, поэтому хочу подготовиться)
- с меня... flappy bird на 1C (чтобы это ни было....)
Forwarded from UFACODER (Наталья Кириллова)
Секция Frontend на UFADEVCONF V

Денис Чернов - увлеченный frontend-программист в платформенной команде Спортмастера. Влюблен и познает JS уже 12 лет. Евангелист Vue-фреймворка. Стример в IT-сегменте, где он разбирается с различными технологиями, а в особенности с Vue и JavaScript.

Денис расскажет о том, какие существуют популярные заблуждения в сообществе и что с собеседованиями по JS не так:

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

Программа конференции https://dc.ufacoder.com
🔥8👍7
Всем привет, какое-то время мы не виделись, но у меня для вас достаточно новостей:
1) скоро выложу доклад с UFADEVCONF
2) сейчас будет предновогодний стрим с SIBERIA CAN CODE
3) на новогодних праздниках будет серия стримов на разные темы
👍2🔥1
Уже через пару часов, великий новогодний стрим 🥰

🎙 ПАРНИШКИ В АЙТИШКЕ - вечерний react (feat Corden, joindev, izede, Honey Montana, artalar)

Всех с наступающим новым годом 🎄, 28 декабря в 17:00 по мск мы всех вас ждем на наш новогодний подкаст с гостями, будет супер лампово, всех ждем 😍

youtubetwitchvk
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8
Поделюсь небольшой радостью
Мой доклад прошел на Holy.js начинаем к нему готовиться.

ПС. в комменты кинул видео с прошлого доклада на UfaDevConf для тех кто еще не видел
🔥17👍2
И еще раз уж начал о новостях. Вчера поучаствовал в новом для себя деле.
Участвовал в роли спикера на съемках курса по Vue.js
И это прям... супер тяжело :D
почти 6 часов записывали буквально 5 небольших уроков.
Если честно, вышло прям совсем плохо- у меня. Но я и шел туда с целью получить этот болзненный опыт и поднять кач-во контента.
Хотя вряд ли я смогу перед видосами или стримами пол часа делать мейкап (да гриммировали прям по жесткому :D)

Подготовка этого курса как текстовой версии так и видео съела прилично нервов и времени.
Зато узнал много нового и, думаю, смогу в скором времени реализовать его и для вас.
👍12🔥7
Обычно я не пишу сюда технический материал. Но почему бы и не попробовать.

У меня дико неоднозначные ощущения от TS. Когда он только вышел, то вызывал эйфорию, так как обещалось очень многое...
Но годы идут и уже четкое понимание: этот язык обречен навечно остаться сырым.

На TS взвалили непосильную задачу: решить проблемы с типизацией TS для повышения DX.
А у JS хватает своих приколов: неопределённый тип у this. Почти что угодно может стать чем угодно. Расширение прототипов и тд…

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

Сегодня я бы подсветил проблему у типа void. Что же он означает?
Что функция ничего не возвращает? Мммм не совсем. Это значит, что результат функции должен игнорироваться.
Те результат функции не должен ни на что влиять.

Делаем пару простых пассов с типами:
function foo(test: boolean): void {
if (test) {
// можем делать пустой возврат
return
}
// можем явно возвращать undefined
return undefined
}

function bar(test: boolean): void {
if (test) {
// (ОШИБКА!) другие falsy значения не прокатят
return false
}
// (ОШИБКА!) другие falsy значения не прокатят
return null
}


Пока вроде все хорошо. Но значит ли что void подобен undefined?
Продолжаем следить за руками
function baz(test: number): void {
if (test === 0) {
// результатом функции которая возвращает void может быть вызов функции возвращающий void
return (function(): void {})()
} else if (test === 1) {
// результатом функции которая возвращает void может быть вызов функции возвращающий undefined
return (function(): undefined {})()
} else if (test === 2) {
// (ОШИБКА!) а вот другие функции не пустит
return (function(): number { return 5 })()
}
}


Все еще никаких странностей. Но что будет если мы будем принимать ее в качестве аргумента
function qux(cb: () => void) {
    return cb()
}

// все хорошо
qux(function(): void {})

// и все еще все хорошо
qux(function(): undefined {})

// стоп что? Ошибки нет
qux(function(): number { return 5 })


Вот тут уже начинаются странности. И тут уже начинаются расхождения void с undefined. Те мы можем передать как аргумент функции которые возвращают что угодно (да даже never)
// все окей, вызывай функцию
qux(function(): never { throw 5 })


Что же это значит? Да то что любой тип может расширять void? Да нет
type isVoid<X> = X extends void ? true : false

type test1 = isVoid<undefined>
//   ^? true
type test2 = isVoid<null>
//   ^? false
type test3 = isVoid<never>
//   ^? never


Вроде не расширяется. Возвращаемся к нашим функциям и смотрим как расширяются void функции
type isVoidFunction<X> = X extends () => void ? true : false

type test4 = isVoidFunction<() => undefined>
//   ^? true

type test5 = isVoidFunction<() => null>
//   ^? true

type test6 = isVoidFunction<() => never>
//   ^? true


Вот оно как... Но это лишь подводка к главному примеру: void и сложение типов. void по своей сути говорит, что "игнорируй возвращаемое событие". Но если мы его смешиваем с другим значением, то TS закрывает руки и говорит "ну делай что хочешь"

const some = (cb: () => (void | number)) => {
    const value = cb() // void | number

// отсекаем void
    if (value) {
        value
        //^? number
    }
}

// ожидаем функцию которой все равно что вернет (например для мемоизации)
const example = (cb: () => void) => {
    return cb
}

// и ломаем рантайм к чертям, ибо TS пофиг
// он считает что () => 'hello' это расширение для () => void
// а вот JS пойдет по пути number
// так как 'hello' пройдет проверку на if (value)
some(example(() => 'hello'))


Вам кажется что тут пассы такие синтетические? Далеко ходить не нужно. union-ы с void вполне используются в коде React-а для useEffect
type Arg = Parameters<typeof useEffect>[0]
//    ^? () => void | Destructor

// Нет проблем. вот вам async коллбек для useEffect
// Конечно он не будет работать как надо, но TS доволен
useEffect(example(async () => {}), [])
🤯8🔥3🤔1
Так проблема имеется. Но как ее решить? Может использовать undefined вместо явного void? Тоже не выход,
- так как функции () => void не являются расширениями к () => undefined
- так еще и всегда придется четко прописывать типы
const someFixed = (cb: () => (undefined | number)) => {}
someFixed(() => undefined) // все окей
someFixed(() => {}) // ERROR! void несовместим с undefined


Мне пока не пришло в голову как можно красиво это обойти, да и у команды React видимо тоже. И нет, мы не первые сделали это открытие. Есть вот такой пропозал в TS.

В нем данная тема рассматривается достаточно подробно. Кто осилил "лонгрид" спасибо. Буду рад услышать чужие мысли. Ну и спасибо тем, кто подталкивал меня к верным рассуждениям в моем импульсе(отдельное спасибо @cevek) :D

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

PS. Текст написан в импульсе и поэтому может содержать ошибки в выводах. Поэтому не стесняйтесь ругать за неверные рассуждения, буду только благодарен
🔥8🤔3
Ладно, таких тонкостей о появлении React я не знал 😀
🔥2
Forwarded from kirjs_ru
Появление React ребята из Facebook часто объясняют примерно вот так:

В далеком 2013 году в Facebook Chat часто появлялись фантомные сообщения: уведомление приходило, иконка загоралась, а самого сообщения не было.

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


У меня всегда были вопросы к этому объяснению. А вчера Adam Wolff причастный к разработке добавил деталей:

Да, React, был действительно создан для решения проблемы фантомных уведомлений, но эту проблему он в результате не решил, потому что проблема на самом деле была в кривых настройках DNS где-то в Индии, и когда DNS починили проблема ушла.

https://twitter.com/dmwlff/status/1762885255030259854?s=20
🤯11👍6🤔3