Нотатки програміста
175 subscribers
24 photos
8 videos
9 files
45 links
Кидаю нотатки й думки з роботи, як Senior Full Stack Developer, Tech Leader, Team Leader і лектор IT)

Огляд технологій, пояснення, новини, проходження співбесід, реклама цікавих додатків і компаній, і багато іншого!

Більше: https://linktr.ee/alex.demko
Download Telegram
template: `
<h2>{{ title }}</h2>
<ul>
<li *ngFor="let item of items">{{ item }}</li>
</ul>
`,
})
export class ListComponent {
@Input() title: string;
@Input() items: string[];
}


Цей код описує компонент ListComponent, який містить два вхідних параметри: title та items

Компонент відображає заголовок та список елементів items, використовуючи директиву *ngFor (саме завдяки ній ти можеш зробити цикл по кожному елементу в масиві та вивести їх)

Компонент може бути використаний також і в інших компонентах, шляхом написання тегу <app-list> (ми його написали, там де була стрічка: selector: ‘app-list’) 😉

Angular має багато інших можливостей для створення складних веб-додатків, таких як маршрутизація, обробка подій, робота з формами та багато іншого


Ось приклад компонента на Vue, який також відображає список елементів зі списку, переданого як вхідний параметр:

<template>
<div>
<h2>{{ title }}</h2>
<ul>
<li v-for="item in items" :key="item">{{ item }}</li>
</ul>
</div>
</template>

<script>
export default {
name: 'ListComponent',
props: {
title: String,
items: Array
}
}
</script>

Цей код описує компонент ListComponent, який також містить два вхідних параметри: title та items

Компонент відображає заголовок та список елементів items, використовуючи директиву v-for (саме завдяки ній ти можеш зробити цикл по кожному елементу в масиві та вивести їх)

Компонент може бути використаний в інших компонентах шляхом включення тегу <list-component> (ми його написали, там де була стрічка: name: ‘AppComponent’)

Vue також має багато інших можливостей для створення складних веб-додатків, таких як маршрутизація, обробка подій, робота з формами та багато іншого)

Як ти бачиш, усе дуже схоже, тільки можливості та написання - трішки різне 😌


А ось приклад компонента на React, який також відображає список елементів зі списку, переданого як вхідний параметр:

import React from 'react';

function ListComponent(props) {
return (
<div>
<h2>{props.title}</h2>
<ul>
{props.items.map(item => <li key={item}>{item}</li>)}
</ul>
</div>
);
}

export default ListComponent;

Цей код описує функціональний компонент (компонент написаний завдяки слову function) ListComponent, який має два вхідних параметри: title та items

Компонент відображає заголовок та список елементів items, використовуючи метод map для проходженні по масиву та відображає кожен елемент на сайті

Компонент може бути використаний в інших компонентах шляхом включення тегу <ListComponent> (тому що, ми таким словом назвали назву функції: function ListComponent(props) {)

Як ти міг здогадатися, React також має багато інших можливостей для створення складних веб-додатків)


Ось так ось!
Як бачиш, усе дуже схоже одне на одне 😌

Так що, вибирай, те що тобі легше та цікавіше - і дізнавайся про цю технологію більше) 😉


Якщо ти насолоджуєшся моїми постами, донат допоможе мені віддавати більше часу на створення якісного контенту 🤗
5375411501575463

#web
🔥9👍4🤩1
Вітаю! 😃

Кому цікаво, як відправити свій сайт в Інтернет!

І ще, щоб на нього міг знайти будь-хто!

І! Абсолютно БЕЗКОШТОВНО - є два сервіси)

Vercel (https://vercel.com) і Netlify (https://www.netlify.com)

Кому цікаво, щоб я зробив пост, як можна відправити сайт на одному з цих сервісів - ставте: 👨‍💻




Якщо ти насолоджуєшся моїми постами, донат допоможе мені віддавати більше часу на створення якісного контенту 🤗
5375411501575463

#web
👨‍💻21🔥4
Media is too big
VIEW IN TELEGRAM
Вітаю! 😃

Ось і довгоочікувальний пост про сайт-портфоліо та Vercel)

