Sort rectangles and circles by area II
Вам дан массив, состоящий из длин сторон прямоугольников(массив из двух чисел) и радиусов окружностей(просто числа). Отсортируйте данный массив по площади фигур.
Пример:
👉 @seniorFront
Вам дан массив, состоящий из длин сторон прямоугольников(массив из двух чисел) и радиусов окружностей(просто числа). Отсортируйте данный массив по площади фигур.
Пример:
const array = [ [4.23, 6.43], 1.23, 3.444, [1.342, 3.212] ]; // [ rectangle, circle, circle, rectangle ]
sortByArea(array) => [ [ 1.342, 3.212 ], 1.23, [ 4.23, 6.43 ], 3.444 ]👉 @seniorFront
👍1
Как модульное тестирование сокращает затраты программиста
В этой статье автор показывает преимущества модульного тестирования в разработке программного обеспечения на конкретном примере среднестатистического инженера-разработчика.
Несмотря на увеличение времени, потраченного на написание модульных тестов, практика модульного тестирования снижает общее время на разработку нового функционала, поскольку:
- позволяет обнаружить и исправить ошибки на ранних стадиях разработки, что значительно сокращает затраты времени и ресурсов на их устранение;
- способствует улучшению качества кода благодаря созданию позитивных ограничений для разработчиков;
- упрощает процесс интеграции и документации кода, стимулирует разработчика к изменениям и рефакторингу.
👉 @seniorFront
В этой статье автор показывает преимущества модульного тестирования в разработке программного обеспечения на конкретном примере среднестатистического инженера-разработчика.
Несмотря на увеличение времени, потраченного на написание модульных тестов, практика модульного тестирования снижает общее время на разработку нового функционала, поскольку:
- позволяет обнаружить и исправить ошибки на ранних стадиях разработки, что значительно сокращает затраты времени и ресурсов на их устранение;
- способствует улучшению качества кода благодаря созданию позитивных ограничений для разработчиков;
- упрощает процесс интеграции и документации кода, стимулирует разработчика к изменениям и рефакторингу.
👉 @seniorFront
❤1
window.navigator
Это свойство возвращает объект описания приложения (user agent), которое выполняет скрипт. В подавляющем большинстве случаев это приложение — браузер. Объект содержит свойства, описывающие браузер, и методы для выполнения действий.
Часто используемые свойства:
clipboard доступен только при работе с HTTPS или localhost. Если clipboard не доступен, вы можете использовать старый подход через document.execCommand('copy').
Объект navigator содержит множество других свойств, большинство из них экспериментальные или поддерживаются конкретными браузерами.
Методы объекта navigator служат для взаимодействия с другими WebAPI. Например, метод vibrate, который вызывает вибрацию пользовательского устройства, если она поддерживается: navigator.vibrate(200)
👉 @seniorFront
Это свойство возвращает объект описания приложения (user agent), которое выполняет скрипт. В подавляющем большинстве случаев это приложение — браузер. Объект содержит свойства, описывающие браузер, и методы для выполнения действий.
Часто используемые свойства:
userAgent возвращает строку, которая содержит название браузера. Не стоит использовать это свойство, чтобы определить браузер пользователя! Спецификация рекомендует браузерам передавать минимум информации в userAgent, значение может меняться от версии к версии.language возвращает предпочитаемый язык интерфейса в виде языкового тега. Например, en, ru, en-US и т.д. Обычно это язык, установленный в настройках браузера.languages возвращает массив предпочитаемых языков в порядке предпочтительности. Первый в списке будет язык, который возвращает navigator.language.cookieEnabled возвращает true, если браузер пользователя поддерживает куки и они включены, false в противном случае.onLine возвращает true, если у пользователя есть подключение к сети. Браузеры вкладывают разные смыслы в понятие «онлайн», поэтому это свойство — ненадёжный источник данных.clipboard — это удобный доступ к буферу обмена из Clipboard API. Объект предоставляет несколько методов для сохранения информации в буфер и чтения из него. write — универсальный метод для сохранения данных в буфер. Можно использовать специальный writeText, если вы уверены, что нужно скопировать только текст. Оба метода асинхронные и возвращают Promise. Для чтения из буфера есть аналогичные read и readText.clipboard доступен только при работе с HTTPS или localhost. Если clipboard не доступен, вы можете использовать старый подход через document.execCommand('copy').
Объект navigator содержит множество других свойств, большинство из них экспериментальные или поддерживаются конкретными браузерами.
Методы объекта navigator служат для взаимодействия с другими WebAPI. Например, метод vibrate, который вызывает вибрацию пользовательского устройства, если она поддерживается: navigator.vibrate(200)
👉 @seniorFront
👍7❤1🤔1
This media is not supported in your browser
VIEW IN TELEGRAM
Illuminate Your Mind
Параметры свечения задаются при помощи CSS переменных, значения которых изменяются в JS при движении курсора.
👉 @seniorFront
Параметры свечения задаются при помощи CSS переменных, значения которых изменяются в JS при движении курсора.
👉 @seniorFront
🔥5👍2
80% разработчиков недовольны своей работой. Причина не в ИИ и не в коде
Результаты последнего опроса Stack Overflow показали, что большинство разработчиков не получают удовольствия от своей работы. Если верить неофициальным данным, то доля довольных среди сантехников и фермеров оказывается выше. В чем же проблема?
Не оправдавшиеся ожидания и технический долг
Технический долг – главный источник раздражения у разработчиков. Работа с несовершенными системами деморализует людей и затрудняет выполнение сложных задач.
Культура суеты и бюрократия
Давление, вызванное необходимостью уложиться в сроки, в ИТ-индустрии часто доходит до крайности. Разработчиков подстегивают выполнять задачи как можно быстрее, чтобы получить как можно больше дохода. Возрастающее давление в компаниях оборачивается завышенными ожиданиями и выгоранием.
Кроме того, существует вечная проблема бюрократии, которой особенно подвержены крупные компании. Бесконечные совещания и оторванные от реальности требования начальства создают и усиливают ощущение бессмысленности.
Сокращения и проблемы со здоровьем
Недавняя волна массовых сокращений породила в разработчиках неуверенность и страх в том, что касается карьерных перспектив. Вдобавок к стрессу, написание кода – сидячая работа, а малоподвижный образ жизни крайне вреден для физического здоровья. Исследования показывают, что мало двигаться – еще более вредно, чем курить. Напротив, физическая активность в значительной степени снимает симптомы депрессии.
Несмотря на то, что работа не доставляет им удовольствия, большинство разработчиков пишет код в нерабочее время в качестве хобби (68%). Также почти 40% пишут код в нерабочее время ради профессионального роста или ускоренного обучения при помощи онлайн-курсов. Что наводит на мысль: проблема кроется вовсе не в коде!
👉 @seniorFront
Результаты последнего опроса Stack Overflow показали, что большинство разработчиков не получают удовольствия от своей работы. Если верить неофициальным данным, то доля довольных среди сантехников и фермеров оказывается выше. В чем же проблема?
Не оправдавшиеся ожидания и технический долг
Технический долг – главный источник раздражения у разработчиков. Работа с несовершенными системами деморализует людей и затрудняет выполнение сложных задач.
Культура суеты и бюрократия
Давление, вызванное необходимостью уложиться в сроки, в ИТ-индустрии часто доходит до крайности. Разработчиков подстегивают выполнять задачи как можно быстрее, чтобы получить как можно больше дохода. Возрастающее давление в компаниях оборачивается завышенными ожиданиями и выгоранием.
Кроме того, существует вечная проблема бюрократии, которой особенно подвержены крупные компании. Бесконечные совещания и оторванные от реальности требования начальства создают и усиливают ощущение бессмысленности.
Сокращения и проблемы со здоровьем
Недавняя волна массовых сокращений породила в разработчиках неуверенность и страх в том, что касается карьерных перспектив. Вдобавок к стрессу, написание кода – сидячая работа, а малоподвижный образ жизни крайне вреден для физического здоровья. Исследования показывают, что мало двигаться – еще более вредно, чем курить. Напротив, физическая активность в значительной степени снимает симптомы депрессии.
Несмотря на то, что работа не доставляет им удовольствия, большинство разработчиков пишет код в нерабочее время в качестве хобби (68%). Также почти 40% пишут код в нерабочее время ради профессионального роста или ускоренного обучения при помощи онлайн-курсов. Что наводит на мысль: проблема кроется вовсе не в коде!
👉 @seniorFront
👍1
День рождения онлайн-школы METHED 🥳
Прокачай свои навыки за 3 дня – присоединяйся к интенсиву!
В рамках интенсива мы сосредоточимся на разработке веб-приложения для отображения расписания автобусов в реальном времени, используя Node.js и JavaScript.
Что вас ждёт на интенсиве?
- Разработка серверной части с использованием Node.js и Express
- Клиентская часть на JavaScript
- Интеграция WebSocket и развертывание на хостинг
Стартуем уже скоро, регистрируйся: https://tglink.io/f92ccf243706
Прокачай свои навыки за 3 дня – присоединяйся к интенсиву!
В рамках интенсива мы сосредоточимся на разработке веб-приложения для отображения расписания автобусов в реальном времени, используя Node.js и JavaScript.
Что вас ждёт на интенсиве?
- Разработка серверной части с использованием Node.js и Express
- Клиентская часть на JavaScript
- Интеграция WebSocket и развертывание на хостинг
Стартуем уже скоро, регистрируйся: https://tglink.io/f92ccf243706
👍2🔥2
Не JavaScript’ом единым: как фронтенд-разработчику затащить на собесе
В своей статье я расскажу о своем подходе к найму сотрудников. Разумеется, у каждого работодателя свои требования к соискателям, и эта статья не может быть универсальным гайдом по трудоустройству. Кто-то на собеседованиях от вас может ожидать знание 50-го аргумента функции callKek(), но это не мой подход, потому что в реальной жизни глубокого знания JavaScript не всегда бывает достаточно, а отдельные его тонкости и вовсе пригождаются крайне редко.
👉 @seniorFront
В своей статье я расскажу о своем подходе к найму сотрудников. Разумеется, у каждого работодателя свои требования к соискателям, и эта статья не может быть универсальным гайдом по трудоустройству. Кто-то на собеседованиях от вас может ожидать знание 50-го аргумента функции callKek(), но это не мой подход, потому что в реальной жизни глубокого знания JavaScript не всегда бывает достаточно, а отдельные его тонкости и вовсе пригождаются крайне редко.
👉 @seniorFront
👍6
This media is not supported in your browser
VIEW IN TELEGRAM
Strange Creature
Реализовано на canvas с использованием библиотек p5.js и simplex-noise.js.
👉 @seniorFront
Реализовано на canvas с использованием библиотек p5.js и simplex-noise.js.
👉 @seniorFront
❤6🔥3
Media is too big
VIEW IN TELEGRAM
Our Services Section Card
В этом видео создаются карточки с оригинальным эффектом при наведении на HTML и CSS.
👉 @seniorFront
В этом видео создаются карточки с оригинальным эффектом при наведении на HTML и CSS.
👉 @seniorFront
This media is not supported in your browser
VIEW IN TELEGRAM
Gooey SVG Filter Button
Оригинальная кнопка, анимированная в CSS. Параметры анимации зависят от положения курсора и изменяются в JS по событию 'pointermove'.
👉 @seniorFront
Оригинальная кнопка, анимированная в CSS. Параметры анимации зависят от положения курсора и изменяются в JS по событию 'pointermove'.
👉 @seniorFront
👍9🔥3❤1
Какой из следующих способов позволяет создать объект в JavaScript без прототипа?
Anonymous Quiz
22%
const obj = {};
17%
const obj = new Object();
42%
const obj = Object.create(null);
19%
const obj = Object.assign({}, null);
❤3👍3
Media is too big
VIEW IN TELEGRAM
CSS Custom Smiley Checkbox Design
В этом видео создаётся анимированный переключатель на HTML и CSS.
👉 @seniorFront
В этом видео создаётся анимированный переключатель на HTML и CSS.
👉 @seniorFront
👍4
This media is not supported in your browser
VIEW IN TELEGRAM
Multiple Glow effects Button
Подборка CSS анимаций для кнопки, которые переключаются при помощи радио кнопок.
👉 @seniorFront
Подборка CSS анимаций для кнопки, которые переключаются при помощи радио кнопок.
👉 @seniorFront
🔥8👍1
My Language Skills
Вам дан объект, содержащий результаты теста по языкам. Верните массив языков, для которых результат теста больше 60 в убывающем порядке.
Примеры:
👉 @seniorFront
Вам дан объект, содержащий результаты теста по языкам. Верните массив языков, для которых результат теста больше 60 в убывающем порядке.
Примеры:
{"Java": 10, "Ruby": 80, "Python": 65}
// ["Ruby", "Python"]
{"Hindi": 60, "Dutch" : 93, "Greek": 71}
// ["Dutch", "Greek", "Hindi"]
{"C++": 50, "ASM": 10, "Haskell": 20}
// []
👉 @seniorFront
👍1
Понятно про браузер: критические этапы рендеринга, аппаратное ускорение и оптимизации
Во время того, как вы разрабатываете свое веб-приложение, совершенно нормально, что закулисная работа браузера остается для вас мифической тенью за вашим кодом, и процессы выполняются без вашего непосредственного в них участия. Но по мере роста ваших компетенций во фронтенд-разработке, а также при необходимости оптимизировать высоконагруженные приложения, где даже микрооптимизация может принести большую бизнес- и пользовательскую ценность, понимание процессов браузерной работы становится важным шагом на пути к вашему умению выявлять и устранять уязвимые места. В этой статье погрузимся в браузерную работу глубоко, но на доступном языке обсудим происходящие там процессы и найдем возможности их оптимизации.
👉 @seniorFront
Во время того, как вы разрабатываете свое веб-приложение, совершенно нормально, что закулисная работа браузера остается для вас мифической тенью за вашим кодом, и процессы выполняются без вашего непосредственного в них участия. Но по мере роста ваших компетенций во фронтенд-разработке, а также при необходимости оптимизировать высоконагруженные приложения, где даже микрооптимизация может принести большую бизнес- и пользовательскую ценность, понимание процессов браузерной работы становится важным шагом на пути к вашему умению выявлять и устранять уязвимые места. В этой статье погрузимся в браузерную работу глубоко, но на доступном языке обсудим происходящие там процессы и найдем возможности их оптимизации.
👉 @seniorFront
👍2
Что такое promise и какие состояния у него есть?
Это объект, представляющий завершение (или неудачу) асинхронной операции и её результат. Он позволяет ассоциировать обработчики с асинхронным действием, тем самым избавляя от необходимости использовать обратные вызовы (callback-функции). Они упрощают работу с асинхронными операциями, такими как AJAX-запросы или чтение файлов, позволяя написать код, который проще понять и поддерживать.
Состояния:
- Pending (Ожидание): Начальное состояние; асинхронная операция не завершена.
- Fulfilled (Исполнено): Операция завершена успешно, и promise возвращает результат.
- Rejected (Отклонено): Операция завершена с ошибкой, и promise возвращает причину отказа.
Пример:
Promise поддерживает цепочки вызовов (then), что позволяет организовывать асинхронный код последовательно и читабельно. Кроме того, существуют вспомогательные методы, такие как Promise.all, Promise.race, Promise.resolve, и Promise.reject, которые облегчают работу с группами асинхронных операций.
👉 @seniorFront
Это объект, представляющий завершение (или неудачу) асинхронной операции и её результат. Он позволяет ассоциировать обработчики с асинхронным действием, тем самым избавляя от необходимости использовать обратные вызовы (callback-функции). Они упрощают работу с асинхронными операциями, такими как AJAX-запросы или чтение файлов, позволяя написать код, который проще понять и поддерживать.
Состояния:
- Pending (Ожидание): Начальное состояние; асинхронная операция не завершена.
- Fulfilled (Исполнено): Операция завершена успешно, и promise возвращает результат.
- Rejected (Отклонено): Операция завершена с ошибкой, и promise возвращает причину отказа.
Пример:
let promise = new Promise(function(resolve, reject) {
// Эмуляция асинхронной операции, например, запроса к серверу
setTimeout(() => {
// Условие успешного выполнения операции
if (/* условие успеха */) {
resolve("данные получены");
} else {
reject("ошибка при получении данных");
}
}, 1000);
});
promise.then(
function(result) { console.log(result); }, // обработчик успеха
function(error) { console.log(error); } // обработчик ошибки
);
Promise поддерживает цепочки вызовов (then), что позволяет организовывать асинхронный код последовательно и читабельно. Кроме того, существуют вспомогательные методы, такие как Promise.all, Promise.race, Promise.resolve, и Promise.reject, которые облегчают работу с группами асинхронных операций.
👉 @seniorFront
👍18❤2
This media is not supported in your browser
VIEW IN TELEGRAM
Animated Card Flip
Карточки свёрстаны при помощи препроцессоров Pug и Less. Логика раскрытия карточки реализована в JS.
👉 @seniorFront
Карточки свёрстаны при помощи препроцессоров Pug и Less. Логика раскрытия карточки реализована в JS.
👉 @seniorFront
👍5🔥2
Бумажные книги по программированию — удобный инструмент или пережиток прошлого?
Низкое качество перевода
Почти в любой современной книге есть очевидные неточности перевода, опечатки. Иногда встречаются и откровенные грубые ошибки. Причём большинство таких ошибок мог бы найти и исправить опытный редактор при первом внимательном прочтении текста. Но складывается впечатление, что некоторые современные книги по программированию (да и по другим темам) никто толком не вычитывает и не проверяет перед отправкой текста в печать.
Халтурное исполнение
Также у меня есть претензии к переплёту. Недавно одна из книг в мягкой обложке распалась на отдельные страницы после первого же прочтения. Знаете такие переплёты, в которых страницы не сшиты в тетрадки, а склеены каким-то некачественным клеем? Стоит открыть такую книгу, и страницы начинают подозрительно скользить и через некоторое время вообще вываливаются из переплёта. В результате читатель получает вместо книги стопку отдельных листов. А ведь тот же Фигурнов, изданный в непростые 90-е, держался много лет.
Быстрое устаревание
Это, конечно, проблема не самих книг, а описываемых в них объектов. Уж слишком быстро они сейчас устаревают. Если раньше справочник по командам какого-нибудь MS DOS был актуален много лет, то теперь описание очередного модного фреймворка устаревает почти сразу после выхода. Поэтому сейчас я стараюсь покупать только такие книги, в которых описаны фундаментальные вещи. Например, алгоритмы, принципы и методики разработки. Такие книги не устареют ещё долгое время и не будут бесполезно занимать место и собирать пыль в книжном шкафу.
Массивность
Мне нравится читать книги не только за столом. Хочется иметь возможность полистать интересное издание и в кресле, и на балконе, и в дороге, и на скамейке в парке. Часть мои книг по программированию для этого не предназначены в принципе. Они весят больше, чем мой ноутбук. Такие увесистые фолианты долго одной рукой не подержишь, в рюкзаке с собой не потаскаешь.
Сложность поиска
Книги по программированию — это хороший источник теоретических знаний. Можно почитать какую-нибудь главу, чтобы как следует изучить новую синтаксическую конструкцию языка. Но вот для чего они совершенно не предназначены, так это для поиска ответа на конкретный практический вопрос.
Это касается даже тех книг, которые, в общем-то, для этого и предназначены. Например, всякие «книги рецептов», «сборники паттернов». Сначала мы судорожно листаем страницы в поисках нужного раздела. Потом пытаемся вчитаться во фрагменты кода. Как на зло, нам попадается множество примеров, которые не помогают нам в решении задачи. В итоге мы часто так и не находим конкретного ответа на конкретный вопрос, закрываем книгу и идём гуглить.
Мелкотемье
Был такой термин в советские времена. Он очень хорошо подходит для описания ситуации с современной компьютерной литературой. Всё больше становится книг, посвящённых одной мелкой частной теме. На первый взгляд это хорошо, ведь в такой книге тема будет всесторонне раскрыта, будут освещены все вопросы и нюансы. Например, будет подробно описано использование какого-нибудь фреймворка для решения конкретной задачи. Но зададимся вопросом: где он будет через несколько лет? Скорее всего, его заменит другой, не менее прогрессивный фреймворк и по нему будут писать новые книги. Все об этом знают. Возможно, поэтому книги и получаются такими некачественными. Зачем стараться, если книга всё равно скоро устареет. Одноразовые книги для одноразового «пластмассового мира».
Но не всё так плохо. Сейчас продолжают издавать интересные книги по общим, неустаревающим темам. Жаль только, что к этим книгам применяют тот же подход, что и к мелкотемным: «Зачем стараться?»
Некоторые из перечисленных проблем решены в электронных книгах. У них не бывает некачественных переплётов, они ничего не весят, в них можно быстро находить заданный текст. Однако концептуальные проблемы содержания есть и у электронных книг.
👉 @seniorFront
Низкое качество перевода
Почти в любой современной книге есть очевидные неточности перевода, опечатки. Иногда встречаются и откровенные грубые ошибки. Причём большинство таких ошибок мог бы найти и исправить опытный редактор при первом внимательном прочтении текста. Но складывается впечатление, что некоторые современные книги по программированию (да и по другим темам) никто толком не вычитывает и не проверяет перед отправкой текста в печать.
Халтурное исполнение
Также у меня есть претензии к переплёту. Недавно одна из книг в мягкой обложке распалась на отдельные страницы после первого же прочтения. Знаете такие переплёты, в которых страницы не сшиты в тетрадки, а склеены каким-то некачественным клеем? Стоит открыть такую книгу, и страницы начинают подозрительно скользить и через некоторое время вообще вываливаются из переплёта. В результате читатель получает вместо книги стопку отдельных листов. А ведь тот же Фигурнов, изданный в непростые 90-е, держался много лет.
Быстрое устаревание
Это, конечно, проблема не самих книг, а описываемых в них объектов. Уж слишком быстро они сейчас устаревают. Если раньше справочник по командам какого-нибудь MS DOS был актуален много лет, то теперь описание очередного модного фреймворка устаревает почти сразу после выхода. Поэтому сейчас я стараюсь покупать только такие книги, в которых описаны фундаментальные вещи. Например, алгоритмы, принципы и методики разработки. Такие книги не устареют ещё долгое время и не будут бесполезно занимать место и собирать пыль в книжном шкафу.
Массивность
Мне нравится читать книги не только за столом. Хочется иметь возможность полистать интересное издание и в кресле, и на балконе, и в дороге, и на скамейке в парке. Часть мои книг по программированию для этого не предназначены в принципе. Они весят больше, чем мой ноутбук. Такие увесистые фолианты долго одной рукой не подержишь, в рюкзаке с собой не потаскаешь.
Сложность поиска
Книги по программированию — это хороший источник теоретических знаний. Можно почитать какую-нибудь главу, чтобы как следует изучить новую синтаксическую конструкцию языка. Но вот для чего они совершенно не предназначены, так это для поиска ответа на конкретный практический вопрос.
Это касается даже тех книг, которые, в общем-то, для этого и предназначены. Например, всякие «книги рецептов», «сборники паттернов». Сначала мы судорожно листаем страницы в поисках нужного раздела. Потом пытаемся вчитаться во фрагменты кода. Как на зло, нам попадается множество примеров, которые не помогают нам в решении задачи. В итоге мы часто так и не находим конкретного ответа на конкретный вопрос, закрываем книгу и идём гуглить.
Мелкотемье
Был такой термин в советские времена. Он очень хорошо подходит для описания ситуации с современной компьютерной литературой. Всё больше становится книг, посвящённых одной мелкой частной теме. На первый взгляд это хорошо, ведь в такой книге тема будет всесторонне раскрыта, будут освещены все вопросы и нюансы. Например, будет подробно описано использование какого-нибудь фреймворка для решения конкретной задачи. Но зададимся вопросом: где он будет через несколько лет? Скорее всего, его заменит другой, не менее прогрессивный фреймворк и по нему будут писать новые книги. Все об этом знают. Возможно, поэтому книги и получаются такими некачественными. Зачем стараться, если книга всё равно скоро устареет. Одноразовые книги для одноразового «пластмассового мира».
Но не всё так плохо. Сейчас продолжают издавать интересные книги по общим, неустаревающим темам. Жаль только, что к этим книгам применяют тот же подход, что и к мелкотемным: «Зачем стараться?»
Некоторые из перечисленных проблем решены в электронных книгах. У них не бывает некачественных переплётов, они ничего не весят, в них можно быстро находить заданный текст. Однако концептуальные проблемы содержания есть и у электронных книг.
👉 @seniorFront
👍5❤1
Неклассическое чтение для руководителей: разборы и гайды по менеджменту, open source, контенту и *random topic*
Хотел бы поделиться материалами о менеджменте в широком контексте. От научных статей, которые помогут понять суть технологий вроде больших языковых моделей, и до книг по менеджменту и практических разборов того, каким может быть контент-маркетинг без рекламы. Получилась компактная и разнообразная подборка.
👉 @seniorFront
Хотел бы поделиться материалами о менеджменте в широком контексте. От научных статей, которые помогут понять суть технологий вроде больших языковых моделей, и до книг по менеджменту и практических разборов того, каким может быть контент-маркетинг без рекламы. Получилась компактная и разнообразная подборка.
👉 @seniorFront