JavaScript особливості роботи з об'єктами в функціях
У нас є декілька прикладів коду. 1 і 2 приклади показують роботу з масивом, а 3 і 4 приклади з об'єктом.
У обох кейсах ми робимо оновлення для об'єкта і для масива, які передаються через аргументи в функцію
Спробуйте зрозуміти який буде результат, чи зміняться об'єкт або масив після кожного з 4 випадків?
Відповідь:
Для 1 прикладу коду зовнішній об'єкт "objectNumbers" не зміниться, не дивлячись на те що ми намагаємось його переасайнити в середині функції "update()" таким чином
Чому ж це ніяк не впливає на змінну
Для прикладу коду 2 ми замість переприсвоєння, міняємо властивість
Те саме відбувається і для прикладів 3 і 4 з масивом 'numbers'. Оскільки масиви теж передаються by reference в функції.
У нас є декілька прикладів коду. 1 і 2 приклади показують роботу з масивом, а 3 і 4 приклади з об'єктом.
У обох кейсах ми робимо оновлення для об'єкта і для масива, які передаються через аргументи в функцію
update. Спробуйте зрозуміти який буде результат, чи зміняться об'єкт або масив після кожного з 4 випадків?
Відповідь:
Для 1 прикладу коду зовнішній об'єкт "objectNumbers" не зміниться, не дивлячись на те що ми намагаємось його переасайнити в середині функції "update()" таким чином
obj = {}. Чому ж це ніяк не впливає на змінну
objectNumbers? Оскільки об'єкти в JS передаються по reference в функції (не створюється новий об'єкт, а передається на нього посилання в пам'яті). А ми переприсвоюємо об'єкт obj і тим самим втрачаємо reference на зовнішній об'єкт objectNumbers. Тепер змінна obj рівносильна тому що ми створили новий об'єкт в функції update. І зв'язок з objectNumbers втрачений.Для прикладу коду 2 ми замість переприсвоєння, міняємо властивість
numbers в об'єкті obj, але так як ми раніше вже згадували вищє об'єкти в JS передаються по reference в функції, то будь які прямі маніпуляції з аргументом obj приведуть до мутації зовнішнього об'єкта objectNumbers, бо і obj і objectNumbers посилаються на одну і ту саму адресу в пам'яті.Те саме відбувається і для прикладів 3 і 4 з масивом 'numbers'. Оскільки масиви теж передаються by reference в функції.
Dev community interviewboom
Photo
Висновок: обидва варіанти не юзабельні в продакшн коді. Потрібно завжди робити копію масива чи об'єкта в функції перед тим як робити будь які маніпуляції з ними. Це завжди робочий і 100% безпечний варіант в світі JS.
Fix:
Ті хто прочитав код уважно знайшли помилку, дякую що допомагаєте 🫡
Насправді spread оператор в JS робить shallow copy, тому правильний варіант буде зі spread оператором виглядати якось так:
Або все ж таки використати нативну функцію structuredClone()
Fix:
Ті хто прочитав код уважно знайшли помилку, дякую що допомагаєте 🫡
Насправді spread оператор в JS робить shallow copy, тому правильний варіант буде зі spread оператором виглядати якось так:
const update = (obj) => {
const newObject = {
...obj,
numbers: [
...obj.numbers,
]
};
newObject.numbers.push(12);
return {};
}
Або все ж таки використати нативну функцію structuredClone()
👏1
Недавно був свідком як розробник перейшов з свого "нагрітого" і комфортного місця на галері в маленьку продуктову компанію, яка займається розробкою онлайн ігор.
Що може мотивувати розробників перейти працювати з великої, інтернаціональної української топ аутсорс компанії в маленький продукт?
- Більша ЗП, запропонували більше ніж зараз, тоді як в аутсорсі потрібно пройти через бюрократичні і довготривалі процедури, щоб підтвердити свою цінність і отримати аппруви на всіх рівнях. І це ще далеко не факт що у вас вийде.
- Підвищення, як шанс випробувати себе і ривок вгору по кар'єрним сходинкам. Але більша відповідальність, а відповідно і необхідність швидко навчатись і призвичаїтись до нових реалій.
- Друзі або знайомі перетягнули до себе в команду, працювати з своїм близьким оточенням це звичайно більш комфортно ніж у середовищі де купа незнайомих і часто не дружніх колег, до яких треба знайти ще підхід.
- Отримати унікальний досвід роботи в продукт компаніях, це зазвичай більша динаміка, тут може бути і фінансова нестабільність оскільки менші масштаби і будь які коливання і падіння прибутковості буде набагато болісніше ніж у великих IT корпорацій, і менші дедлайни і більша відповідальність, бо немає зверху вас ніяких менеджерів, які будуть захищати вас перед замовником, і у разі незацікавленості ваших послуг можуть перекинути на інший проєкт. На продукті ви працюєте напряму з вашим бізнесом і ніяких компромісів, або тут і зараз або "гудбай". Але при цьому в разі успіху в продуктовій компанії можна як швидко впасти, так і швидко зростати як по кар'єрі так і по рівню зп. І отримати досвід як побудувати власну успішну компанію.
У будь якому випадку це ризик, в аутсорс середовищі ви завжди знаходитесь в більш стабільному і комфортному середовищі. Для тих, хто не любить "пригоди" типу овертаймів і постійні зміни вимог, то це найкращий варіант. Також аутсорс це хороший варіант коли вам потрібна стабільність особливо фінансова.
Але якщо у вас "кипить кров" і є бажання себе випробувати і вийти з зони комфорта, можливо навіть це вас приведе до дуже успішного майбутнього. Але тут все сильно залежить від вас особисто. Тому вибір за вами!
Що може мотивувати розробників перейти працювати з великої, інтернаціональної української топ аутсорс компанії в маленький продукт?
- Більша ЗП, запропонували більше ніж зараз, тоді як в аутсорсі потрібно пройти через бюрократичні і довготривалі процедури, щоб підтвердити свою цінність і отримати аппруви на всіх рівнях. І це ще далеко не факт що у вас вийде.
- Підвищення, як шанс випробувати себе і ривок вгору по кар'єрним сходинкам. Але більша відповідальність, а відповідно і необхідність швидко навчатись і призвичаїтись до нових реалій.
- Друзі або знайомі перетягнули до себе в команду, працювати з своїм близьким оточенням це звичайно більш комфортно ніж у середовищі де купа незнайомих і часто не дружніх колег, до яких треба знайти ще підхід.
- Отримати унікальний досвід роботи в продукт компаніях, це зазвичай більша динаміка, тут може бути і фінансова нестабільність оскільки менші масштаби і будь які коливання і падіння прибутковості буде набагато болісніше ніж у великих IT корпорацій, і менші дедлайни і більша відповідальність, бо немає зверху вас ніяких менеджерів, які будуть захищати вас перед замовником, і у разі незацікавленості ваших послуг можуть перекинути на інший проєкт. На продукті ви працюєте напряму з вашим бізнесом і ніяких компромісів, або тут і зараз або "гудбай". Але при цьому в разі успіху в продуктовій компанії можна як швидко впасти, так і швидко зростати як по кар'єрі так і по рівню зп. І отримати досвід як побудувати власну успішну компанію.
У будь якому випадку це ризик, в аутсорс середовищі ви завжди знаходитесь в більш стабільному і комфортному середовищі. Для тих, хто не любить "пригоди" типу овертаймів і постійні зміни вимог, то це найкращий варіант. Також аутсорс це хороший варіант коли вам потрібна стабільність особливо фінансова.
Але якщо у вас "кипить кров" і є бажання себе випробувати і вийти з зони комфорта, можливо навіть це вас приведе до дуже успішного майбутнього. Але тут все сильно залежить від вас особисто. Тому вибір за вами!
❤3
Dev community interviewboom
Друзі, чи варто питання в тесті перекласти на українську мову чи лишити на англійській?
Виходячи з результатів опитування англійська мова в тестах всіх влаштовує? Будемо одночасно і тести проходити і англійську мову вчити ) Бо перевага сильна в сторону інгліш, значить для більшості це не критично, але я всеодно підтримаю тих, хто голосував за українську, знаю що вас менше, але заради вас ми зробимо це 💪
❤2
Екстремальне програмування на практиці, або як можна за один момент випадково видалити код, який писав дуже довго і дуже тяжко, а потім знову повернути все до життя.
Дякую IDE WebStorm! Бо навіть після найнебезпечнішої команди "git reset --hard", ця IDE врятувала всю мою кодову базу, яку я навіть не встиг закомітити.
WebStorm все пам'ятає, бо зберігає local history всіх змін файлів, які були в проекті. І я просто зробив ролбек.
Цікаво а VSCode так вміє?
Дякую IDE WebStorm! Бо навіть після найнебезпечнішої команди "git reset --hard", ця IDE врятувала всю мою кодову базу, яку я навіть не встиг закомітити.
WebStorm все пам'ятає, бо зберігає local history всіх змін файлів, які були в проекті. І я просто зробив ролбек.
Цікаво а VSCode так вміє?
🤔3
AI Engineering - це не Vibe coding
Мені прийшла крута ідея, разом з вами попрактикувати AI Engineering і побудувати власну RAG-систему на LangChain фреймворку для генерації тестових питань. Суть в тому що я багато тестових питань пишу вручну, іноді беру ідеї з різних джерел, але потім роблю рефакторінг і покращення контексту і складності питання за допомогою Open AI API і спеціально тренованої для цього модельки (Fine-tune).
Але ця система не ефективна, хочу покращити якість і досягти більш релевантних питань, щоб більше автоматизувати процес і менше робити ручну валідацію.
- Розберемось що таке LangChain
- Як працює RAG-система
- Інтегруємо все з Open API модельками
Чи буде цікаво вам побачити як я налаштовую LangChain і RAG-систему з використанням векторної бази даних, це буде мій перший досвід у світ AI інжинирінгу. Будемо навчатись разом новим трендовим скілам?
Мені прийшла крута ідея, разом з вами попрактикувати AI Engineering і побудувати власну RAG-систему на LangChain фреймворку для генерації тестових питань. Суть в тому що я багато тестових питань пишу вручну, іноді беру ідеї з різних джерел, але потім роблю рефакторінг і покращення контексту і складності питання за допомогою Open AI API і спеціально тренованої для цього модельки (Fine-tune).
Але ця система не ефективна, хочу покращити якість і досягти більш релевантних питань, щоб більше автоматизувати процес і менше робити ручну валідацію.
- Розберемось що таке LangChain
- Як працює RAG-система
- Інтегруємо все з Open API модельками
Чи буде цікаво вам побачити як я налаштовую LangChain і RAG-систему з використанням векторної бази даних, це буде мій перший досвід у світ AI інжинирінгу. Будемо навчатись разом новим трендовим скілам?
❤10
Майбутнє розробників під загрозою? 🤔
Панове, ми рухаємось з вами в напрямку коди AI асистенти перетворять код проектів на black box. Це коли програмістам більше не потрібно читати і писати код взагалі, це умовно кажучи буде папочка "X", в якій лежать ісходніки. І всім буде однаково що там і як воно працює, і чи відповідає цей код software design patterns чи там "портянка" де все максимально НЕ читабельно і не оптимізовано.
Якщо щось не працює то вайбкодери просто попросять AI все пофіксити, і відповідно людина в якої нуль досвіду з програмування не зможе критично осмислити чи той код якісний, чи то гавно код. А клієнти будуть радо хлопати в долоні і казати ось як швидко вайбкодер мені запиляв задачку!
Ось така реальність вже наступає і відповідно дев комьюніті розділилось і зараз відбувається реально революція між олдами, які руцями будували все і проходили всі етапи самостійно і між "вайбкодерами", які зараз пишуть промпти і за них все автоматично робить AI асистент.
Давайте не забувати хто ми, і що всі AI асистенти навчені на кодовій базі GItHub і StackOverflow, і сліпо довіряти чомусь не можна, бо ми тоді перестаємо бути інженерами розробниками, давайте збережемо культуру і красу написання коду і будемо передавати ці знання новачкам, не дамо поколінню "вайберів" проміняти чистий код на "чорний ящик".
Доречі залив відос не про хайпову AI тему, а стараюсь поширювати навчальний контент і все ж таки слідувати принципу вивчи програмування, а потім юзай AI.
https://vt.tiktok.com/ZSm54MpV5/
Панове, ми рухаємось з вами в напрямку коди AI асистенти перетворять код проектів на black box. Це коли програмістам більше не потрібно читати і писати код взагалі, це умовно кажучи буде папочка "X", в якій лежать ісходніки. І всім буде однаково що там і як воно працює, і чи відповідає цей код software design patterns чи там "портянка" де все максимально НЕ читабельно і не оптимізовано.
Якщо щось не працює то вайбкодери просто попросять AI все пофіксити, і відповідно людина в якої нуль досвіду з програмування не зможе критично осмислити чи той код якісний, чи то гавно код. А клієнти будуть радо хлопати в долоні і казати ось як швидко вайбкодер мені запиляв задачку!
Ось така реальність вже наступає і відповідно дев комьюніті розділилось і зараз відбувається реально революція між олдами, які руцями будували все і проходили всі етапи самостійно і між "вайбкодерами", які зараз пишуть промпти і за них все автоматично робить AI асистент.
Давайте не забувати хто ми, і що всі AI асистенти навчені на кодовій базі GItHub і StackOverflow, і сліпо довіряти чомусь не можна, бо ми тоді перестаємо бути інженерами розробниками, давайте збережемо культуру і красу написання коду і будемо передавати ці знання новачкам, не дамо поколінню "вайберів" проміняти чистий код на "чорний ящик".
Доречі залив відос не про хайпову AI тему, а стараюсь поширювати навчальний контент і все ж таки слідувати принципу вивчи програмування, а потім юзай AI.
https://vt.tiktok.com/ZSm54MpV5/
👍4😁1
Одна з моїх мрій 😁
Хочу таку роботу, щоб мені ставили задачі на вивчення нових технологій, в тому числі AI engineering, або щось подібне, що зараз в тренді і швидко розвивається
Хочу таку роботу, щоб мені ставили задачі на вивчення нових технологій, в тому числі AI engineering, або щось подібне, що зараз в тренді і швидко розвивається
😁2
Допоможіть обрати кращий варіант, суть в тому, щоб виводити ієрархію скілів по конкретній позиції і конкретному рівню, в коментах додам голосовалку 🙏
Нарешті розробили власний лого для нашої платформи! я знаю що він не ідеальний, ви просто не уявляєте скільки варіантів передивились 😀 Але зараз фокусуємось на технічній реалізації і маркетингу.
От якби займатись виключно проектом, стільки цікавих ідей є для функціоналу і для навчального контенту, готую цікавий матеріал про інтеграції AI і автоматизацію, все як обіцяв 🫡
От якби займатись виключно проектом, стільки цікавих ідей є для функціоналу і для навчального контенту, готую цікавий матеріал про інтеграції AI і автоматизацію, все як обіцяв 🫡
👍1
Dev community interviewboom
Привіт, розібрати тему React Compiler? Бачу що є запит на цю тему, якщо цікаво спробую підготувати цікавий матеріал
Друзі, хочеться зробити швидко, і не заморочуватись, але так як ви тоді підтримали цю ідею розібрати React Compiler, я постараюсь зробити глибокий аналітичний матеріал, так як ви любите ) Докопаюсь до самих ісходніків і дати вам класні приклади, аби пояснити суть і структурувати матеріал. Work in Progress 🙌
❤4👍1
Друзі, питання, заморочитись над 2 частиною React Compiler і показати більше різних кейсів, щоб показати по якому алгоритму кампілятор робить оптимізацію? Або пройдемось по новій цікавій темі React hydration
Anonymous Poll
50%
2 частина по React Compiler under the hood
50%
Розібрати іншу тему React hydration
Не спим, працюємо над покращенням алгоритмів формування тестових питань по складності і контексту для тестів.
Робимо повну карту скілів необхідних розробнику для конкретного рівня і позиції
Є значні покращення в цьому напрямку...
І ні, не вайбкодив, все вручну пишу, але прошу AI забирати на себе "тупу" або кращє сказати "нудну" і рутинну роботу ) Наприклад пошук і збір списку скілів по конкретному напрямку.
Задачі в тестах будуть цікавіші і глибші.
Робимо повну карту скілів необхідних розробнику для конкретного рівня і позиції
Є значні покращення в цьому напрямку...
І ні, не вайбкодив, все вручну пишу, але прошу AI забирати на себе "тупу" або кращє сказати "нудну" і рутинну роботу ) Наприклад пошук і збір списку скілів по конкретному напрямку.
Задачі в тестах будуть цікавіші і глибші.
👍3😱1