Коротенька інструкція, як можна відправити свій сайт в Інтернет, та щоб усі його побачили 😌️️️️️️

Кому цікаво, як налаштувати GitHub, поставте 👨‍💻




Якщо ти насолоджуєшся моїми постами, донат допоможе мені віддавати більше часу на створення якісного контенту 🤗
5375411501575463

#web
👨‍💻20🔥8
Вітаю! 😃️️️️️️


Python - це мова програмування, яка підтримує різні методи паралельної обробки даних, включаючи асинхронність, багатопоточність та багатопроцесорність)

У цій статті ми розглянемо основні відмінності між цими технологіями та їхні використання у Python 😌️️

Але для кращого розуміння рекомендую зрозуміти так слова, як "потік" (декілька "операції", які ідуть одна за одною) та "операція" (дія), "процес" (виконання потока; або декількох потоків)


Асинхронність у Python

Асинхронне програмування - це стиль програмування, що дозволяє виконувати багато різних операцій в одному потоці, без блокування виконання інших операцій

За допомогою асинхронної обробки можна зменшити час очікування на відповідь від зовнішнього ресурсу (сайт, база даних, API, ...)

У Python, для асинхронного програмування використовуються асинхронна бібліотека asyncio

За допомогою неї можна створювати асинхронні функції)


Багатопоточність у Python

У Python, багатопоточність дозволяє одночасно виконувати кілька потоків у межах одного процесу

Потоки можуть ділити спільний доступ до ресурсів, таких як пам'ять та файлові системи тощо

Багатопоточність може бути використана для парелельної обробки даних, а також для створення інтерактивних додатків, що можуть відповідати на запити користувача в режимі реального часу


Багатопроцесорність у Python

Багатопроцесорність дозволяє виконувати кілька процесів одночасно на різних ядрах процесора (це дозволяє розвантажити компʼютер та зробити так, щоб він не зламався від перенавантаження 😊)

У Python, для багатопроцесорної обробки можна використовувати модулі multiprocessing та concurrent.futures

Використання багатопроцесорності може дозволити значно зменшити час виконання складних обчислень, таких як наукові розрахунки та обробка великих обсягів даних


Різниця між асинхронністю, багатопоточністю та багатопроцесорністю

Основна відмінність між цими технологіями полягає у тому, як вони забезпечують паралельну обробку даних

Асинхронність дозволяє виконувати багато різних операцій в одному потоці, не блокуючи виконання інших операцій

Багатопоточність дозволяє виконувати кілька потоків у межах одного процесу, ділячи спільний доступ до ресурсів

Багатопроцесорність дозволяє виконувати кілька процесів одночасно на РІЗНИХ ЯДРАХ ПРОЦЕСОРУ, але через це в елементів нема спільного доступу до ресурсів, але швидкість виконання коду зростає)

Інша відмінність полягає в тому, що асинхронність та багатопоточність використовують один процесор, тоді як багатопроцесорність використовує кілька процесорів

Це означає, що використання багатопроцесорності може дозволити забезпечити більш ефективну паралельну обробку даних

Використання асинхронності, багатопоточності та багатопроцесорності має декілька вбудованих бібліотек

Для роботи з асинхронністю використовують бібліотеки asyncio та aiohttp

Для роботи з багатопоточністю можна використовувати бібліотеки threading та concurrent.futures

Для роботи з багатопроцесорністю можна використовувати бібліотеки multiprocessing та concurrent.futures

Наприклад, для використання асинхронного програмування на Python, можна використовувати бібліотеку asyncio

За допомогою цієї бібліотеки можна створювати корутини (функції, які працюють асинхронно), які можуть виконуватися асинхронно

Корутини можуть бути виконані у межах одного потоку, що дозволяє зменшити навантаження на створення нових потоків

Крім того, використання асинхронності дозволяє забезпечити більш ефективне використання ресурсів, оскільки програма може продовжувати виконуватися, коли чекає на відповідь від зовнішнього ресурсу

Для використання багатопоточності на Python можна використовувати бібліотеку threading

