Всем привет!
Меня зовут Гаухара, но можно просто Гоша — именно так меня называют многие.
Я тимлид с опытом работы во фронтенд-разработке более 8 лет. Имею степень Master of Science in Computer Communications Networks, которую получила в Brunel University London.
Недавно я задумалась: а почему бы не создать Telegram-канал, где я смогу делиться своим опытом и размышлениями о пути в IT? Возможно, это будет полезно и для кого-то другого.
В канале я планирую затрагивать самые разные - темы:
➡️ Мысли и инсайты, которые приходят неожиданно.
➡️ Дайджесты — разбор статей, которые действительно стоит прочитать, и основные идеи, которые можно из них почерпнуть.
➡️ Обзоры и размышления о книгах, которые я прочитала.
➡️ Решение различных задач, с которыми я сталкиваюсь.
Зачем мне это?
Для меня это в первую очередь дисциплина. Регулярно делиться чем-то полезным и углубленно изучать новые темы, чтобы иметь возможность объяснить их другим. Кроме того, это способ рефлексировать над прожитым опытом, который, возможно, окажется полезным или найдет отклик у кого-то еще.
Честно говоря, я не знаю, что из этого получится. Но, как говорится, пока не попробуешь — не узнаешь. Так что давайте начнем! Уверена, будет интересно и познавательно.
Меня зовут Гаухара, но можно просто Гоша — именно так меня называют многие.
Я тимлид с опытом работы во фронтенд-разработке более 8 лет. Имею степень Master of Science in Computer Communications Networks, которую получила в Brunel University London.
Недавно я задумалась: а почему бы не создать Telegram-канал, где я смогу делиться своим опытом и размышлениями о пути в IT? Возможно, это будет полезно и для кого-то другого.
В канале я планирую затрагивать самые разные - темы:
Зачем мне это?
Для меня это в первую очередь дисциплина. Регулярно делиться чем-то полезным и углубленно изучать новые темы, чтобы иметь возможность объяснить их другим. Кроме того, это способ рефлексировать над прожитым опытом, который, возможно, окажется полезным или найдет отклик у кого-то еще.
Честно говоря, я не знаю, что из этого получится. Но, как говорится, пока не попробуешь — не узнаешь. Так что давайте начнем! Уверена, будет интересно и познавательно.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13❤4👍4🤡1👨💻1
Всем привет!
Сегодня разберём одну из самых частых тем, которую разработчики скипают при изучении, а потом на собесах хлопают глазками, когда их спрашивают:
“В чём же разница между CommonJS и ES Modules?”
Самое обидное — ведь мы сталкиваемся с этим каждый день на практике когда пишем код, но часто относимся по принципу “работает — и ладно, потом разберусь…”
⸻
Погнали! Первый пост: Модули в JavaScript
На первый взгляд может показаться: ну что тут сложного?
Все знают про npm, установку пакетов, зависимости… Но давайте копнём глубже — в историю.
⸻
1995 — появился JavaScript
1997 — он был стандартизирован как ECMAScript
До 2009 года разработчики писали JS только для браузеров, подключая скрипты через <noscript> и надеясь, что всё загрузится в нужном порядке.
Чтобы не загадить глобальный scope, изобретались всякие костыли:
IIFE (immediately invoked function expressions), namespace-объекты и прочее веселье.
Поддерживать такой код было больно. Структуры как таковой не было.
⸻
2009 — появляется CommonJS (первое имя — ServerJS)
В это время встает логичный вопрос:
Как подключать модули? Как делиться кодом между файлами? Как изолировать зависимости?
На сцену выходит CommonJS с его:
• require() — для импорта
• module.exports — для экспорта
(Я же говорила, что все просто, по-любому видели такой синтаксис, но просто не знали возможно что это CommonJS 😂)
И тут же появляется Node.js, который становится успешной реализацией CommonJS.
⸻
2010 — выходит npm, и CommonJS становится стандартом де-факто.
⸻
Но не всё было идеально.
require() — это обычная функция, которая может принимать не только строку, и невозможно заранее определить зависимости, не исполнив код.
А то, что экспортируется через module.exports, недоступно в локальной области — неудобно!
⸻
2015 — JavaScript получает собственную систему модулей:
ES Modules
Теперь у нас есть:
• import и export (это уж точно юзаем ежедневно)
• Импорт происходит до выполнения кода — это ускоряет разработку и упрощает сборку.
⸻
Как вам такой исторический экскурс?
Стало ли понятнее, откуда ноги растут у import и require?
Пишите в комментариях — интересно узнать, было ли что-то новое для вас!
P.S. По мне понимание базовых знаний — это фундамент, без которого новые технологии превращаются в хаос, а рост в профессии становится невозможным.
Сегодня разберём одну из самых частых тем, которую разработчики скипают при изучении, а потом на собесах хлопают глазками, когда их спрашивают:
“В чём же разница между CommonJS и ES Modules?”
Самое обидное — ведь мы сталкиваемся с этим каждый день на практике когда пишем код, но часто относимся по принципу “работает — и ладно, потом разберусь…”
⸻
Погнали! Первый пост: Модули в JavaScript
На первый взгляд может показаться: ну что тут сложного?
Все знают про npm, установку пакетов, зависимости… Но давайте копнём глубже — в историю.
⸻
1995 — появился JavaScript
1997 — он был стандартизирован как ECMAScript
До 2009 года разработчики писали JS только для браузеров, подключая скрипты через <noscript> и надеясь, что всё загрузится в нужном порядке.
Чтобы не загадить глобальный scope, изобретались всякие костыли:
IIFE (immediately invoked function expressions), namespace-объекты и прочее веселье.
Поддерживать такой код было больно. Структуры как таковой не было.
⸻
2009 — появляется CommonJS (первое имя — ServerJS)
В это время встает логичный вопрос:
Как подключать модули? Как делиться кодом между файлами? Как изолировать зависимости?
На сцену выходит CommonJS с его:
• require() — для импорта
• module.exports — для экспорта
(Я же говорила, что все просто, по-любому видели такой синтаксис, но просто не знали возможно что это CommonJS 😂)
И тут же появляется Node.js, который становится успешной реализацией CommonJS.
⸻
2010 — выходит npm, и CommonJS становится стандартом де-факто.
⸻
Но не всё было идеально.
require() — это обычная функция, которая может принимать не только строку, и невозможно заранее определить зависимости, не исполнив код.
А то, что экспортируется через module.exports, недоступно в локальной области — неудобно!
⸻
2015 — JavaScript получает собственную систему модулей:
ES Modules
Теперь у нас есть:
• import и export (это уж точно юзаем ежедневно)
• Импорт происходит до выполнения кода — это ускоряет разработку и упрощает сборку.
⸻
Как вам такой исторический экскурс?
Стало ли понятнее, откуда ноги растут у import и require?
Пишите в комментариях — интересно узнать, было ли что-то новое для вас!
P.S. По мне понимание базовых знаний — это фундамент, без которого новые технологии превращаются в хаос, а рост в профессии становится невозможным.
👍17👨💻3❤2🤡1
👋 Всем привет!
Итак, после предыдущего поста возник закономерный вопрос:
Как вообще уживаются вместе
Почему где-то используется
💡 Давайте разбираться!
---
📚 Для начала предлагаю погрузиться чуть в документацию:
https://nodejs.org/api/packages.html#type
Вот краткая выжимка:
🔹 Тип:
🔹 Поле
-
-
(независимо от значения
-
-
---
🧐 Если заглянете в
А в конфиге, например, Webpack’а — увидите привычный
Но при этом в самом приложении вы спокойно пишете
Почему так?
Потому что Webpack сам умеет разбирать модули. Он не зависит от
---
🔧 То есть:
- Конфиги (которые запускает Node.js напрямую) — требуют правильного формата (
- Код внутри фронта — обрабатывается Webpack’ом, и на поле
---
Вот и вся магия 💫
Итак, после предыдущего поста возник закономерный вопрос:
Как вообще уживаются вместе
.cjs, .mjs и .js файлы в одном проекте? 🤔 Почему где-то используется
require, а где-то import? И что за магия в поле "type" в package.json — обязательно ли его указывать?💡 Давайте разбираться!
---
📚 Для начала предлагаю погрузиться чуть в документацию:
https://nodejs.org/api/packages.html#type
Вот краткая выжимка:
🔹 Тип:
string 🔹 Поле
"type" в package.json определяет, как Node.js будет трактовать .js файлы:-
"type": "module" — .js файлы считаются ES-модулями-
"type": "commonjs" или поле отсутствует — .js файлы считаются CommonJS(независимо от значения
"type")-
.mjs — всегда ES-модуль -
.cjs — всегда CommonJS ---
🧐 Если заглянете в
package.json вашего проекта — скорее всего, поля "type" там нет. А в конфиге, например, Webpack’а — увидите привычный
require и module.exports, то есть commonjs.Но при этом в самом приложении вы спокойно пишете
import/export (es-modules) — и всё работает 🎉Почему так?
Потому что Webpack сам умеет разбирать модули. Он не зависит от
"type" в package.json и прекрасно парсит как import, так и require, по-своему собирая ваш код.---
🔧 То есть:
- Конфиги (которые запускает Node.js напрямую) — требуют правильного формата (
.cjs, .mjs, или "type").- Код внутри фронта — обрабатывается Webpack’ом, и на поле
"type" ему все равно.---
Вот и вся магия 💫
👍8❤3🔥2🤡1
👋 Всем привет!
Недавно наткнулась на блог классной девушки по имени Надя — она фронтенд-архитектор, разработчица, преподаватель и просто крутая профи. Пишет супер полезные статьи на темы, о которых редко говорят глубоко, но просто.
Меня зацепила вот эта статья:
🔗 https://www.developerway.com/posts/initial-load-performance
Initial load performance for React developers: investigative deep dive
(или — «Первоначальная производительность загрузки для React-разработчиков: глубокое исследование»)
Язык статьи — английский, но всё написано максимально понятно, даже если вы не native speaker говорится.
💡 Уже в самом начале Надя ловко подмечает: сегодня код может писать каждый, особенно с приходом ИИ.
Но... ✨быстрое приложение✨ — это не про просто "написать код". Это про понимание, как устроена под капотом веб-платформа.
В статье разбираются:
👉 что такое TTFB, FCP, LCP,
👉 как поведение страницы меняется при разных сетевых условиях,
👉 как работает CDN и зачем он вообще нужен,
👉 как браузеры кэшируют ресурсы,
👉 что делает заголовок Cache-Control и почему его нужно настраивать с умом
🔥 И да — Надя сделала небольшой проект, с которым можно поиграться, и прям показывает: "вот открой DevTools, вот поменяй настройку — и посмотри, как это влияет на метрики".
Короче, рекомендую от души, особенно если хочется стать не просто кодером, а настоящим инженером ❤️🔥
Недавно наткнулась на блог классной девушки по имени Надя — она фронтенд-архитектор, разработчица, преподаватель и просто крутая профи. Пишет супер полезные статьи на темы, о которых редко говорят глубоко, но просто.
Меня зацепила вот эта статья:
🔗 https://www.developerway.com/posts/initial-load-performance
Initial load performance for React developers: investigative deep dive
(или — «Первоначальная производительность загрузки для React-разработчиков: глубокое исследование»)
Язык статьи — английский, но всё написано максимально понятно, даже если вы не native speaker говорится.
💡 Уже в самом начале Надя ловко подмечает: сегодня код может писать каждый, особенно с приходом ИИ.
Но... ✨быстрое приложение✨ — это не про просто "написать код". Это про понимание, как устроена под капотом веб-платформа.
В статье разбираются:
👉 что такое TTFB, FCP, LCP,
👉 как поведение страницы меняется при разных сетевых условиях,
👉 как работает CDN и зачем он вообще нужен,
👉 как браузеры кэшируют ресурсы,
👉 что делает заголовок Cache-Control и почему его нужно настраивать с умом
🔥 И да — Надя сделала небольшой проект, с которым можно поиграться, и прям показывает: "вот открой DevTools, вот поменяй настройку — и посмотри, как это влияет на метрики".
Короче, рекомендую от души, особенно если хочется стать не просто кодером, а настоящим инженером ❤️🔥
Developerway
Initial load performance for React developers: investigative deep dive
Exploring Core Web Vitals, Chrome performance panel, what initial load performance is, which metrics measure it, and how cache control and different networking conditions influence it.
🔥8🤡1
Frontend Developer pinned «Всем привет! Меня зовут Гаухара, но можно просто Гоша — именно так меня называют многие. Я тимлид с опытом работы во фронтенд-разработке более 8 лет. Имею степень Master of Science in Computer Communications Networks, которую получила в Brunel University…»
Вот это да!
Я совсем не ожидала, что за один день на канал подпишутся более 100 человек!
И причём — люди из совершенно разных областей 😄 Помимо фронтенд-разработчиков, тут есть (я точно знаю) один дизайнер, один девопсер, один продакт и, скорее всего, ещё мобильные разработчики!
И все вы ждёте чего-то интересного, полезного и познавательного 💡
Обещаю, что буду выкладываться на максимум, чтобы этот канал действительно прокачивал — без воды, только по делу и с душой.
Не знаю, как так получилось, но мне всегда нравилось делиться с людьми полезными знаниями — и особенно видеть тот самый блеск в глазах, когда человек действительно понял тему и точно применит полученные знания на практике.
Через Telegram-канал, конечно, этот блеск я не увижу 🙂
Но зато смогу понять, насколько зашла информация, — по вашей обратной связи 💬
Посты будут разные: какие-то больше подойдут разработчикам, а какие-то будут более универсальными — такими, чтобы были интересны вообще всем.
Ну что, поехали?
Через 5 минут выйдет новый пост 🔥
Я совсем не ожидала, что за один день на канал подпишутся более 100 человек!
И причём — люди из совершенно разных областей 😄 Помимо фронтенд-разработчиков, тут есть (я точно знаю) один дизайнер, один девопсер, один продакт и, скорее всего, ещё мобильные разработчики!
И все вы ждёте чего-то интересного, полезного и познавательного 💡
Обещаю, что буду выкладываться на максимум, чтобы этот канал действительно прокачивал — без воды, только по делу и с душой.
Не знаю, как так получилось, но мне всегда нравилось делиться с людьми полезными знаниями — и особенно видеть тот самый блеск в глазах, когда человек действительно понял тему и точно применит полученные знания на практике.
Через Telegram-канал, конечно, этот блеск я не увижу 🙂
Но зато смогу понять, насколько зашла информация, — по вашей обратной связи 💬
Посты будут разные: какие-то больше подойдут разработчикам, а какие-то будут более универсальными — такими, чтобы были интересны вообще всем.
Ну что, поехали?
Через 5 минут выйдет новый пост 🔥
🔥16❤4👏3👍2
🔥 Ещё одна тема, которую многие не понимают по опыту. Особенно фронты!
👉 И причина, скорее всего, в лени, нехватке времени или других приоритетах — "разберусь потом", "и так работает", ну вы поняли...
А ведь если ты не понимаешь эту механику — велика вероятность, что предложишь не самое удачное решение в реальных задачах...
Давайте я попробую объяснить чуть проще.
👀 Вашему вниманию:
Service и Web Workers
Все знают, что браузер использует один поток (
Но если JavaScript-а слишком много — основной поток блокируется, и весь пользовательский интерфейс тормозит.
👉 Как избежать блокировок?
Воркеры (workers)!
Они позволяют выполнять код в фоновом потоке, не мешая рендеру и взаимодействию с пользователем.
---
💡 Кратко:
- Воркеры — отдельная среда выполнения JS, без доступа к window и document.
- Не могут трогать DOM напрямую.
- Используют отдельный поток → не мешают UI.
---
👷♂️ Web Workers
📌 Что умеют:
- Обрабатывать большие объёмы данных
- Выполнять сложную логику, чтобы не тормозил интерфейс
📌 Живут только пока вкладка открыта. Закрыл вкладку — web воркер завершил работу.
---
🛰 Service Workers
📌 Что умеют:
- Перехватывать сетевые запросы (
- Обрабатывать push-уведомления (
- Работать в фоне, даже если ни одна вкладка не открыта
📌 Где применяют:
- PWA (работа сайта без интернета)
- Push-уведомления на новостных сайтах
- Кэширование и заглушки при недоступности сервера
---
Надеюсь, стало понятнее 🙂
Если хотите — могу создать репу с примерами, чтобы было проще разобраться руками.
---
🔗 Полезные ресурсы:
https://web.dev/articles/workers-overview
https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers
https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API/Using_Service_Workers
👉 И причина, скорее всего, в лени, нехватке времени или других приоритетах — "разберусь потом", "и так работает", ну вы поняли...
А ведь если ты не понимаешь эту механику — велика вероятность, что предложишь не самое удачное решение в реальных задачах...
Давайте я попробую объяснить чуть проще.
👀 Вашему вниманию:
Service и Web Workers
Все знают, что браузер использует один поток (
main thread) для выполнения JavaScript-кода, отрисовки страницы и сборки мусора. Но если JavaScript-а слишком много — основной поток блокируется, и весь пользовательский интерфейс тормозит.
👉 Как избежать блокировок?
Воркеры (workers)!
Они позволяют выполнять код в фоновом потоке, не мешая рендеру и взаимодействию с пользователем.
---
💡 Кратко:
- Воркеры — отдельная среда выполнения JS, без доступа к window и document.
- Не могут трогать DOM напрямую.
- Используют отдельный поток → не мешают UI.
---
👷♂️ Web Workers
📌 Что умеют:
- Обрабатывать большие объёмы данных
- Выполнять сложную логику, чтобы не тормозил интерфейс
📌 Живут только пока вкладка открыта. Закрыл вкладку — web воркер завершил работу.
---
🛰 Service Workers
📌 Что умеют:
- Перехватывать сетевые запросы (
fetch)- Обрабатывать push-уведомления (
push)- Работать в фоне, даже если ни одна вкладка не открыта
📌 Где применяют:
- PWA (работа сайта без интернета)
- Push-уведомления на новостных сайтах
- Кэширование и заглушки при недоступности сервера
---
Надеюсь, стало понятнее 🙂
Если хотите — могу создать репу с примерами, чтобы было проще разобраться руками.
---
🔗 Полезные ресурсы:
https://web.dev/articles/workers-overview
https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers
https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API/Using_Service_Workers
web.dev
Workers overview | Articles | web.dev
How web workers and service workers can improve the performance of your website, and when to use a web worker versus a service worker.
👍14🔥4
Буквально на этой неделе произошла интересная история.
Мы с коллегой проводили ассессмент одного frontend-разработчика.
И он буквально с порога — с ходу начинает негативить:
> «Вот эти ваши проверки ни к чему!»
> «Теория вообще не нужна — всё приходит с опытом!»
Честно говоря, мы немного опешили.
Ну да, если бы всё действительно приходило *только* с опытом — возможно, жить было бы и проще 🤷♀️
По ощущениям, у человека опыт есть, это видно.
Но — как мне показалось — не было кругозора и глубины знаний.
---
❓А вы что думаете? Нужно ли тратить время на самообразование и развитие?
Или достаточно просто «на работе разобраться» и все ресерчи делать походу?
Мы с коллегой проводили ассессмент одного frontend-разработчика.
И он буквально с порога — с ходу начинает негативить:
> «Вот эти ваши проверки ни к чему!»
> «Теория вообще не нужна — всё приходит с опытом!»
Честно говоря, мы немного опешили.
Ну да, если бы всё действительно приходило *только* с опытом — возможно, жить было бы и проще 🤷♀️
По ощущениям, у человека опыт есть, это видно.
Но — как мне показалось — не было кругозора и глубины знаний.
---
❓А вы что думаете? Нужно ли тратить время на самообразование и развитие?
Или достаточно просто «на работе разобраться» и все ресерчи делать походу?
🔥12
Media is too big
VIEW IN TELEGRAM
✨ Всем привет!
В продолжение недавнего поста — сегодня немного про веб-воркеры 👩💻
Честно говоря, на практике мне не приходилось их использовать — ведь сложные вычисления в идеале вообще не должны происходить на фронте. Всегда топлю за то, чтобы этим занимался бэкенд или хотя бы BFF.
Ну, если только вы не делаете игру с кучей анимаций и динамики 🤯
Но если всё-таки так вышло, что надо делать тяжёлые вычисления прямо на клиенте и при этом не блокировать интерфейс — вот небольшой лайфхак.
📦 Быстро накидала репу с простейшим примером:
https://github.com/gohintosh/web-worker-example
🎥 И рассказала всю логику в коротком трехминутном видео — без воды, всё по делу!
Надеюсь, пример окажется полезным, а объяснение — понятным.
Посмотрите обязательно! 🧡
🔗 Полезные ресурсы:
https://web.dev/learn/performance/web-worker-overview
https://doka.guide/js/web-workers/
https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers
https://www.w3.org/TR/2021/NOTE-workers-20210128/
В продолжение недавнего поста — сегодня немного про веб-воркеры 👩💻
Честно говоря, на практике мне не приходилось их использовать — ведь сложные вычисления в идеале вообще не должны происходить на фронте. Всегда топлю за то, чтобы этим занимался бэкенд или хотя бы BFF.
Ну, если только вы не делаете игру с кучей анимаций и динамики 🤯
Но если всё-таки так вышло, что надо делать тяжёлые вычисления прямо на клиенте и при этом не блокировать интерфейс — вот небольшой лайфхак.
📦 Быстро накидала репу с простейшим примером:
https://github.com/gohintosh/web-worker-example
🎥 И рассказала всю логику в коротком трехминутном видео — без воды, всё по делу!
Надеюсь, пример окажется полезным, а объяснение — понятным.
Посмотрите обязательно! 🧡
🔗 Полезные ресурсы:
https://web.dev/learn/performance/web-worker-overview
https://doka.guide/js/web-workers/
https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers
https://www.w3.org/TR/2021/NOTE-workers-20210128/
🔥16
💼Из разработчика в руководителя: с какими трудностями я столкнулась
Поскольку моя текущая роль — руководитель разработки, решила поделиться, с какими внутренними вопросами и сложностями я столкнулась, когда перешла на эту позицию:
🧠 Я почти не пишу код. Боже, я деградирую?!
💬 Как мотивировать команду?
🪫 Как работать с не мотивированными людьми?
📚 Как не забыть всё, что знала, и продолжать развиваться?
⏰ Где взять время, чтобы и задачи разгребать, и хоть чуть-чуть кодить?
📅 Почему так много встреч? И зачем я на всех?
🧾 Как ничего не забыть и не продолбать важное?
⚖️ Как не стать микроменеджером, когда всё кажется важным?
😵 Как не выгореть, пока разбираешься, кто ты теперь вообще?
Если есть что еще добавить пишите в чат.
Буду понемного писать посты о том как мне удается решать такого рода вопросы в том числе.
Потому что мы ведь все понимаем: не всю жизнь мы будем писать код. Надо как-то учиться двигаться дальше 🚀
Поскольку моя текущая роль — руководитель разработки, решила поделиться, с какими внутренними вопросами и сложностями я столкнулась, когда перешла на эту позицию:
🧠 Я почти не пишу код. Боже, я деградирую?!
💬 Как мотивировать команду?
🪫 Как работать с не мотивированными людьми?
📚 Как не забыть всё, что знала, и продолжать развиваться?
⏰ Где взять время, чтобы и задачи разгребать, и хоть чуть-чуть кодить?
📅 Почему так много встреч? И зачем я на всех?
🧾 Как ничего не забыть и не продолбать важное?
⚖️ Как не стать микроменеджером, когда всё кажется важным?
😵 Как не выгореть, пока разбираешься, кто ты теперь вообще?
Если есть что еще добавить пишите в чат.
Буду понемного писать посты о том как мне удается решать такого рода вопросы в том числе.
Потому что мы ведь все понимаем: не всю жизнь мы будем писать код. Надо как-то учиться двигаться дальше 🚀
🤯4👍3
Я решила в субботу ваши великолепные умы не перегружать 😂 поэтому просто реальная достаточно смешная история из моего опыта
🎓 Как я получила A++ за курсовую на магистратуре в Лондоне🙈😂
Март 2015, магистратура в Лондоне. Нам выдали assignment по модулю Network Computing. Задание: реализовать RMI (Remote Method Invocation) на Java.
RMI — это такой способ, с помощью которого один объект может вызывать методы другого объекта на другом компьютере.
На тот момент никто из нас — ни я, ни мои одногруппники — вообще не понимал, что такое этот RMI, и Java у всех был только на начальном уровне. С чего начинать — непонятно 🫠
Нашла в библиотеке очень толстую книгу про RMI. Прочитала вступление… поняла ничего 😅
Перерыла весь интернет — пусто.
Потом решилась поискать на YouTube… и О ЧУДО! Нашла чувака, который быстро и чётко всё объяснял, даже показал исходники 🙏 Я смотрела это видео раз 100, ставила на паузу, делала скриншоты, повторяла шаг за шагом.
Всё поняла! Переписала код, изменила названия переменных, классов, интерфейсов , расписала всё в отчёте до самых мелочей. Прям in details, как говорится 😎
Сдала курсовую. В день результатов я просто молилась, чтобы получить хотя бы C — особенно с учётом проверки на плагиат 😬
И вот… мне ставят A++ 😱
Да ещё и забрали мой диск с работой в архив — чтобы показывать другим студентам как пример 🫠
Остальные получили так себе. Даже один араб, которому было лет на 6 больше меня и он вроде как опытный Java разраб, получил B+ 😒 Ну, может и несправедливо… но я ведь реально поняла тему и могла бы ответить на любой вопрос 😆
P.S. С того момента прошло 10 лет 😂 лучше меня не спрашивать про RMI 🤣 на харде может быть смогу найти исходники, но это не точно 😂 давайте лучше потом обсудим RPC, gRPC, REST 😂
🎓 Как я получила A++ за курсовую на магистратуре в Лондоне🙈😂
Март 2015, магистратура в Лондоне. Нам выдали assignment по модулю Network Computing. Задание: реализовать RMI (Remote Method Invocation) на Java.
RMI — это такой способ, с помощью которого один объект может вызывать методы другого объекта на другом компьютере.
На тот момент никто из нас — ни я, ни мои одногруппники — вообще не понимал, что такое этот RMI, и Java у всех был только на начальном уровне. С чего начинать — непонятно 🫠
Нашла в библиотеке очень толстую книгу про RMI. Прочитала вступление… поняла ничего 😅
Перерыла весь интернет — пусто.
Потом решилась поискать на YouTube… и О ЧУДО! Нашла чувака, который быстро и чётко всё объяснял, даже показал исходники 🙏 Я смотрела это видео раз 100, ставила на паузу, делала скриншоты, повторяла шаг за шагом.
Всё поняла! Переписала код, изменила названия переменных, классов, интерфейсов , расписала всё в отчёте до самых мелочей. Прям in details, как говорится 😎
Сдала курсовую. В день результатов я просто молилась, чтобы получить хотя бы C — особенно с учётом проверки на плагиат 😬
И вот… мне ставят A++ 😱
Да ещё и забрали мой диск с работой в архив — чтобы показывать другим студентам как пример 🫠
Остальные получили так себе. Даже один араб, которому было лет на 6 больше меня и он вроде как опытный Java разраб, получил B+ 😒 Ну, может и несправедливо… но я ведь реально поняла тему и могла бы ответить на любой вопрос 😆
P.S. С того момента прошло 10 лет 😂 лучше меня не спрашивать про RMI 🤣 на харде может быть смогу найти исходники, но это не точно 😂 давайте лучше потом обсудим RPC, gRPC, REST 😂
👍13
👋 Всем привет!
Недавно наткнулась на интересный сайт — https://bigfrontend.dev/ — его называют LeetCode-ом для фронтендеров. Там собрано много клёвых задач для практики, и я решила поделиться находкой 😊
Нашла задачку, решила — и поняла, что это отличная идея для небольших регулярных постов. Если зайдёт, можно делать рубрику: решать задачи вместе и обсуждать 💬
Давайте сегодня разомнёмся на одной из задач JavaScript уровня medium:
👉 https://bigfrontend.dev/problem/get-DOM-tags
Условие:
Есть DOM-дерево. Нужно вернуть массив уникальных имён тегов (в нижнем регистре). Порядок не важен.
Как подойти к решению:
Поскольку перед нами дерево — логично пройти его в ширину или глубину. А для хранения уникальных тегов идеально подойдёт
Как нам сделать дерево так чтобы удобно было обходить его? Думаю что таким вопросом уже кто-то точно задавался. (тут даже можно погуглить если ничего на ум не приходит чтобы не изобретать велосипед, тут главное правильное направление мыслей все же)
Есть такой встроенный в браузер объект [
Создаётся он через
👉 [Документация](https://developer.mozilla.org/en-US/docs/Web/API/Document/createTreeWalker)
Шаги:
1. Создаём
2. Создаём экземпляр класса
3. Берём текущую ноду
4. Пока есть ноды — добавляем их
5. Когда обойдём всё дерево — возвращаем массив из
Решение:
P.S. надеюсь оказалось полезно и вы что-то новое узнали и возможно даже продолжите решать задачки из этого сайта)
#frontend #javanoscript #разборЗадач #leetcodeДляФронта
Недавно наткнулась на интересный сайт — https://bigfrontend.dev/ — его называют LeetCode-ом для фронтендеров. Там собрано много клёвых задач для практики, и я решила поделиться находкой 😊
Нашла задачку, решила — и поняла, что это отличная идея для небольших регулярных постов. Если зайдёт, можно делать рубрику: решать задачи вместе и обсуждать 💬
Давайте сегодня разомнёмся на одной из задач JavaScript уровня medium:
👉 https://bigfrontend.dev/problem/get-DOM-tags
Условие:
Есть DOM-дерево. Нужно вернуть массив уникальных имён тегов (в нижнем регистре). Порядок не важен.
Как подойти к решению:
Поскольку перед нами дерево — логично пройти его в ширину или глубину. А для хранения уникальных тегов идеально подойдёт
Set.Как нам сделать дерево так чтобы удобно было обходить его? Думаю что таким вопросом уже кто-то точно задавался. (тут даже можно погуглить если ничего на ум не приходит чтобы не изобретать велосипед, тут главное правильное направление мыслей все же)
Есть такой встроенный в браузер объект [
TreeWalker](https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker). Он позволяет удобно обойти DOM.Создаётся он через
document.createTreeWalker:👉 [Документация](https://developer.mozilla.org/en-US/docs/Web/API/Document/createTreeWalker)
Шаги:
1. Создаём
TreeWalker: document.createTreeWalker(tree, NodeFilter.SHOW_ELEMENT), второй аргумент нам нужен для того чтобы нам в дереве были возвращены только элементы2. Создаём экземпляр класса
Set, в который будем добавлять теги.3. Берём текущую ноду
treeWalker.currentNode.4. Пока есть ноды — добавляем их
tagName (в нижнем регистре) в Set и двигаемся к следующей.5. Когда обойдём всё дерево — возвращаем массив из
Set.Решение:
/**
* @param {HTMLElement} tree
* @return {string[]}
*/
function getTags(tree) {
const treeWalker = document.createTreeWalker(tree, NodeFilter.SHOW_ELEMENT);
const res = new Set();
let cur = treeWalker.currentNode;
while (cur) {
res.add(cur.tagName.toLowerCase());
cur = treeWalker.nextNode();
}
return Array.from(res);
}
P.S. надеюсь оказалось полезно и вы что-то новое узнали и возможно даже продолжите решать задачки из этого сайта)
#frontend #javanoscript #разборЗадач #leetcodeДляФронта
bigfrontend.dev
BFE.dev - prepare for Front-End job interviews.
BFE.dev is a place to practice Front-End dev skills, discuss with others, get ready for interviews and get yourdream offer.
🔥12👍1
