Вийшла нова версія Python - 3.12
Деталі оновлення ось тут:
https://docs.python.org/3.12/whatsnew/3.12.html
Деталі оновлення ось тут:
https://docs.python.org/3.12/whatsnew/3.12.html
Python documentation
What’s New In Python 3.12
Editor, Adam Turner,. This article explains the new features in Python 3.12, compared to 3.11. Python 3.12 was released on October 2, 2023. For full details, see the changelog. Summary – Release hi...
🔥3
Чи є щось спільне у вашого інтернет браузера з мушкою дрозофілою?
Виявляється, що так - блум фільтр, який дозволяє відповісти чи можливо елемент є у колекції, чи він точно не в колекції. Браузер може використовувати такий фільтр для того, щоб перевіряти веб адреси, чи вони у списку зловмисницьких. Якщо можлива небезпека - то ще виконає запит кудись за уточненням. А мушка дрозофіла за допомогою блум фільтра знає точно, що якийсь запах для неї точно новий, а якийсь - вона уже мабуть зустрічала раніше.
Дуже коротке і зрозуміле пояснення концепції блум фільтру з візуалізацією тут: https://www.jasondavies.com/bloomfilter/
Про мушку тут: https://www.pnas.org/doi/10.1073/pnas.1814448115
Виявляється, що так - блум фільтр, який дозволяє відповісти чи можливо елемент є у колекції, чи він точно не в колекції. Браузер може використовувати такий фільтр для того, щоб перевіряти веб адреси, чи вони у списку зловмисницьких. Якщо можлива небезпека - то ще виконає запит кудись за уточненням. А мушка дрозофіла за допомогою блум фільтра знає точно, що якийсь запах для неї точно новий, а якийсь - вона уже мабуть зустрічала раніше.
Дуже коротке і зрозуміле пояснення концепції блум фільтру з візуалізацією тут: https://www.jasondavies.com/bloomfilter/
Про мушку тут: https://www.pnas.org/doi/10.1073/pnas.1814448115
PNAS
A neural data structure for novelty detection | PNAS
Novelty detection is a fundamental biological problem that organisms must solve to
determine whether a given stimulus departs from those previously...
determine whether a given stimulus departs from those previously...
👍2
За цим посиланням, https://clig.dev/ - шикарний та доволі стислий посібник по побудові інтерфейсів командного рядка. Класно, що перша частина - принципи (Philosophy of command line interfaces), а друга - безпосередньо практичні поради (Guidelines). Дуже багато посилань на інші джерела якщо хочеться ще більше зануритися в історію та деталі.
Збережу тут, в нагоді точно стане рано чи пізно🤗
Збережу тут, в нагоді точно стане рано чи пізно🤗
clig.dev
Command Line Interface Guidelines
An open-source guide to help you write better command-line programs, taking traditional UNIX principles and updating them for the modern day.
❤4🤓3
Дуже сильно грубо кажучи, сучасна програмна інженерія - це або про інтенсивні обчислення, або про інтенсивну роботу з даними (а поміж цими екстрмумами - суміш одного з другим у різних пропорціях та ще й з суміжними дисциплінами комп'ютерних наук, але ключовим частіше за все як раз є або дані, або обчислення).
І от якщо ви хочете робити інженерію даних, яка зараз у тренді та дуже актуальна, то ось вам шалена підбірка ресурсів - https://github.com/DataEngineer-io/data-engineer-handbook.
Тут перелічені книжки, спільноти, ютюб канали, розсилки, лінкедіни, телеграм канали, твіттер, інстаграми і тіктоки (дожилися🙄), наведені посилання на компанії, курси та сертифікації що стосуються інженерії даних. Можна знайти на будь-який смак та потребу. В мене тільки одне питання до сучасного світу - коли це все встигати просто продивитися🤯, там книжок тільки з півтора десятки!
І от якщо ви хочете робити інженерію даних, яка зараз у тренді та дуже актуальна, то ось вам шалена підбірка ресурсів - https://github.com/DataEngineer-io/data-engineer-handbook.
Тут перелічені книжки, спільноти, ютюб канали, розсилки, лінкедіни, телеграм канали, твіттер, інстаграми і тіктоки (дожилися🙄), наведені посилання на компанії, курси та сертифікації що стосуються інженерії даних. Можна знайти на будь-який смак та потребу. В мене тільки одне питання до сучасного світу - коли це все встигати просто продивитися🤯, там книжок тільки з півтора десятки!
GitHub
GitHub - DataExpert-io/data-engineer-handbook: This is a repo with links to everything you'd ever want to learn about data engineering
This is a repo with links to everything you'd ever want to learn about data engineering - DataExpert-io/data-engineer-handbook
🔥3
Ось тут за посиланням (https://www.inngest.com/blog/python-errors-as-values) коротенький текст, який узагальнює кілька підходів до обробки помилок в Python:
1) класичний спосіб, коли функція піднімає помилку і перериває потік виконання
2) спосіб як у Go, коли значення, яке повертає функція - завжди кортеж, де можлива помилка - останній елемент
До першого підходу, доволі класичного, більшість звикла, це найбільш популярний варіант , 2 і 3 підходи - концептуально дуже подібні, та, в принципі, часом зустрічаються в Python додатках.
Четвертий варіант - цікавий. Юніони - це популярно, але в іншому вигляді. Звичне та розповсюджене використання юніона це
Повертати помилку в юніоні - виглядає більш гнучко та інформативно, при цьому не так багатослівно як з кортежами і обгортками, проте функція не тільки інформує, що обʼєкт не знайдено, але ще й підказує чому. І це без try/except=) Що ж, це ще одна опція, тож маємо варіанти на будь-який смак;)
1) класичний спосіб, коли функція піднімає помилку і перериває потік виконання
2) спосіб як у Go, коли значення, яке повертає функція - завжди кортеж, де можлива помилка - останній елемент
def get_user(user_id: str) -> tuple[User | None, Exception | None]3) спосіб як у Rust, коли функція повертає обʼєкт обгортку. Навіть бібліотека для цього є - https://github.com/rustedpy/result, та й виглядає симпатично
def get_user(user_id: str) -> result.Result[User, Exception]4) підхід запропонований авторами - повертати юніон результату та помилки:
def get_user(user_id: str) -> User | Exception
До першого підходу, доволі класичного, більшість звикла, це найбільш популярний варіант , 2 і 3 підходи - концептуально дуже подібні, та, в принципі, часом зустрічаються в Python додатках.
Четвертий варіант - цікавий. Юніони - це популярно, але в іншому вигляді. Звичне та розповсюджене використання юніона це
def get_user(user_id: str) -> User | Noneщо тотожно опціональному типу, коли функція повертає результат, який може бути None типом.
Повертати помилку в юніоні - виглядає більш гнучко та інформативно, при цьому не так багатослівно як з кортежами і обгортками, проте функція не тільки інформує, що обʼєкт не знайдено, але ще й підказує чому. І це без try/except=) Що ж, це ще одна опція, тож маємо варіанти на будь-який смак;)
Inngest
Python errors as values: Comparing useful patterns from Go and Rust - Inngest Blog
Safer error handling, inspired by Go and Rust
🤔1👾1
https://twitter.com/Bertrand_Meyer/status/1742613897675178347
Спочивай з миром, легендо
Спочивай з миром, легендо
X (formerly Twitter)
Bertrand Meyer (@Bertrand_Meyer) on X
We lost a titan of programming languages, programming methodology, software engineering and hardware design. Niklaus Wirth passed away on the first of January. We mourn a pioneer, colleague, mentor and friend.
😢1
На днях Rust-ентузіасти у лиці команди Astral Software написали у своєму блозі про uv, черговий інструмент для екосистеми Python, написаний на Rust - https://astral.sh/blog/uv
Якщо коротко - прирости швидкості у визначенні та встановленні залежностей колосальні (від 7 до 115 разів!)
Як то водиться, поки що uv у стадії розробки, і для ваших важливих речей краще користуватися перевіреними рішеннями, в котрих фокус на стабільності та сумісності (я про умовний pip).
Але - у Astral Sofrware амбіційні цілі, роудмап та, начебто, непогано все поки виходить, тому можна стежити та (можливо) експериментувати в очікуванні нових версій uv та інших корисностей.
Якщо коротко - прирости швидкості у визначенні та встановленні залежностей колосальні (від 7 до 115 разів!)
Як то водиться, поки що uv у стадії розробки, і для ваших важливих речей краще користуватися перевіреними рішеннями, в котрих фокус на стабільності та сумісності (я про умовний pip).
Але - у Astral Sofrware амбіційні цілі, роудмап та, начебто, непогано все поки виходить, тому можна стежити та (можливо) експериментувати в очікуванні нових версій uv та інших корисностей.
astral.sh
uv: Python packaging in Rust
uv is an extremely fast Python package installer and resolver, designed as a drop-in alternative to pip and pip-tools.
🔥4👍3
Якщо матимете 20 хвилин на вихідних - ось цікава стаття про зліт і падіння операційної системи os/2, і, заодно, про взаємовідносини між Microsoft та IBM:
https://arstechnica.com/information-technology/2019/11/half-an-operating-system-the-triumph-and-tragedy-of-os2/
🙂
https://arstechnica.com/information-technology/2019/11/half-an-operating-system-the-triumph-and-tragedy-of-os2/
🙂
Ars Technica
Half an operating system: The triumph and tragedy of OS/2
From the archives: IBM doesn't make consumer desktop OSes anymore for a reason.
👍4
ByteByteGo-Big-Archive-System-Design-2023.pdf
60.2 MB
Доволі відомий автор, що пише про дизайн систем, Alex Xu в свому пості на linkedin написав, що безкоштовно віддає The Big Archive for System Design - 2023 Edition (PDF)
Всередині наступні теми:
🔹 Netflix's Tech Stack
🔹 Top 5 common ways to improve API performance
🔹 Linux boot Process Explained
🔹 CAP, BASE, SOLID, KISS, What do these acronyms mean?
🔹 Explaining JSON Web Token (JWT) to a 10 year old Kid
🔹 Explaining 8 Popular Network Protocols in 1 Diagram
🔹 Top 5 Software Architectural Patterns
🔹 OAuth 2.0 Flows
🔹 What does API gateway do?
🔹 Linux file system explained
🔹 18 Key Design Patterns Every Developer Should Know
🔹 Best ways to test system functionality
🔹 Top 6 Load Balancing Algorithms
🔹 Top 12 Tips for API Security
🔹 𝐀𝐧𝐝 100+ 𝐦𝐨𝐫𝐞
Забрав собі і ділюся з вами
Всередині наступні теми:
🔹 Netflix's Tech Stack
🔹 Top 5 common ways to improve API performance
🔹 Linux boot Process Explained
🔹 CAP, BASE, SOLID, KISS, What do these acronyms mean?
🔹 Explaining JSON Web Token (JWT) to a 10 year old Kid
🔹 Explaining 8 Popular Network Protocols in 1 Diagram
🔹 Top 5 Software Architectural Patterns
🔹 OAuth 2.0 Flows
🔹 What does API gateway do?
🔹 Linux file system explained
🔹 18 Key Design Patterns Every Developer Should Know
🔹 Best ways to test system functionality
🔹 Top 6 Load Balancing Algorithms
🔹 Top 12 Tips for API Security
🔹 𝐀𝐧𝐝 100+ 𝐦𝐨𝐫𝐞
Забрав собі і ділюся з вами
🔥19👍3
Хтось тут є, хто не грав в doom або принаймні не чув про цю канонічну гру? Тривалий час в тренді було запускати «думчик» на всьому підряд - на калькуляторах Texas Instruments, смарт-годинниках та навіть на якихось побутових приладах. А от нещодавно дослідники з Гуглу та університету Тель-Авіву змогли за допомогою AI моделі згенерувати ігрове відео, фактично - запустили doom на моделі AI:) На жаль, це поки що не повноцінна симуляція ігрового рушія, але дуже впевнена спроба. Якщо так далі піде, то через N років ви будете грати в 3d гру, яку вам на ходу буде промальовувати яка-небудь нейронна мережа у фотографічній якості.
В Arstechnica про це написали, і підібрали доволі цікавий заголовок. Посилання нижче, всім вдало закінчити тиждень і гарних вихідних!
https://arstechnica.com/information-technology/2024/08/new-ai-model-can-hallucinate-a-game-of-1993s-doom-in-real-time
В Arstechnica про це написали, і підібрали доволі цікавий заголовок. Посилання нижче, всім вдало закінчити тиждень і гарних вихідних!
https://arstechnica.com/information-technology/2024/08/new-ai-model-can-hallucinate-a-game-of-1993s-doom-in-real-time
Ars Technica
New AI model can hallucinate a game of 1993’s Doom in real time
Dobos: “Why write rules for software by hand when AI can just think every pixel for you?”…
👍3
Якщо не пробували copilot, то ось як раз хороша нагода - тепер він безкоштовний для VS Code, все, що потрібно - акаунт на github. Варто спробувати - чудес не очікуйте, але в цілому розраховуйте на непогану доповнювалку-підказувалку
https://code.visualstudio.com/blogs/2024/12/18/free-github-copilot
https://code.visualstudio.com/blogs/2024/12/18/free-github-copilot
Visualstudio
Announcing a free GitHub Copilot for VS Code
Announcing a free plan for GitHub Copilot in Visual Studio Code.
❤6
AI не забере роботу інженерів з розробки програмного забезпечення, будемо сподіватися🙂
https://www.oreilly.com/radar/the-end-of-programming-as-we-know-it/
https://www.oreilly.com/radar/the-end-of-programming-as-we-know-it/
O’Reilly Media
The End of Programming as We Know It
👾5
Давненько не писав сюди, тож сподіваюся у всіх все гаразд!
На днях натрапив на новину про Notepad у Windows - тепер в ньому з’являться функції форматування тексту, і можливість використання ШІ. Але цікаве інше - як базовий додаток однієї з найрозповсюдженіших операційних систем фактично конкурує з нашим улюбленим Grammarly. Так, тепер прямо в блокноті, наприклад, можна обрати стиль і тон тексту (ну круто ж) - а це було однією з ключових фіч Grammarly. Що будуть робити в компанії, які наступні кроки щоб втриматися в еру LLM? Побачимо, може вони вдало використають той 1 млрд доларів, який ось недавно залучили у якості фінансування.
Новина від Тома Воррена:
https://www.theverge.com/news/677474/microsoft-windows-notepad-bold-italic-text-formatting-markdown-support
На днях натрапив на новину про Notepad у Windows - тепер в ньому з’являться функції форматування тексту, і можливість використання ШІ. Але цікаве інше - як базовий додаток однієї з найрозповсюдженіших операційних систем фактично конкурує з нашим улюбленим Grammarly. Так, тепер прямо в блокноті, наприклад, можна обрати стиль і тон тексту (ну круто ж) - а це було однією з ключових фіч Grammarly. Що будуть робити в компанії, які наступні кроки щоб втриматися в еру LLM? Побачимо, може вони вдало використають той 1 млрд доларів, який ось недавно залучили у якості фінансування.
Новина від Тома Воррена:
https://www.theverge.com/news/677474/microsoft-windows-notepad-bold-italic-text-formatting-markdown-support
The Verge
Microsoft releases a bold new update for Notepad
Notepad is looking more and more like Microsoft Word.
❤5👍1👌1
Всім привіт!
Сьогодні дізнався, чому сторінка, розміром 14 кілобайт, може вантажитися значно швидше, ніж розміром 15 кілобайт! Увесь секрет в тому, як TCP починає комунікацію, не знаючи ширину каналу. І це виливається в ці майже магічні 14 кілобайт.
Детальніше у тексті за посиланням, 3-5 хвилин на прочитати - і буде трішки в скарбничку цікавинок про мережі!
https://endtimes.dev/why-your-website-should-be-under-14kb-in-size/
Сьогодні дізнався, чому сторінка, розміром 14 кілобайт, може вантажитися значно швидше, ніж розміром 15 кілобайт! Увесь секрет в тому, як TCP починає комунікацію, не знаючи ширину каналу. І це виливається в ці майже магічні 14 кілобайт.
Детальніше у тексті за посиланням, 3-5 хвилин на прочитати - і буде трішки в скарбничку цікавинок про мережі!
https://endtimes.dev/why-your-website-should-be-under-14kb-in-size/
🔥5🤯2
Всіма любимий Гвідо ось-ось анонсував, що кіно про Python буде 28 числа, тобто завтра, о 17:00 всесвітньо координованого часу (UTC). Лунає заклик долучатися до онлайн вечірки і живого чату у youtube трансляції:)
Новина - https://discuss.python.org/t/python-documentary-going-live-this-thursday-august-28/103319
І з неї ж посилання на офіційний трейлер - https://www.youtube.com/watch?v=pqBqdNIPrbo
Новина - https://discuss.python.org/t/python-documentary-going-live-this-thursday-august-28/103319
І з неї ж посилання на офіційний трейлер - https://www.youtube.com/watch?v=pqBqdNIPrbo
Discussions on Python.org
Python documentary going live this Thursday, August 28
Folks have been able to see sections of this at (since?) EuroPython, and snippets have been posted by cult.repo on YouTube, but this time it’s the full reel! Here’s the official trailer: https://www.youtube.com/watch?v=pqBqdNIPrbo I will update this thread…
🎉5👍2
Microsoft заопенсорсили код basic!
Незважаючи не деякі протиріччя і дуже різні погляди на їх внесок в розвиток індустрії (простими словами є люди які хейтять мс:) - я все ж думаю що вони невідʼємна частина історії і сьогодення.
Тож ось посилання:
https://opensource.microsoft.com/blog/2025/09/03/microsoft-open-source-historic-6502-basic/
Незважаючи не деякі протиріччя і дуже різні погляди на їх внесок в розвиток індустрії (простими словами є люди які хейтять мс:) - я все ж думаю що вони невідʼємна частина історії і сьогодення.
Тож ось посилання:
https://opensource.microsoft.com/blog/2025/09/03/microsoft-open-source-historic-6502-basic/
🔥5
Ось граний tldr щодо нещодавнього збою aws. Якщо в понеділок ви також за чашкою кави бачили, як ваші пайплайни падають один за одним, сервіси несподівано починають ламатися, та й не тільки сервіси - сподіваюся ви ту каву допили! Десь почув саркастичний коментар, що треба передивитися чудові доповіді амазонівських архітекторів про регіональні збої і як їм запобігати - в них наводять багато правильних концепцій:) А якщо серйозно, то imho просто неможливо врахувати все-все, що може піти не так, навіть в набагато простіших системах. Гарної пʼятниці і вихідних попереду і щоб on-call вас не будив!
🔥1
Forwarded from Мамкін Архітектор
Ну шо, трошки хайпанемо на чужій біді (хоча вона не така вже і чужа — багато хто відчув її на собі). Шо ж сталось з амазоном?
Це може прозвучати смішно, але цього разу знову проблеми з DNS. У пост мортемі є деталі, але там якось дуже багато тексту мілким шрифтом, тому ось вам TL;DR;
Є ціла екосистема, що керує DNS записами для dynamoDB. Там постійно створюються і прибиваються лоад балансери, аби контролювати навантаження, за ними слідкує такий собі DNS planner, він робить плани (по суті список актуальних балансерів), ці плани підхоплюють так звані enactors, які закидають їх в Route53. Енакторів по одному на зону доступності, тобто три, і в них відбувся рейс кондішен.
Один з них почав повільно працювати, в той час інший швиденько все оновив, а потім хтось з них щось десь перезатер і в результаті
Тобто dynamoDB тупо зникло для усіх сервісів, що його використовують (а це більшість). На відновлення знадобилось біля трьох годин. Але це було ще не все.
Поки лежала дінама, підсистема планування EC2, визначила, що більшість дроплетів (поставте лайк, якщо ви теж не знали, що дроплети не лише в digital ocean), недоступні. Бо їхні статуси "зайнятий / можна віддать комусь" зберігались в дінамо, яка була в комі. А коли дінама повернулась, то велика кількість EC2 інстансів, який треба було маркнути як "доступний", призвела до того, що запити падали з таймаутами, і відповідно, інстанси не видавались.
Інженери AWS розрулили це тротлінгом запитів, в результаті все запрацювало ОК через 12 годин після початку інциденту.
Ну і на останок були приколи з мережою, там network manager залип, розбираючи апдейти мережі, що накопичились за час, поки все лежало. Ще + 5 годин і + 3 на фінальні зняття обмежень.
Пікантності ситуації додало ще те, що us-east-1 це не простий регіон. В ньому знаходяться критичні сервіси, що впливають на роботу усього AWS, наприклад, логін сторінка на портал. Тому були проблеми і в інших регіонах.
Ось така історія, дуже цікаво, як це все відбувалось всередині, і які з цього будуть висновки.
Це може прозвучати смішно, але цього разу знову проблеми з DNS. У пост мортемі є деталі, але там якось дуже багато тексту мілким шрифтом, тому ось вам TL;DR;
Є ціла екосистема, що керує DNS записами для dynamoDB. Там постійно створюються і прибиваються лоад балансери, аби контролювати навантаження, за ними слідкує такий собі DNS planner, він робить плани (по суті список актуальних балансерів), ці плани підхоплюють так звані enactors, які закидають їх в Route53. Енакторів по одному на зону доступності, тобто три, і в них відбувся рейс кондішен.
Один з них почав повільно працювати, в той час інший швиденько все оновив, а потім хтось з них щось десь перезатер і в результаті
dynamodb.us-east-1.amazonaws.com позбувся усіх IP адрес. Тобто dynamoDB тупо зникло для усіх сервісів, що його використовують (а це більшість). На відновлення знадобилось біля трьох годин. Але це було ще не все.
Поки лежала дінама, підсистема планування EC2, визначила, що більшість дроплетів (поставте лайк, якщо ви теж не знали, що дроплети не лише в digital ocean), недоступні. Бо їхні статуси "зайнятий / можна віддать комусь" зберігались в дінамо, яка була в комі. А коли дінама повернулась, то велика кількість EC2 інстансів, який треба було маркнути як "доступний", призвела до того, що запити падали з таймаутами, і відповідно, інстанси не видавались.
Інженери AWS розрулили це тротлінгом запитів, в результаті все запрацювало ОК через 12 годин після початку інциденту.
Ну і на останок були приколи з мережою, там network manager залип, розбираючи апдейти мережі, що накопичились за час, поки все лежало. Ще + 5 годин і + 3 на фінальні зняття обмежень.
Пікантності ситуації додало ще те, що us-east-1 це не простий регіон. В ньому знаходяться критичні сервіси, що впливають на роботу усього AWS, наприклад, логін сторінка на портал. Тому були проблеми і в інших регіонах.
Ось така історія, дуже цікаво, як це все відбувалось всередині, і які з цього будуть висновки.
👍2