За допомогою цієї бібліотеки можна створювати декілька потоків, які можуть працювати паралельно в межах одного процесу

Кожен потік може виконувати свою власну задачу, що дозволяє збільшити продуктивність програми

Проте, при використанні багатопоточності, необхідно пам'ятати про синхронізацію потоків, щоб уникнути конфліктів при доступі до спільних ресурсів!
😍3🔥2
Для використання багатопроцесорності на Python можна використовувати бібліотеку multiprocessing

За допомогою цієї бібліотеки можна створювати декілька процесів, які можуть працювати паралельно

Кожен процес має свій власний обсяг пам'яті та може виконувати свої власні задачі, що дозволяє збільшити продуктивність коду

Проте!!!
При використанні багатопроцесорності також необхідно пам'ятати про синхронізацію процесів та як відбувається обмін даних між ними)

Також, бібліотека concurrent.futures може бути використана як для роботи з багатопоточністю, так і з багатопроцесорністю

Вона дозволяє легко створювати паралельні задачі та керувати ними за допомогою потоків або процесів)
⚡3🤩2
Один з прикладів асинхронного програмування на Python - це паралельне виконання запитів до декількох веб-сервісів

В цьому прикладі ми використовуємо бібліотеку aiohttp для здійснення запитів та asyncio для асинхронного виконання функцій)

python
import asyncio
import aiohttp

async def fetch_data(session, url):
async with session.get(url) as response:
data = await response.json()
return data

async def main():
urls = [
'https://jsonplaceholder.typicode.com/todos/1',
'https://jsonplaceholder.typicode.com/todos/2',
'https://jsonplaceholder.typicode.com/todos/3'
]

async with aiohttp.ClientSession() as session:
tasks = [fetch_data(session, url) for url in urls]
results = await asyncio.gather(*tasks)

print(results)

if name == '__main__':
asyncio.run(main())


У цьому коді ми створюємо функцію fetch_data, яка здійснює запит до вказаного URL (посилання) і повертає отримані дані у форматі JSON (схожого на тип даних словник)

Далі ми створюємо головну функцію main, в якій визначаємо список URL-адрес для запиту та створюємо об'єкт ClientSession з бібліотеки aiohttp

Далі ми створюємо список задач tasks, які бажаємо виконати асинхронно

Кожна задача є запитом до веб-сервісу, використовуючи функцію fetch_data та об'єкт ClientSession

Ми передаємо цей список задач у функцію asyncio.gather, яка виконує всі задачі паралельно та чекає, поки всі задачі завершаться

У нашому прикладі ми отримуємо результати у вигляді списку, який містить результати всіх запитів

Ти можеш змінити список URL-адрес на будь-який інший список, який відповідає твоїм потребам 😉
⚡4👨‍💻1
Один з прикладів багатопоточного програмування на Python - це створення декількох потоків для виконання декількох задач одночасно

У цьому прикладі ми використовуємо бібліотеку threading, щоб створити декілька потоків і запустити їх для виконання функцій

python
import threading

def print_numbers():
for i in range(10):
print(i)

def print_letters():
for letter in ['a', 'b', 'c', 'd', 'e']:
print(letter)

if name == '__main__':
t1 = threading.Thread(target=print_numbers)
t2 = threading.Thread(target=print_letters)

t1.start()
t2.start()

t1.join()
t2.join()

print("Done!")


У цьому коді ми створюємо дві функції: print_numbers та print_letters

Кожна функція просто виводить послідовність чисел або літер в консолі

Ми створюємо два потока з бібліотеки threading, які вказують, що функція print_numbers та print_letters будуть виконуватись у різних потоках

Після створення потоків ми запускаємо їх за допомогою методу start()

Потім ми використовуємо метод join() для чекання завершення потоків перед тим, як вивести повідомлення "Done!" у кінці програми

Важливо пам'ятати, що майже будь-яка програма може бути написана багатопоточно, але потребує обережного планування та управління потоками, щоб уникнути проблем з конкуренцією за ресурси інших потоків!
🔥3👨‍💻2
Один з прикладів багатопроцесорного програмування на Python - це створення декількох процесів для виконання декількох задач одночасно

