Андруша пишет код
Отношеньки pt2 https://news.1rj.ru/str/xavescor_code/30 Учись работать в команде - не трать время на фигню Предположим что вы установили какие-то правила по написанию кода. К примеру, у нас в команде мы решили что использовать React.useCallback - не очень хорошая идея…
Предположим, что вы сумели договориться и написали правило, которое запрещает писать тот или иной код. Но как это внедрить?
Есть пакет https://github.com/amanda-mitchell/suppress-eslint-errors, который расставит eslint-ignore в нужных местах. В итоге у вас будет и CI зелёный, и новый код будет уже правильным и красивым. А старый вы постепенно переработаете в процессе будущих задач.
Есть пакет https://github.com/amanda-mitchell/suppress-eslint-errors, который расставит eslint-ignore в нужных местах. В итоге у вас будет и CI зелёный, и новый код будет уже правильным и красивым. А старый вы постепенно переработаете в процессе будущих задач.
GitHub
GitHub - amanda-mitchell/suppress-eslint-errors: Suppress existing violations of new eslint rules and get back to building stuff.
Suppress existing violations of new eslint rules and get back to building stuff. - amanda-mitchell/suppress-eslint-errors
🔥3❤1
Когда у меня в очередной раз отваливается сафари с утечкой памяти на ютубе мне всегда хочется посмотреть на тех людей, кто говорит, что фронт - это просто и любая макака справится.
Походу в гугле только макаки и работают.
Для воспроизведения достаточно открыть на одной и той же вкладке эдак 50 видео. К примеру, послушать музыку у плейлисте или же полистать шортсы.
Из полезного: думайте над утечками памяти через глобальные ресурсы. К примеру, setInterval полезно закрывать всегда.
Походу в гугле только макаки и работают.
Для воспроизведения достаточно открыть на одной и той же вкладке эдак 50 видео. К примеру, послушать музыку у плейлисте или же полистать шортсы.
Из полезного: думайте над утечками памяти через глобальные ресурсы. К примеру, setInterval полезно закрывать всегда.
🔥5
Анналы
Slack, github/gitlab/jira issues популяризировали идею того, что сообщения - это и есть документация к коду. Но почему-то люди с одной стороны поддерживают это, а с другой стороны наплевательски относятся к этому.
Как делать плохо: https://github.com/XaveScor/gulp/blob/master/index.js#L5
Как делать хорошо: https://github.com/XaveScor/gulp/blob/d90d9476e64e5c684f18e832529d7ac472b028a9/index.js#L5
Хеш, который находится в урле - это важная вещь, потому что имена веток протухают, так как их HEAD блуждает по коммитам, а хеши постоянны(почти. Увы, гитхаб 1 раз менял их генерацию).
Как воспользоваться?
- На странице гитхаба, которую хотите расшарить нажмите `y`(латинская) и у вас в урле будет урл с хешем коммита.
- Для IDE от JetBrains можно поставить крутой плагин https://plugins.jetbrains.com/plugin/8183-gitlink, который позволяет копировать ссылки на кучу сервисов(github, gitlab, bitbucket, etc) прямо из IDE
Slack, github/gitlab/jira issues популяризировали идею того, что сообщения - это и есть документация к коду. Но почему-то люди с одной стороны поддерживают это, а с другой стороны наплевательски относятся к этому.
Как делать плохо: https://github.com/XaveScor/gulp/blob/master/index.js#L5
Как делать хорошо: https://github.com/XaveScor/gulp/blob/d90d9476e64e5c684f18e832529d7ac472b028a9/index.js#L5
Хеш, который находится в урле - это важная вещь, потому что имена веток протухают, так как их HEAD блуждает по коммитам, а хеши постоянны(почти. Увы, гитхаб 1 раз менял их генерацию).
Как воспользоваться?
- На странице гитхаба, которую хотите расшарить нажмите `y`(латинская) и у вас в урле будет урл с хешем коммита.
- Для IDE от JetBrains можно поставить крутой плагин https://plugins.jetbrains.com/plugin/8183-gitlink, который позволяет копировать ссылки на кучу сервисов(github, gitlab, bitbucket, etc) прямо из IDE
GitHub
gulp/index.js at master · XaveScor/gulp
A toolkit to automate & enhance your workflow. Contribute to XaveScor/gulp development by creating an account on GitHub.
🔥1🤮1
Как воспользоваться?
- На странице гитхаба, которую хотите расшарить нажмите `y`(латинская) и у вас в урле будет урл с хешем коммита.
- Для IDE от JetBrains можно поставить крутой плагин https://plugins.jetbrains.com/plugin/8183-gitlink, который позволяет копировать ссылки на кучу сервисов(github, gitlab, bitbucket, etc) прямо из IDE
- Для VSCode сорян, не использую, но уверен, что есть аналог.
Делайте свои ссылки постоянными, чтобы через полгода-год-два вы могли понять куда вы ссылались.
- На странице гитхаба, которую хотите расшарить нажмите `y`(латинская) и у вас в урле будет урл с хешем коммита.
- Для IDE от JetBrains можно поставить крутой плагин https://plugins.jetbrains.com/plugin/8183-gitlink, который позволяет копировать ссылки на кучу сервисов(github, gitlab, bitbucket, etc) прямо из IDE
- Для VSCode сорян, не использую, но уверен, что есть аналог.
Делайте свои ссылки постоянными, чтобы через полгода-год-два вы могли понять куда вы ссылались.
👍3🤮1
Никогда, НИКОГДА, НИ-КАГ-ДА не называйте переменные именами апих из глобального скоупа.
Сегодня я потратил часов 5 выясняя из стектрейса на 2 страницы(Не стебусь, реально 2) почему у меня в fetch нет метода catch.
Угадали? Верно, потому что fetch - это имя переменной, а не функция из globalThis. Вот зла не хватает, когда подобное видишь.
Назови человек переменную fetchFx, я бы не перелопачивал исходники jsdom и ещё 3 библитек, которые используются в тестах.
Поберегите психическое здоровье своих коллег из команды. Они знают где вы живёте.
Сегодня я потратил часов 5 выясняя из стектрейса на 2 страницы(Не стебусь, реально 2) почему у меня в fetch нет метода catch.
Угадали? Верно, потому что fetch - это имя переменной, а не функция из globalThis. Вот зла не хватает, когда подобное видишь.
Назови человек переменную fetchFx, я бы не перелопачивал исходники jsdom и ещё 3 библитек, которые используются в тестах.
Поберегите психическое здоровье своих коллег из команды. Они знают где вы живёте.
😁14❤1👍1🤬1🤮1
Не думай о хорошем
Прошла неделя с момента кривого ютуба(https://news.1rj.ru/str/xavescor_code/44) и я начинаю подозревать, что мартышки повсюду. Потому что зачем планировать то как код будет работать в нештатной ситуации? Внезапно, код может упасть или ещё что-то подобное. К примеру, еикто в тестах не думает насколько удобно работать с упавшим тестом. А поэтому никто не чистит за собой ресурсы.
Если вы в тестах не пишите
при работе с ресурсами, то у вас проблемы. Потому что иначе у вас ресурсы будут утекать. Есть, конечно, https://github.com/tc39/proposal-explicit-resource-management, но когда оно появится?
Прошла неделя с момента кривого ютуба(https://news.1rj.ru/str/xavescor_code/44) и я начинаю подозревать, что мартышки повсюду. Потому что зачем планировать то как код будет работать в нештатной ситуации? Внезапно, код может упасть или ещё что-то подобное. К примеру, еикто в тестах не думает насколько удобно работать с упавшим тестом. А поэтому никто не чистит за собой ресурсы.
Если вы в тестах не пишите
const finalizers = [];
try {
doSmth();
} finally {
finalizers.forEach(f => f());
}
при работе с ресурсами, то у вас проблемы. Потому что иначе у вас ресурсы будут утекать. Есть, конечно, https://github.com/tc39/proposal-explicit-resource-management, но когда оно появится?
Telegram
Андруша пишет код
Когда у меня в очередной раз отваливается сафари с утечкой памяти на ютубе мне всегда хочется посмотреть на тех людей, кто говорит, что фронт - это просто и любая макака справится.
Походу в гугле только макаки и работают.
Для воспроизведения достаточно…
Походу в гугле только макаки и работают.
Для воспроизведения достаточно…
👍2
За последние 3 дня я столкнулся с двумя ситуациями:
- gulp.watch - штука которая смотрит за ФС, но, внезапно, криво размонтируется в тестах. Из-за чего в 3 из 4 случаев у меня тесты падают в случайном месте. Просто из-за кривого размонтирования. Никогда не чистите так за собой. https://github.com/XaveScor/gulp/blob/dad4fde180bdeeaa8da0de9c8cd3598af97ea67b/test/watch.mjs#L44
- Работа с сетью - аналогичная штука. Но тут ситуация серьёзнее. Из-за того что некоторые веб сервисы могут быть недоступны, то приходится навешивать retry. Из-за чего при падении теста код не доходит до освобождения ресурсов и на всё время прогонки тестов я получаю утечку. Из-за чего тесты опять же выпадают в ООМ или в другую ошибку.
Не будь макакой - думай и о плохом.
- gulp.watch - штука которая смотрит за ФС, но, внезапно, криво размонтируется в тестах. Из-за чего в 3 из 4 случаев у меня тесты падают в случайном месте. Просто из-за кривого размонтирования. Никогда не чистите так за собой. https://github.com/XaveScor/gulp/blob/dad4fde180bdeeaa8da0de9c8cd3598af97ea67b/test/watch.mjs#L44
- Работа с сетью - аналогичная штука. Но тут ситуация серьёзнее. Из-за того что некоторые веб сервисы могут быть недоступны, то приходится навешивать retry. Из-за чего при падении теста код не доходит до освобождения ресурсов и на всё время прогонки тестов я получаю утечку. Из-за чего тесты опять же выпадают в ООМ или в другую ошибку.
Не будь макакой - думай и о плохом.
👍2
Forwarded from © Как его там… (Dmitry Remezov)
#tip
В TS variadic functions можно выражать через tuple
Раньше для типизации функции с переменным количеством аргументов нужно было писать километровые портянки перегрузок.
С энных версий (уже довольно давно) у нас есть типизация таплов и рекурсивные типы, не пишите портянки.
В TS variadic functions можно выражать через tuple
Раньше для типизации функции с переменным количеством аргументов нужно было писать километровые портянки перегрузок.
С энных версий (уже довольно давно) у нас есть типизация таплов и рекурсивные типы, не пишите портянки.
👍7👀1
Андруша пишет код
Давайте поиграем в игру: В опенсорс сообществе есть человек, который пилит огромное количество библиотек: https://www.npmjs.com/~sindresorhus Около двух лет назад он понял, что commonjs мёртв и нужно поддерживать только esm: https://gist.github.com/sindr…
Синдерхорнус продолжает ультовать.
https://sindresorhus.com/blog/goodbye-nodejs-buffer
95% статьи я поддерживаю. Там описаны супер граммотные идеи. К примеру: в еслинте запрещаем использование нодового Buffer, чтобы потом постепенно переписать на стандарт. Но блин, его кардинальность "ломаем обратку в либах" - это нечто.
Хотя, форкнув галп, я всё больше и больше понимаю Хорнуса. Апихи ноды спроектированы оочень плохо. Всё в ноде, что не покрыто стандартами от W3C сделаны чужими для хищников. Но об этом чуть позже.
https://sindresorhus.com/blog/goodbye-nodejs-buffer
95% статьи я поддерживаю. Там описаны супер граммотные идеи. К примеру: в еслинте запрещаем использование нодового Buffer, чтобы потом постепенно переписать на стандарт. Но блин, его кардинальность "ломаем обратку в либах" - это нечто.
Хотя, форкнув галп, я всё больше и больше понимаю Хорнуса. Апихи ноды спроектированы оочень плохо. Всё в ноде, что не покрыто стандартами от W3C сделаны чужими для хищников. Но об этом чуть позже.
Sindresorhus
Goodbye, Node.js Buffer
It's time to move from Buffer to Uint8Array.
👀2
https://dev.to/muhammadazfaraslam/highlight-on-the-new-features-of-next-js-14-config-2023-4lbe
Главное впечатление от прошедшей конфы некста на фото.
Всё время люди работали над разделением зон ответственности и упрощении каждой из частей, а тут на - всё в перемешку. Мало того, что альфа версию реакта используют. Мало того, что используют недокументированные возможности реакта. А тут ещё и такая дичь. Nextjs - становится, если не стал, очень большой занозой.
Главное впечатление от прошедшей конфы некста на фото.
Всё время люди работали над разделением зон ответственности и упрощении каждой из частей, а тут на - всё в перемешку. Мало того, что альфа версию реакта используют. Мало того, что используют недокументированные возможности реакта. А тут ещё и такая дичь. Nextjs - становится, если не стал, очень большой занозой.
👍7🆒3🦄3🥰1
Для меня, как для фронтенд разработчика, очень просто воспринимать компании на рынке:
- Apple - делает отличные ноутбуки для моей работы. Но ужастные для домашнего использования
- Google - прекрасный ютуб, который мне помог своими видео в начале моей карьеры. Остальными сервисами не пользуюсь
- JetBrains - отличные IDE на любой вкус
и так далее.
Но в этом списке есть одна компания, которая одновременно несёт добро в этот мир, которое сделано максимально через задницу.
Это компания Microsoft. По какой-то непонятной причине сотрудники этой компании живут так, как будто завтра апокалипсис.
1. Давай глянем как MS покупает компании. Например: В 2020 году купила npmjs.com. Хорошая новость? Да, npm начал конкурировать с ярном и, сейчас, с pnpm. Одни плюсы. Но публичную деятельность npm решили вести максимально дибильно. После покупки все анонсы(blog.npmjs.org) падают в блог гитхаба. Пробовали ли вы что-то искать в блоге гитхаба? Это просто неиндексируемая помойка из всего что принадлежит MS. Пользоваться этим стало на порядок менее удобно. Аналогично произошло с Mono(опенсорс рантайм для дотнета).
2. Давай посмотрим как MS ведёт разработку своих языков: C#, F#, TypeScript. Знаете что у них общего? У них нет общей спецификации. И если у C# есть хотя бы дельты, благодаря которым можно жить, то у остальной двойки полная задница - ты не можешь просто реализовать компилятор этих языков. До войны JetBrains делилась какой ад им приходится проходить, чтобы понять что есть в тайпскипте: https://www.youtube.com/watch?v=qddYQL5-rZY. Спойлер: они читают все исходники, потому что других мест для получения информации нет.
3. MS и опенсорс = ❤. Ну, вроде и так. Начиная с .Net Core Майки очень много вещей вынесли на общее обозрение. Но в чём может быть тут косяк? Ну... К примеру, если ты запрещаешь использовать опенсорсный дебаггер к дотнету вне своих продуктов. https://github.com/dotnet/core/issues/505
- Apple - делает отличные ноутбуки для моей работы. Но ужастные для домашнего использования
- Google - прекрасный ютуб, который мне помог своими видео в начале моей карьеры. Остальными сервисами не пользуюсь
- JetBrains - отличные IDE на любой вкус
и так далее.
Но в этом списке есть одна компания, которая одновременно несёт добро в этот мир, которое сделано максимально через задницу.
Это компания Microsoft. По какой-то непонятной причине сотрудники этой компании живут так, как будто завтра апокалипсис.
1. Давай глянем как MS покупает компании. Например: В 2020 году купила npmjs.com. Хорошая новость? Да, npm начал конкурировать с ярном и, сейчас, с pnpm. Одни плюсы. Но публичную деятельность npm решили вести максимально дибильно. После покупки все анонсы(blog.npmjs.org) падают в блог гитхаба. Пробовали ли вы что-то искать в блоге гитхаба? Это просто неиндексируемая помойка из всего что принадлежит MS. Пользоваться этим стало на порядок менее удобно. Аналогично произошло с Mono(опенсорс рантайм для дотнета).
2. Давай посмотрим как MS ведёт разработку своих языков: C#, F#, TypeScript. Знаете что у них общего? У них нет общей спецификации. И если у C# есть хотя бы дельты, благодаря которым можно жить, то у остальной двойки полная задница - ты не можешь просто реализовать компилятор этих языков. До войны JetBrains делилась какой ад им приходится проходить, чтобы понять что есть в тайпскипте: https://www.youtube.com/watch?v=qddYQL5-rZY. Спойлер: они читают все исходники, потому что других мест для получения информации нет.
3. MS и опенсорс = ❤. Ну, вроде и так. Начиная с .Net Core Майки очень много вещей вынесли на общее обозрение. Но в чём может быть тут косяк? Ну... К примеру, если ты запрещаешь использовать опенсорсный дебаггер к дотнету вне своих продуктов. https://github.com/dotnet/core/issues/505
YouTube
Эволюция TypeScript: язык и IDE (Андрей Старовойт, старший разработчик WebStorm)
TypeScript продолжает набирать популярность и осуществлять мечту JavaScript-разработчиков о языке с развитой системой типов и знакомым синтаксисом.
Я расскажу, как развивалась система типов в TypeScript и как это повлияло на то, какие возможности в поддержке…
Я расскажу, как развивалась система типов в TypeScript и как это повлияло на то, какие возможности в поддержке…
❤3
Так чего же я пригорел? Да от пункта #2. Typenoscript прекрасный язык, которым невозможно пользоваться полноценно, так как весь опыт передаётся только из уст в уста. Так же как и 20тыс. лет до нашей эры.
Простая задача: нужно затипизировать обёртку над либой отправки запросов: https://www.typenoscriptlang.org/play?#code/C4TwDgpgBACghgJzgWwM5QLxQN4CgoFQISpgD2AdqhACrgQBcUA5AFaqXNQA+LARgBsyfZgG5cAX1y5QkKAFk4AawgAlCAEcAriWDrgWhBTqQAPOtKVqJiAD5MUC+Sq16UCAA9gECgBN0bBwUzPiEAPxQqMAIAJYUAOahBExOVq5ynt5+AYLCXEmEBBEAQkJ8UAWFTBQQAG4QCOK4vhAAxgKI0ABmWhStwDGUUMjKapo6UQAUYEzwSGgAlEyKKurauvqGxvSmcyioANrMxJYuNswAurZNrVbAUB4OI6vjupPYJ87W9EyBnBILURQAD0wMi0TiiVuVHuICeozWE2A70+aRsv1yIgBQNBUFKwiAA
Как исправить, чтобы вывод типов работал верно?Для этого тебе надо знать, что нужно зафиксировать тип аргумента с помощью дженерика `foo<T extends Params>(arg: T)` и тогда можно будет работать с конкретным типом, а не с его общим описанием. https://www.typenoscriptlang.org/play?#code/C4TwDgpgBACghgJzgWwM5QLxQN4CgoFQISpgD2AdqhACrgQBcUA5AFaqXNQA+LARgBsyfZgG5cAX1y5QkKAFk4AawgAlCAEcAriWDrgWhBTqQAPOtKVqJiAD5MUC+Sq16UCAA9gECgBN0bBwUzPiEAPxQqMAIAJYUAOahBExOVq5ynt5+AYLCXEmEBBEAQkJ8UAWFTBQQAG4QCOK4vhAAxgKI0ABmWhStwDGUUMjKapo6UaYw7l4+-rCIKKi2ABRgTDAAlEyKKurauvqGxvRTANrMxJYuNswAurZNrVbAUB4OI3vjuivYV87WehMQKcCSbURQAD0kMi0TiiWeVFeIA+o32E2Av3+aRswNyIjBEOhUFKwiAA
Откуда это узнать? Ну, поспрашивай. Чо, впервые что ли? Может система типов и мощная, но черезчур черезжопная.
Простая задача: нужно затипизировать обёртку над либой отправки запросов: https://www.typenoscriptlang.org/play?#code/C4TwDgpgBACghgJzgWwM5QLxQN4CgoFQISpgD2AdqhACrgQBcUA5AFaqXNQA+LARgBsyfZgG5cAX1y5QkKAFk4AawgAlCAEcAriWDrgWhBTqQAPOtKVqJiAD5MUC+Sq16UCAA9gECgBN0bBwUzPiEAPxQqMAIAJYUAOahBExOVq5ynt5+AYLCXEmEBBEAQkJ8UAWFTBQQAG4QCOK4vhAAxgKI0ABmWhStwDGUUMjKapo6UQAUYEzwSGgAlEyKKurauvqGxvSmcyioANrMxJYuNswAurZNrVbAUB4OI6vjupPYJ87W9EyBnBILURQAD0wMi0TiiVuVHuICeozWE2A70+aRsv1yIgBQNBUFKwiAA
Как исправить, чтобы вывод типов работал верно?
Откуда это узнать? Ну, поспрашивай. Чо, впервые что ли? Может система типов и мощная, но черезчур черезжопная.
www.typenoscriptlang.org
TS Playground - An online editor for exploring TypeScript and JavaScript
The Playground lets you write TypeScript or JavaScript online in a safe and sharable way.
🤡2💯1
Новый State of React: https://stateofreact.com/en-US
Подобный опрос маловероятно что поможет авторам реакта, в отличии от state of js или state of css, на которые смотрят разработчики спек, так как реакт что-то и пилит внутри, но версия 18.2.0 уже почти полтора-два года с нами без изменений.
Но все state of * - прекрасный способ держать руку на пульсе того, что происходит в тусовке той или иной технологии. Так что даже если разрабы реакта не смотрят на результаты, то всё равно этот опрос стоит пройти. Как минимум чтобы не пропустить что-то мимо себя.
Подобный опрос маловероятно что поможет авторам реакта, в отличии от state of js или state of css, на которые смотрят разработчики спек, так как реакт что-то и пилит внутри, но версия 18.2.0 уже почти полтора-два года с нами без изменений.
Но все state of * - прекрасный способ держать руку на пульсе того, что происходит в тусовке той или иной технологии. Так что даже если разрабы реакта не смотрят на результаты, то всё равно этот опрос стоит пройти. Как минимум чтобы не пропустить что-то мимо себя.
👍5🤡4💩1
https://blog.cloudflare.com/post-mortem-on-cloudflare-control-plane-and-analytics-outage/
Тут тихой сапой мистер Интернет показал классику: ты можешь быть самым-самым крутым, но уборщица, нанятая за копейки, порушит всю инфраструктуру.
Из хорошего: ребята не скрываются и публично показывают в чём не правы.
Из идиотизма:
- О, у нас 3 ДЦ, но мы тестить на оффлайн будем только 2 из них. А один - ну и тестировать смысла нет. Всё равно всё ляжет.
- Они как-то смогли получить Tier III сертификацию на этот сервак
- Почти половина статьи является обсасыванием какие поставщики электичества идиоты, а не CF построили кривую архитектуру.
До потери Яндексом дата центра в Финляндии, Яша каждую неделю устраивали учения по отстреливанию одного ДЦ, при котором для пользователя должно измениться НИЧЕГО. Весь Яндекс должен иметь возможность жить на 3х датацентах из четырёх. И каждое учение было неплохим таким стрессом. Не особо помню, но вроде как они проводились все по вторникам(не уверен в корректности памяти) каждую неделю, поэтому можете не удивляться, что сервисы Яндекса в основном падали в эту дату. Можете проверить новости)
Но только где Яндекс и где Cloudflare?
Ну ладно, зато новость для того, чтобы проснуться, хорошая. Не ожидаешь подобного от людей, на которых буквально держится весь интернет
Тут тихой сапой мистер Интернет показал классику: ты можешь быть самым-самым крутым, но уборщица, нанятая за копейки, порушит всю инфраструктуру.
Из хорошего: ребята не скрываются и публично показывают в чём не правы.
Из идиотизма:
- О, у нас 3 ДЦ, но мы тестить на оффлайн будем только 2 из них. А один - ну и тестировать смысла нет. Всё равно всё ляжет.
- Они как-то смогли получить Tier III сертификацию на этот сервак
- Почти половина статьи является обсасыванием какие поставщики электичества идиоты, а не CF построили кривую архитектуру.
До потери Яндексом дата центра в Финляндии, Яша каждую неделю устраивали учения по отстреливанию одного ДЦ, при котором для пользователя должно измениться НИЧЕГО. Весь Яндекс должен иметь возможность жить на 3х датацентах из четырёх. И каждое учение было неплохим таким стрессом. Не особо помню, но вроде как они проводились все по вторникам(не уверен в корректности памяти) каждую неделю, поэтому можете не удивляться, что сервисы Яндекса в основном падали в эту дату. Можете проверить новости)
Но только где Яндекс и где Cloudflare?
Ну ладно, зато новость для того, чтобы проснуться, хорошая. Не ожидаешь подобного от людей, на которых буквально держится весь интернет
The Cloudflare Blog
Post mortem on the Cloudflare Control Plane and Analytics Outage
Beginning on Thursday, November 2, 2023 at 11:43 UTC Cloudflare's control plane and analytics services experienced an outage. Here are the details
👍4🤡2💩1