- 34
- 337 138
Віктор Турський про програмування
Ukraine
เข้าร่วมเมื่อ 18 ก.ย. 2022
* Фундаментально про програмування
* Про процеси розробки ПЗ
* Про проектування
* Про те, як працють різні системи всередині
Автор каналу - Віктор Турський (Viktor Turskyi)
Twitter - ViktorTurskyi
Жабаскрипт (JabaScript) в телеграмі - t.me/jabascript
#програмування #інтернет #programming #internet #javascript #mysql #dns #dhcp #https #tcp #linux
* Про процеси розробки ПЗ
* Про проектування
* Про те, як працють різні системи всередині
Автор каналу - Віктор Турський (Viktor Turskyi)
Twitter - ViktorTurskyi
Жабаскрипт (JabaScript) в телеграмі - t.me/jabascript
#програмування #інтернет #programming #internet #javascript #mysql #dns #dhcp #https #tcp #linux
Що захищає твої дані й гроші від хакерів? Асиметричне шифрування та цифровий підпис
Шифрування й цифровий підпис лежить в основі безпеки Інтернету. Базове розуміння цих концепций важливе для кожного інженера.
У відео спробував відповісти на:
✅ Чим відрізняється симетрична й асиметрична криптографія?
✅ Навіщо потрібен вектор ініціалізації?
✅ Як працює аутентифікація по ключу в SSH?
✅ Як працює Дія підпис чи підпис в банківських системах?
✅ Як працює шифрування листів за допомогою PGP. Той самий Proton mail?
✅ Як працює JWT?
✅ Як праюють холодні гаманці в блокчейні?
✅ Як працює двофакторна аутентифікація через Google Authenticator?
3000 грн ЗНИЖКИ на курси Mate Acadamy для підписників:
mate.ac/v-turskyi
Станьте спонсором цього каналу: th-cam.com/channels/hhNJ3SmzX_d7kMpSEMDfzg.htmljoin
Допоможіть каналу розвиватися й отримуйте доступ до ексклюзивного контенту.
Код на Github: github.com/koorchik/jabascript-materials/tree/main/encryption
Зміст відео:
0:00 - Вступ
2:04 - Симетрична криптографія
2:41 - Асиметрична криптографія
4:35 - Шифруванян публічним ключем
5:00 - Цифровий підпис
8:52 - Гібридні схеми
10:55 - Еліптичні криві
11:45 - Підпис симетричним ключем
12:22 - JWT
13:45 - Основна проблема
16:58 - Холодні гаманці в блокчейн
18:25 - Гугл аунтентифіктор
20:54 - Аутентифікація по ключу в SSH
25:10 - Партнерський блок
27:45 - RSA на NodeJs
31:00 - ECC на NodeJs
31:30 - AES на NodeJs
32:12 - Вектор ініціалізації та ECB пінгвін
32:12 - Вектор ініціалізації та ECB пінгвін
36:05 - Бекдор в алгоритмах
🏠 Мої соцмережі:
Жабаскрипт в телеграмі - t.me/jabascript
Я в Твітер - ViktorTurskyi
Мій Linkedin - www.linkedin.com/in/turskyi/
#програмування #українською #programming #encryption #digitalsignature #privatekey #coldwallet #rsa #https #internet
У відео спробував відповісти на:
✅ Чим відрізняється симетрична й асиметрична криптографія?
✅ Навіщо потрібен вектор ініціалізації?
✅ Як працює аутентифікація по ключу в SSH?
✅ Як працює Дія підпис чи підпис в банківських системах?
✅ Як працює шифрування листів за допомогою PGP. Той самий Proton mail?
✅ Як працює JWT?
✅ Як праюють холодні гаманці в блокчейні?
✅ Як працює двофакторна аутентифікація через Google Authenticator?
3000 грн ЗНИЖКИ на курси Mate Acadamy для підписників:
mate.ac/v-turskyi
Станьте спонсором цього каналу: th-cam.com/channels/hhNJ3SmzX_d7kMpSEMDfzg.htmljoin
Допоможіть каналу розвиватися й отримуйте доступ до ексклюзивного контенту.
Код на Github: github.com/koorchik/jabascript-materials/tree/main/encryption
Зміст відео:
0:00 - Вступ
2:04 - Симетрична криптографія
2:41 - Асиметрична криптографія
4:35 - Шифруванян публічним ключем
5:00 - Цифровий підпис
8:52 - Гібридні схеми
10:55 - Еліптичні криві
11:45 - Підпис симетричним ключем
12:22 - JWT
13:45 - Основна проблема
16:58 - Холодні гаманці в блокчейн
18:25 - Гугл аунтентифіктор
20:54 - Аутентифікація по ключу в SSH
25:10 - Партнерський блок
27:45 - RSA на NodeJs
31:00 - ECC на NodeJs
31:30 - AES на NodeJs
32:12 - Вектор ініціалізації та ECB пінгвін
32:12 - Вектор ініціалізації та ECB пінгвін
36:05 - Бекдор в алгоритмах
🏠 Мої соцмережі:
Жабаскрипт в телеграмі - t.me/jabascript
Я в Твітер - ViktorTurskyi
Мій Linkedin - www.linkedin.com/in/turskyi/
#програмування #українською #programming #encryption #digitalsignature #privatekey #coldwallet #rsa #https #internet
มุมมอง: 15 701
วีดีโอ
Що не так з Інтернетом в кафе? Розбираємо DHCP
มุมมอง 76Kปีที่แล้ว
Відео з серії, як працює Інтернет. Це відео про те, звідки беруться налаштування Інтернету на ваших пристроях. Також поговоримо трохи про безпеку У відео спробував відповісти на: ✅ Потенційну небезпеку при користуванн Інтернетом в кафе ✅ Концептуально розібрати, як пристрої отримують налаштування мережі ✅ Підміняю адресу сайту в локальній мережі ✅ Розбираємо трафік в деталях Wireshark Станьте с...
Як працює Інтернет? Як працює рекурсивний пошук в DNS?
มุมมอง 12Kปีที่แล้ว
Якщо ти займаєшся веб-розробкою, то маєш розуміти, як працює Інтернет. Це відео друге в серії про DNS з появненням, як працює рекурсивний пошук доменного імені. У відео спробував відповісти на: ✅ Невже кожен DNS сервер зберігає інформацію про вс веб-сайти світу ✅ Розбір рекурсивного пошуку DNS імені ✅ Навіщо потрібн NS записи ✅ Навіщо потрібн коренев DNS сервери ✅ Звідки DNS сервер знає адреси ...
Як працює Інтернет? Основні питання про DNS
มุมมอง 49Kปีที่แล้ว
Якщо ти займаєшся веб-розробкою, то маєш розуміти, як працює Інтернет. Це відео про DNS з відповідями на найбільш стандартн питання. У відео спробував відповісти на: ✅Звідки браузер знає на який з серверів зайти? ✅Звідки операційна система знає до якого DNS серверу звернутися? ✅ Що ми запрошуємо у DNS сервера? ✅ DNS використовує TCP чи UDP? ✅ Чи може DNS повернути декілька ip-адрес одночасно? ✅...
Як підтримати канал (варіанти спонсорства)?
มุมมอง 1.7Kปีที่แล้ว
Станьте спонсором цього каналу: th-cam.com/channels/hhNJ3SmzX_d7kMpSEMDfzg.htmljoin Допоможіть каналу розвиватися й отримуйте доступ до ексклюзивного контенту. Бери таку, щоб сума в нотифікації про оплату не дратувала тебе щомісяця. А краще, щоб навпаки приносила втіху, що це допомагає каналу розвиватися :). Весь основний контент буде доступний без спонсорства Обирай рівень: ✅Кадер-малюк ✅Архіт...
Як швидкість світла обмежує швидкість твого веб-сайту? Розбираємо на реальному прикладі
มุมมอง 12Kปีที่แล้ว
Якщо ти займаєшся веб-розробкою, то маєш розуміти, як працює Інтернет. Записав перше відео про це й почав з фундаментального обмеження - швидкост світла. У відео спробував відповісти на: ✅Що відбувається, коли ви заходите на сайт? ✅Чи буде колись такий Інтернет, щоб пінг до США був менше 100мс? ✅Як впливає швидкість світла на швидкість твого сайту? ✅Вплив TCP Handshake ✅Вплив TLS Handshake ✅Чом...
Як працює повнотекстовий пошук? Розбираємо на практиці інвертовані індекси
มุมมอง 13Kปีที่แล้ว
Розбір в деталях, як працюють інвертован індекси. Інвертован індекси використовуються для повнотектового пошуку в MySQL, PostgreSQL, Elastic Search та інших базах даних. Спробував відповісти на наступн питання: ✅Навіщо потрібн інвертован індекси й як їх можливості? ✅Чому не працюють звичайн індекси для повнотекстового пошуку? ✅Як влаштован інвертован індекси всередені? ✅Що таке стемінг й лемати...
Як працює Base64 й навіщо він потрібен?
มุมมอง 13Kปีที่แล้ว
Base64 один з самих популярних стандартів кодування бінарних даних у вигляд строки. У відео відповідаємо на питання: Спробував відповісти на наступн питання: ✅Навіщо потрібен Base64? ✅Як працює Base64 й чому об'єм даних зростає? ✅Чи буває Base32 та Base16 й навіщо він потрібен? ✅Що всередин JSON Web Token? ✅Чи передає Basic Auth пароль відкритим текстом? ✅Як закодувати картинку в Base64? ✅UUID ...
Як працюють індекси в базах на прикладі. MySQL vs Postgres. UUID vs Auto Increment.
มุมมอง 16Kปีที่แล้ว
На приклад розберемо роботу індексів в базах даних. Чому це варто знати й що це нам дає? Спробував відповісти на наступн питання: ✅Як працюють індекси? ✅Що таке кластерний індекс? ✅Різниця між MySQL та Postgres при робот з індексами? ✅Пару слів про MVCC й Heap Only Tuple ✅Чому UUID може з'їсти ваш гроші? ✅Що таке covering index? ✅Як OFFSET впливає на виборки? ✅Як індекси впливають на INSERT? Пр...
Хешування, кодування, шифрування. В чому різниця?
มุมมอง 10Kปีที่แล้ว
Хешування, кодування, шифрування - не плутай! Спробував відповісти на наступн питання: ✅Що таке хешування? ✅Що таке кодування? ✅Що таке шифрування? ✅Як ц поняття відрізнаються один від одного Станьте спонсором цього каналу: th-cam.com/channels/hhNJ3SmzX_d7kMpSEMDfzg.htmljoin Допоможіть каналу розвиватися й отримуйте доступ до ексклюзивного контенту. Зміст відео: 0:00 - Питання для перевірки 1:5...
Дерева. Пошук. Алгоритми. Бази даних
มุมมอง 12Kปีที่แล้ว
Це відео є підготовчим до більш глибокого занурення в бази даних. Спробував відповісти на наступн питання: ✅Що таке індекс в баз даних? ✅Чим відрізняються різн типи дерев? ✅Чому пошук по BST може бути повільним? ✅Чому бази даних не використовують бінарний пошук? ✅B-дерево проти B дерева ✅Індекси Postgres, MySQL Станьте спонсором цього каналу: th-cam.com/channels/hhNJ3SmzX_d7kMpSEMDfzg.htmljoin ...
3 важливі книги про проектування програмного забезпечення
มุมมอง 6Kปีที่แล้ว
Три книги про проєктування та архітектуру програмного забезпечення. Це т книги, з яких варто почати й як дадуть гарний фундамент. Кожна з книг дає можливість подивитися на розробку програм трохи під іншим кутом. Станьте спонсором цього каналу: th-cam.com/channels/hhNJ3SmzX_d7kMpSEMDfzg.htmljoin Допоможіть каналу розвиватися й отримуйте доступ до ексклюзивного контенту. Зміст відео: 0:00 - Вступ...
Навіщо потрібні індекси в базі даних? Розберемо на прикладі
มุมมอง 10Kปีที่แล้ว
Запланував серію відео про бази даних. Почнемо з простого🙂: ✅Чому ваш база працює повільно? ✅10 млн рядків в базі, чи це багато? ✅Навіщо потрібн індекси в базах даних? ✅Як працюють індекси в базах даних? Приклади коду з відео - github.com/koorchik/jabascript-materials/tree/main/how-database-indexes-work Станьте спонсором цього каналу: th-cam.com/channels/hhNJ3SmzX_d7kMpSEMDfzg.htmljoin Допоможі...
Чому алгоритми важливі? Розберемо на прикладі
มุมมอง 16Kปีที่แล้ว
Чому алгоритми важливі? Розберемо на прикладі
Головна проблема мікросервісів, яку часто недооцінюють
มุมมอง 12Kปีที่แล้ว
Головна проблема мікросервісів, яку часто недооцінюють
Навіщо глибоко розбиратися в речах й як менше забувати те, що вивчили?
มุมมอง 8Kปีที่แล้ว
Навіщо глибоко розбиратися в речах й як менше забувати те, що вивчили?
Як покращити Code Review? Як це робить Google?
มุมมอง 9K2 ปีที่แล้ว
Як покращити Code Review? Як це робить Google?
Дуже цікаво, дякую!
Це, скоріше, ті речі які взагалі із фахівця роблять програміста як такого. Про дані момнети багато говорять, але ж це стандартні речі для студентів наших ВНЗів на профільних факультетах, наприклад, курс Основи програмної інженерії, або Конструювання ПЗ. Дивно, що потім чути голоси про те, що університет "нічого не дав"
Так, але вміння проектувати приходить з досвідом. Навіть студенти найкращих вузів світу все ще мають складнощі з цим, як це не дивно. Побачив це в Гугл, що джуни можуть знати алгоритми й структури даних, але проектувати ще не вміють, на відміну від сеніорів.
@@AboutProgramming так, студент буде зазвичай фіскисти некритичні баги і аж ніяк не працювати над розробкою архітектури. Я дещо інше мав на увазі, а саме те, що дже часто чомусь для фахівців вже, навіть, з певним досвідом фундаментальні речі програмної інженерії постають як відкриття
Algorithms + Data Structures = Programs
З одного боку так, але з іншого це як сказати білки+жири+вуглеводи=їжа. Тобто, це знання не зробить людину кухарем, хоча кухар має це знати. Хоча людина може готувати й без цього знання (як програмісти писати код). Але так, алгоритми й структури даних це важлива складова. Я би як мінімум додав ще requirements (problem definition)
@@AboutProgramming то просто цитата , вірніше назва книги Ніклауса Вірта, там хоч і на Паскалі, і трохи застаріло, але добре описані алгоритми :) Ну як фраза теж цілком заслуговує на життя, але я на 1000 % погоджуюсь що у SDLC сучасного програміста робота з доменом та верифікація та уточнення вимог, а також вміння працювати з людьми - це ключові скіли, які просто унеможливлюють якісну роботу. Requirements elicitation присвячено багато книг, я маю Карла Вігерса ( розробка вимог до програмного забезпечення), чим є досить задоволений та всім раджу до прочитання :)
Якщо я правильно зрозумів, то корінь, фундамент це алгоритми і структури даних, конкретні парадигми чи підходи( як то reactive, event-driven) , на вірхівці яких виростають фреймворки, сюди ж можна додати основи мереж, основи операційних систем та архітектуру, тобто в принципі це та база, що закладається , хоч і не дуже глибоко, класичними технічними університетами. І туди ж алгерба, комбінаторика, дискретна математика....і ще щось про людей, бо основні проблеми, принаймні з мого досвіду, це не стільки вирішити інженерну задачу, скільки порозумітись з командою та менеджментом....
Так, добре описано. Такий фундамент дає потім змогу значно швидше зрозуміти, як щось влаштовано й зрозуміти властивості певної технології, бо є вже дерева знань в голові. Університети багато чого дають дуже корисного, але також багато чого ігнорується студентами під час навчання )
Можливо, проблема в тому, що під час навчання студенти не до кінця розуміють важливість цих знань, бо дуже рідко суміщують роботу та навчання. Як говорив мій наставник "что нужно нам - не знаем мы, что знаем мы- не нужно нам", добре що вивчення будь чого є процесом ітеративним і щоб краще щось зрозуміти- треба повертатись знову і знову, щоб осягти все необхідне з висоти набутого досвіду та вже осмислених знань
@@vitaliivostotskyi9855 Так. Знання чипляються за інші знання й за досвід. Я помічав, як я читав якусь книгу, а потім через пару років знову ту саму книгу й знаходив в ній багато нового, бо вже більше досвіду було й відповідно інформація в книзі ставала більш релевантною й чиплялася вже на новий досвід
@@AboutProgramming У мене те саме :) як би грубо це не звучало, але до деяких книг треба "дорости", бо воно все буде виглядати як скаральний манускрипт з закляттями на втраченій мові. Теж час від часу перечитую книги, особливо коли виходять якісь нові версії, де автор щось переосмислив або по фідбеку від читачів розкрив якусь частину більш глибоко.
Гарний підхід до ревʼю, структурований. Чув, що в Google є своя екосистема тулів для роботи з кодом, підкажіть, будь ласка, чи використовуються якісь внутрішні розробки для стрес тестування та статичного аналізу, чи перевага надається рішенням по типу SonarCube/SonarCloud etc?
На мою субʼєктивну думку, справжня інженерна культура, що є supportive та collaborative, притаманні тільки зрілим продуктовим компаніям з упором на якість, такі як Boeing ( не беручи до уваги декілька останніх інцидентів, але всьому виною політики компанії по знищенню власних процесів якості заради оптимізації витрат) Nvidia, Google, IBM, Intel, можливо ще опенсорс, та компанії з упором на RND та інновації. Тож треба заслужити можливість працювати в таких середовищах :)
Догми це про створення карго-культів, мабуть, це особливість людського мозку, все спрощувати, чи навпаки ідеалізувати, ну і перекласти відповідальність за реалізацію :)
Програміста зіпсує перекваліфікація в штурмовика. Зіпсує у всіх контекстах слова «зіпсує»…
На жаль, не тільки програміста
Дуже круто пояснюєте, дякую! Це захопливо!
Останнє що читав то талмуди Кнута років 20-25 тому, тоді здорово відбили бажання щось читати з програмування, дуже важкі були. Треба почати щось знову читати.
шок! Іду вчити алгоритми
Якщо архітектура так вимагає UUID, що не можна по іншому, я рекомендую використовувати v7, в якому перша частина ключа залежить від часу. Відповідно, при генерації значення будуть послідовні і робота індексів значно пришвидшується. Дерево індексів буде рости в ширину, не вставляючи наступні значення в середину дерева, не розпихаючи сусідні гілки. Відповідні розширення є для Postgres.
Не розумію про зростання деревра швирину. Було б цікаво більш детальне пояснення. btree завжди збалансоване й по ідеї, після запису вже буде дуже близький перформанс при пошуку по індексу, що при послідовному, що при рандомному UUID. Для мене зрозуміло, що послідовний uuid підвищує cache hit при записі, коли індекс вже не влазить в пам'ять (оскільки потрібний блок може бути вже в кеші), а от відносно читання глибина дерева буде дуже близька за рахунок автобалансування
Але рекомендація використовувати послідовний UUID гарна, бо на запис це впливає суттуєво, коли кеш повний. Єдине, тут можуть бути нюанси від сценарій використання. Якщо це для токенів чи для генерації session id, то треба зважати на те, наскільки випадковим буде згенерованим UUID. Це впирається в кількість випадкових бітів й в те, чи генератор випадкових чисел є криптографічно безпечним
Цікава думка, дякую за відео
майсіквел🤕
www.dbvis.com/thetable/sql-or-sequel/#:~:text=SQL%20can%20be%20pronounced%20as,(Structured%20English%20Query%20Language).
Найкращий, тепер знаю що треба було відповідати на захисті диплому!
В Mate Academy немає C# 😢
Так, на жаль, поки немає
у вас невелика помилка. якщо в конторі 100 людей, це не 100 чатів. це 4950 чатів :)
Максимально не коректне відео, зроблено людиною, що дуже далека від сучасних технологій і тим паче мережевої маршрутизації. 1. Як зловмисник потрапив в одну мережу з жетвою? 2. людина що налаштовувала "Free-wifi" робить forward clien to clien и forward local? на які фуагра дозвольте запитати це робити? 3. підключившись до "халявного wifi" в майже будь якому закладі arp запит покаже вас і шлюз. На цьому моменті відео можна закривати. В момент "встановлення з'єднання" і вдалої авторизації ваш роутер як раз і дає всі налаштування, а далі ви в тунелі між роутером у шлюзом. Теоретично можливо створити точку доступу з такою самою назвою і таким самим паролем і "підійшовши ближче до "жертви" стати його роутером. Як раз застосувавши метод забивання пула dhcp, але на такі випадки має стояти вочдог, і слати алярми, що пул забитий, і треба втручання адміна цього всього :)
Схоже, що ви навіть не подивилися відео. Але буду радий почути, що конкретно "максимально некоректно" й до чого тут мережева маршрутизація 😉
Дякую, що додали пункти. Раджу подивитися відео повністю, а не закривати, бо в другій половині показано на практиці, як це все працює. Але давайте по пунктам: 1. У відео я говорю про публічні мережі на прикладі мережі кафе. Тобто можна просто взяти й зловмисник може підключитися до вайфай мережі так само, як й будь-який інший клієнт кафе. 2. Не зрозумів про forward local. Це до чого? 3. Ви кажете "arp запит покаже вас і шлюз", але тут у вас плутанина, оскільки arp запит це широкомовний запит для того, щоб отримати мак адресу з айпі адреси. Тобто вже треба знати айпі адресу шлюза й мати налаштування мережі, а налаштування якраз видає dhcp сервер ще до arp запитів.
@@AboutProgramming а чим відрізняється "відкритий wifi" від "закритого"? P2P не працює, FWD to Local також. Як при такому налаштуванні Ви пропхнете ваш броадкаст? Куда ви його будете посилати в шлюз?
@@АнПл Я про публічний вайфай в кафе говорю, до якого може підключитися будь-який клієнт кафе (але він може бути відкритим чи за паролем, без різниці). Відносно механізмів захисту, то професійний адмін зможе налаштувати правильно мережу в кафе, але це стається дуже дуже рідко. Можете розкрити до чого тут arp й мережева маршрутизація? Й що "максимально некоректно" в відео?
@@AboutProgrammingнавіть самі примітивні роутери зараз вміють 2 мережі: 1. локальна мережа - основна 2. гостьова мережа - вона як правило і є мережею для клієнтів, ця мережа на всіх роутерах, крім ну зовсім китайского китаю з ізольованими клієнтами без доступа до мережі та один до одного. Як буде працювати бродкаст в такому разі? Те що ви описуєте було актуально 10-15 років назад. P.s. Про арп я написав, вказуючи на те, що в гостьовій мережі (читайте мережі для клієнтів) НІКОГО не буде поряд, Ви ІЗОЛЬОВАНІ від всього крім шлюзу і це реалізовано галочками в налаштуваннях і ті як правило по замовченню зняті і якщо відкрити розширені налаштування, тоді їх можна поставити, туди люди з слабкими знаннями не лізуть.
Інколи зайду подивитися якесь відео, якого ще не бачив - і я вже маю натхнення на продуктивний робочий день. Я веб-розробник з 9 роками досвіду, але кожне відео заповнює якийсь пробіл в моїх знаннях. Дякую
Звук з рухом губ не співпадає. Затримка йде.
Так, проблема карти захоплення була. Купив вже нову
Дуже цікаво але нічого не зрозуміло 🥲😅
Ну, половину справи я зробив - зацікавив. Залишатися друга половина)
Чути добре, все супер
А звичайний індекс для запитів типу LIKE '%word' теж працювати швидко не буде, не тільки для LIKE '%word%' тобто сортування зворотнє він же не вміє?
Звичайний індекс може працювати, але це має бути ще один індекс по reverse(column) ну й відповідно треба робити reverse на запит. Відносно зворотнього сортування, то можна зробити через desc в описі індексу, але це не про перевертання строк й відповідно не допоможе для цього кейсу
@@AboutProgramming ну я саме про це і питав, що той індекс який в нас створений на поле name він не працює для такого запиту (зворотнім сортуванням назвав саме сортування по реверсу), просто з відео чогось зрозумів, що він має працювати і що не можна шукати лише по %word%. Тепер зрозумів, що треба створити інший індекс для цього.
Контент взагалі неочікувано глибокий! Дякую! До речі манера спілкування сильно нагадує лікаря Габореця з Facebook Reels) прям максимально у вас схожі патерни, хоча теми взагалі різні)
Ще такий нюанс, я ото вчора вас слухав і щось в мене в голові був якийсь смутний спогад, що це не так для мускуля (тобто не зберігається pk в індексах). Сьогодні до мені дійшло чого так. Те що Ви розповідаєте стосується innodb, а в нас до сих пір myisam :) на production, і ось там воно в індексах не зберігає pk, якщо пам'ять мене не підводить..
Так, все вірно, це innodb, він зараз по дефолту. myisam я зараз практично не використовую) без транзакцій, блокування всієї таблиці при записі, немає підтримки foreign keys, кораптиться значно частіше. Цікаво чому myisam обрали для себе?
@@AboutProgramming ну обирали ще до мене в 2010-му :) бо тоді щось був у хлопців поганий досвід з innodb, продукт старенький, поміняти рушій все руки не доходять (таблички великі, їх багато, конвертація на декілька днів, а сервіс тушити не хочеться та й зламати теж), так і живемо До речі, взагалі жодного разу не кораптнулось за 14 років, а ось повний лок таблиць це так, є така проблема
Здається, що myisam було тоді ще дефолтом в MySQL, хоча я на innodb ще з 2007)
@@AboutProgramming так, точно було по дефолту, на іншому проєкті спробували innodb, не сподобалось щось :) та повернулись до myisam.. з тих пір вже мускуль поміняли на марію, але myisam все ще з нами :) ще і місця менше займає на диску :) але розумію що давно треба було його поміняти...
Гарний контент, дякую за розвиток українського ютубу! На 33:10 видно що стеммер якось не так працює)
просто бомба, особливо частина з wire shark. дуже, дуже дякую!
Дякую за відео, мені здається воно гарно висвітлює чимало криптографічних концептів на інтуїтивному рівні! Зроблю кілька важливих уточнень стосовно криптографії: Про RSA: Не коректно говорити, що ключі RSA є рівнозначними чи що їх можна взаємно заміняти. Це розповсюджене помилкове сприйняття через надмірне спрощення алгоритму RSA. В алгоритмі є відкрита та приватна *експоненти* (не ключі) які зазвичай помічають як `e` та `d`, тоді базове перетворення RSA спрощено можна записати наступним чином: C ≡ M^e mod N; M ≡ C^d mod N ≡ M^e^d mod N ≡ M^(e*d) mod N ≡ M (оскільки M^(ϕ(n)) ≡ 1 mod N). І виглядає, як ніби значення e та d можна взаємозаміняти, оскільки операція множення є комутативною. Ці експоненти також часто називають "ключами", хоча це неправильно - вони є лише складовими відкритого та приватного ключа. Відкритий ключ складається зі значень (N, e), тобто модуля та відкритої експоненти, а приватний ключ: мінімум із значень (N, d) (на практиці їх більше). Проте описане вище перетворення є виключно теоретичним і на практиці не використовується в такому виді. Це ще називають "Textbook RSA", бо зазвичай з цього починають пояснення _теорії_ алгоритму RSA в книжках з криптографії. У реальних сучасних системах RSA завжди має доповнення (padding) без якого алгоритм не є надійним, відкрита експонента фіксована наперед і дорівнює 0x10001 (переважно повʼязано з оптимізацією операції шифрування та захисту від різного роду атак), а приватний ключ складається з більшої кількості значень: N, e, d, а також p, q (множники модуля), та ще кілька похідних значень що використовуються для оптимізації обчислень). У цьому можна переконатись, зберігши згенеровані ключі у форматі PEM, та продивитися їх читабельну репрезентацію через openssl: Для відкритого ключа: $ openssl rsa -in pub.key -pubin -noout -text Для приватного ключа: $ openssl rsa -in priv.key -noout -text
Про випадкові та псевдовипадкові числа: Числа згенеровані math.random() не можна використовувати для шифрування не тому, що вони псевдовипадкові. В псевдовипадкових числах загалом немає нічого поганого, і більшість криптографічних ключів в сучасних системах згенеровані саме з *псевдовипадкових* чисел. Чому ж їх називають *псевдо*-випадковими? Створення випадкових чисел - насправді дуже глибока тема, але спробуємо спростити. Справді випадкові числа (True Random Numbers) - це числа які жодним чином неможливо передбачити і які не відповідають жодному закону чи алгоритму. Скільки б випадкових бітів ви не отримували, ви ніколи не зможете передбачити наступний біт, або віднайти біти що передували їм. Зазвичай такі числа можна отримати лише шляхом спостереження недетермінованих хаотичних фізичних процесів (як Cloudflare це робить з лавалампами: www.cloudflare.com/learning/ssl/lava-lamp-encryption ). Але по-перше, для генерування таких чисел потрібне спеціалізоване апаратне забезпечення, по-друге - інколи нам *потрібно* мати змогу відновити послідовність або детерміновано згенерувати її (інакше для узгодження ключів нам завжди доводилося б передавати розмір ключів що дорівнює розміру повідомлення!). Для цього використовуються *криптографічно стійкі генератори псевдовипадкових чисел* і їх задача - згенерувати числа детермінованим алгоритмом, проте які б в практичному застосуванні ніяк не відрізнялись би від справді випадкових (indistinguishable from true random). Вони не є справді випадковими (бо згенеровані за певним алгоритмом), але виглядають випадковими за всіма ознаками які ми можемо спостерігати, тому вони "псевдовипадкові". Для якісних псевдовипадкових чисел ми так само не можемо ні передбачити майбутні згенеровані числа, ні відновити попередні, скільки б згенерованих чисел ми не спостерігали (лише в практичному сенсі; теоретично для псевдовипадкових чисел насправді завжди є певна кількість, отримавши яку ми змогли б передбачити наступні, та про це далі). Але є одне "але" - звичайно ж псевдовипадкові числа мають якось відрізнятись від "трушних" випадкових, інакше ми б не називали їх "псевдо"-випадковими. І ця відмінність - наявність скінченного періода. Коли ми спостерігаємо за непередбачуваним фізичним процесом - отримані (true) випадкові числа НІКОЛИ не повторяться. Але генератор *псевдо*-випадкових чисел завжди рано чи пізно почне повторювати згенеровану послідовність. Кожний генератор випадкових чисел починає роботу з якогось початкового значення (seed) і теоретичний максимум періоду напряму залежить від нього: для початкового значення розміром в n біт максимальний період згенерованої послідовності буде 2^n, після цього послідовність гарантовано повториться. Цим і відрізняються псевдовипадкові числа від "справді" випадкових. Звичайно для криптографічних застосувань нам потрібно мати великий період щоб впевнитись, що на практиці згенеровані псевдовипадкові числа не повторювались. Але що ж тоді не так з math.random() та іншими генераторами випадкових чисел що не є криптографічно стійкими? Такі генератори зазвичай забезпечують лише одну єдину властивість випадкових чисел - рівномірний розподіл. І цього вистачає для більшості застосувань, як то симуляції чи неазартні ігри. Проте такі генератори часто є лінійними, і отримавши певну кількість згенерованих ними чисел ви зможете передбачити всі майбутні та відновити минулі числа, згенеровані з даного початкового значення. Наприклад у випадку генератора Mersenne Twister достатньо отримати 624 значення щоб зуміти передбачити усі наступні згенеровані числа. Також мушу виправити, що ChaCha20 розробив все ж не Google, а незалежний криптограф Деніел Бернштейн. Можливо малося на увазі що Google його застосовує :) Проте цей шифр один з двох, що підтримується в TLS 1.3, тож користується ним насправді багато хто :) Для розробників яким цікаво більше дізнатися про криптографію рекомендую книгу "Serious Cryptography" " від Жана Аумассона, якраз нещодавно вийшла оновлена друга редакція: nostarch.com/serious-cryptography-2nd-edition
Коментар - топ! Дякую! Так, коли вже виклав відео, то спробував реалізувати руками RSA алгоритм на невеликих простих числах. Так, операції комутативні й основна частина публічного ключа це N й цей модуль однаковий для операцій в обидві сторони. Тобто на практиці його не можна зробити приватним. Тобто матиматично операції шифруваня й розшифрування відбувається однаково (тільки в одному випадку e, в другому d), але зробити d публічним не вийде, бо вся складність взлому впирається не в "е" (яка є стандартизованою екпонентою), а в розкладі N на множникі p та q
@@rkiyanchuk Коментар про випадкові числа просто краса. Ніколи не думав про скічненність послідовності. Думав, що все впирається в генератор (чи можна по послідовності передбачити наступні числа) й криптографічний сід, що джерелом має бути справжеє випадкове число, що базується на якомусь зовнішньому інпуті (з фізичного світу). Відносно ChaCha20, це я наплутав. Можливо через RFC 7539, який від Гугла, й здається Гугл займався додаванням ChaCha20 в OpenSSL. Запінив коментар, має бути корисно для всіх глядачів цього відео. Круті коментарі! Дуже дякую за виправлення та доповнення!
Саме так, і тут ми логічно підходимо до загрози квантового компʼютера 😉😄
Дуже цікаво!
Хороше відео, дякую за роботу!
А приклад леметизатора є? Був би вдячний
Був в NLTK наскільки пам'ятаю для англійської. Для української не пам'ятаю чи є щось (стемери точно є), для російської є mystem, який працює по морфологічним правилам. Але я так давно дивився на них, що й не пам'ятаю. В більшості випадків стемер підходить
@@AboutProgramming а є щось подивитись як для української мови стеммер зробити? Хотілось наш пошук на сайті покращити в рази. Використовуємо базу постгрес. Бо в нас пошук по назві документу і по вмісту документу. Був би дуже вдячний. Або почитати як самому його зробити
@@oleksiymiyskiy4694 знаходив таке github.com/amakukha/stemmers_ukrainian , але щоб конкретне порадити, то складно. Якщо потрібен просто пошук, то ніби є під еластік готове www.elastic.co/guide/en/elasticsearch/plugins/current/analysis-ukrainian.html
Не знаю як я пропустив це відео, зазвичай дивлюсь кожне відразу після публікації. Дякую, тепер стало зовсім зрозуміло що воно таке той DNS
Дякую за відгук. Радий, що вийшло корисно)
Ти хто взагалі ?таке враження що ти якийсь аферист? дай думаю займусь блогінгом, якась теорія , на кладoчці під під'їздом бабці у мене розмовляють... Дивився попередні про криптографію: а він такий я не спеціаліст в криптографії, але розкажу що це як не дeза?
А що саме деза? Що я не криптограф чи базові концепції криптографії?) Я просто працюю з криптографію зі сторони програмної інженерії й інформаційної безпеки, ніж як криптограф математик. Але уявив собі, як можна було б з бабцями біля під'їзду робити влог для Ютубу)) Відносно мого попереднього досвіду, то трохи тут було th-cam.com/video/JE7mzAVm5bk/w-d-xo.htmlsi=QL9fuJ4bh_NpGktx
@@AboutProgramming добре прийнято,якщо шо,то я вибачаюсь...
Дуже цікава інформація, дякую. Єдино що хотілося б текст трошки більше і розбірливіше
Дякую за відгук. Відносно розбірливості, то це прям мій баг. Але я працюю на цим)
Круто розказуєш!👍🔥🔥
Мало щось знати, ще треба вміти донести думку... У автора з цим проблеми.
А з розумінням чого саме виникають складнощі? Можливо є конкретно якісь аспекти, де було незрозуміло?
Асиметричні ключі не працюють в дві сторони, працює тільки в одну сторону
В яку саме?
Публічний ключ шифрує, а приватний разшифровує - в іншу сторону не працює
Не зовсім так. Аби шифрували тільки публічними ключем, тоді не працював би цифровий підпис, бо будь-хто його змін би підробити (оскільки всі мають публічний ключ)
@@AboutProgramming Ага, там трошки інакше, у кожного свій приклад просто в голові з'явився У випадку з цифровим підписом приватний ключ використовується для підпису (шифрування хешу), а публічний ключ - для його розшифрування. У передачі даних (наприклад, через HTTPS) асиметричне шифрування використовується дещо по-іншому: Публічний ключ використовується для шифрування даних, Приватний ключ використовується для розшифрування цих даних
Не зовсім так. В https публічний ключ для шифрування даних не використовується, дані шифруються симетричними ключем AES або Chacha20. Раніше публічним ключем шифрували симетричний ключ, але зараз такого теж не роблять, бо це не дає perfect forward secrecy. Тому зараз DHKE для обміну симетричним ключем це стандарт в HTTPS. А от в PGP симетричний ключ шифрується публічним, але самі дані теж шифруються симетричним
Привіт з Кривого Рогу 👋
Дякую Вам за Ваш труд 👍🏻
Коли Віктор заговорив про слона в кімнаті і почав розказувати про доставку публічного ключа, я в цей момент - ну нічого собі, невже мій "казанок" варить як треба...
Дуже круте відео. Тема складна, не згодний що легка, бо якраз кількістю і якістю нюансів визначається складність. Дякую, що допомогли хоча б частково розібратися
Після дельта-компресії подумав що можна у чисел перейти з основи 0-9 на основу 0-F, а потім подумав ще, та можна ще більшу основу взяти, щоб само число було представлено меншою кількістю символів.. Ну й по суті отримаємо у чисел основу = 255, а враховуючи що треба зберігати якось кількість потрібних символів з прапором-бітом то й отримаємо ото саме VByteCompression. Начебто все зрозуміло.. Супер, дякую за відео!
Дякую!
Чудове відео, дуже інформативно і корисно! Так тримати, Вікторе!
Тема супер. Дуже подобається, як розклав все по поличках!)
Це крутяк, ви просто неймовірний, чекаю на нові відео !!!!!
А що у вас за камера?
Це відео знімав на Fuji X-E4 + об'єктив XC 15-45mm. Всі відео з минулого року робив на iPhone. Фон зробив через зелений екран