У цьому прикладі ми використовуємо бібліотеку multiprocessing, щоб створити декілька процесів і запустити їх для виконання функцій.

python
import multiprocessing

def print_numbers():
for i in range(10):
print(i)

def print_letters():
for letter in ['a', 'b', 'c', 'd', 'e']:
print(letter)

if name == '__main__':
p1 = multiprocessing.Process(target=print_numbers)
p2 = multiprocessing.Process(target=print_letters)

p1.start()
p2.start()

p1.join()
p2.join()

print("Done!")


У цьому коді ми створюємо дві функції: print_numbers та print_letters

Кожна функція просто виводить послідовність чисел або літер в консолі

Ми створюємо два об'єкти процесів з бібліотеки multiprocessing, які вказують, що функція print_numbers та print_letters будуть виконуватись у різних процесах

Після створення процесів ми запускаємо їх за допомогою методу start()

Потім ми використовуємо метод join() для чекання завершення процесів перед тим, як вивести повідомлення "Done!" у кінці програми

Важливо пам'ятати, що майже будь-яка програма також може бути написана багатопроцесорною, але потребує обережного планування та управління процесами, щоб уникнути проблем з конкуренцією за ресурси інших процесів!
🔥4🤩1
Висновок 😌

У цій статті ми розглянули різницю між асинхронністю, багатопоточністю та багатопроцесорністю на Python

Асинхронність дозволяє програмі виконувати багато різних операцій одночасно та зменшує накладні витрати на створення нових потоків або процесів

Багатопоточність дозволяє програмі виконувати декілька задач паралельно в межах одного процесу

Багатопроцесорність дозволяє програмі виконувати декілька задач паралельно в межах декількох процесів

Кожен з цих методів має свої переваги та недоліки, тому вибір підходу залежить від конкретної задачі та того, як будуть використовуватися ресурси!

Якщо ти хочеш виконувати багато запитів до зовнішніх сервісів (даних), або до баз даних, асинхронність може бути найбільш оптимальним варіантом)

А якщо ж ти працюєш з обчислювально важкими задачами, такими як наукові розрахунки або обробка великих обсягів даних, то багатопроцесорність може бути кращим варіантом 😉

Багатопоточність може бути корисною у випадках, коли необхідно обробити багато коротких задач, які зазвичай не звʼязані між собою


Як бачиш, при розробці програм на Python важливо знати різницю між цими підходами та їх можливості, щоб вибрати оптимальний підхід для вирішення конкретної задачі)

Але я тобі спробував пояснити як можна простіше це 😌

Якщо будуть якісь питання додаткові - можеш написати мені особисто 😉 (@alex_demko_work)



Якщо ти насолоджуєшся моїми постами, донат допоможе мені віддавати більше часу на створення якісного контенту 🤗
5375411501575463

#python
🔥6💯2
Нотатки програміста
Вітаю! Дякую, що написав Олександру (@thebirdisfreed) Можливо, ти впевнений, що ти розробник middle-senior рівня (Frontend, або Backend) - також можеш написати Олександру) у нього дня тебе буде цікава пропозиція! 😉 (Від мене дякую усім хто написав Олександру…
Вітаю! 😃️️️️️️

Памʼятаєш, я розповідав, про Олександра (@thebirdisfreed), який збирав групу Frontend, або Backend розробників??

Йому потрібна твоя допомога 😌️️️️️️

Якщо ти відчуваєш себе саме на Seniuor Junior - Middle Frontend розробника

То можеш йому написати)

Саме зараз його команді потрібен ти!

Впевнений, що ти зможеш їм допомогти та себе продвинути в програмуванні 😉️️️️

Тому!
Якщо ти впевнений - не зволікай, пиши йому 😉️️️️



Якщо ти насолоджуєшся моїми постами, донат допоможе мені віддавати більше часу на створення якісного контенту 🤗
5375411501575463

#web
🔥6👍1🤩1
Вітаю! 😃

Хочу запросити тебе на свій вебінар по Git та GitHub! 🥳

Це безкоштовний вебінар, так як він перший на цьому каналі, і буде відбуватися прямо тут! У «Нотатках програміста»😌

У вівторок о 19:00 за Києвом (13.06.2023) 😊️️️️️️

Буду радий бачити тебе!

Ми будемо розбирати базу роботи з цими системами

Також, якщо у тебе є запитання - пиши мені в особисті @alex_demko_work
І я спробую їх розглянути на цьому вебінарі 😉️️️️️️

Для твоєї зручності я запишу цей вебінар та через Телеграм його відправлю!
Тож, ти нічого не пропустиш 😌️️️️️️

Ну що?? Зацікавлений?)

Якщо так, то вебінар буде зовсім скоро - підготуй питання, тістечка та чайок на цей час)

А тим часом, можеш подивитися мої минулі вебінари, наприклад: для школи-програмування CURSOR 😉
1.) Розробка професійного JS портфоліо | https://t.me/junior_javascript/1179
2.) Верстка макету з нуля | https://t.me/junior_javascript/1188


Якщо ти насолоджуєшся моїми постами, донат допоможе мені віддавати більше часу на створення якісного контенту 🤗
5375411501575463

#webinar
🔥10👍6👏3❤‍🔥2🤩2❤1
Вітаю! 😃

Сьогодні хотів би поділитися з тобою деякими цікавими деталями про Babel та його використання)

Babel - це інструмент для компіляції (перероблення) сучасного JavaScript коду в код попередньої версії JavaScript, які підтримуються в більшості браузерів

Це дозволяє нам писати код, використовуючи нові функції та синтаксис JavaScript, і не хвилюватися про сумісність зі старішими браузерами 😌

Ось приклад використання Babel у проекті:

Припустимо, ти створив файл “script.js” та “index.html”

У “script.js” ти використовуєш стрілкові функції та spread operator:

const numbers = [1, 2, 3, 4, 5];

const doubledNumbers = numbers.map((number) => number * 2);
console.log(...doubledNumbers);


Але ти помічаєш, що цей код може не працювати на старіших браузерах, які не підтримують такі функції та оператори 😉

Щоб забезпечити сумісність з усіма браузерами, ти можеш використати Babel для компіляції свого коду)

Спочатку встанови Babel за допомогою пакетного менеджера npm:

npm install @babel/core @babel/cli @babel/preset-env

Потім створи файл конфігурації Babel “.babelrc” у кореневій папці проекту:

{
"presets": ["@babel/preset-env"]
}

Тепер викличте Babel з командного рядка, щоб зкомпілювати твій код:

npx babel script.js --out-file compiled.js

Тепер ти можеш підключити “compiled.js” у своєму “index.html” і запустити твою програму на будь-якому браузері, який підтримує JavaScript

Це всього лише невеликий приклад використання Babel!

Його можна використовувати для багатьох інших речей, таких як перетворення JSX (розширення JavaScript для React) у звичайний JavaScript або підтримка інших експериментальних функцій мови)

Babel є потужним інструментом для розробників, які хочуть використовувати сучасний JavaScript і забезпечити сумісність зі старішими браузерами

Спробуй його і дай мені знати, що ти думаєш! 😊


Якщо ти насолоджуєшся моїми постами, донат допоможе мені віддавати більше часу на створення якісного контенту 🤗
5375411501575463

#web
🔥8👏1🤩1
Вітаю! 😃

Розумію, що у тебе може буде не багато часу читати мої статті...

Але! Бувають дні, коли замість того, щоб писати щось нове - я тобі можу підказати, що ти міг би перечитати, щоб собі ж повторити 😌️️️️️️

І сьогодні - саме цей день!

Пропоную, тобі перечитати наступні технології

Вони будуть пов'язані з веб-технологіями)

І, сподіваюсь, сподобається тобі 😉️️️️️️


Якщо ти насолоджуєшся моїми постами, донат допоможе мені віддавати більше часу на створення якісного контенту 🤗
5375411501575463

#web
👏4🔥3😎1
Ну що ж!) будьте готові))

Уже рівно через 1 годину почнеться наш вебінар!

Усіх чекаю 😉️️️️️️
🔥8⚡1