Пришлось поковырять Тильду еще сейчас. Выяснили, что в процессе построения страницы они создают DOM элементы, потом подчистую их удаляют и создают снова.
Тильда, да ты ж моя няшечка, да кто ж тебя научил так делать-то:)
Удаление/добавление элементов в DOM — дорогие операции и современный веб (ну как современный, уже лет ~10 как, наверное) идет в сторону оптимизаций и уменьшения количества таких операций.
Мда. Технологически хороший продукт и коммерчески успешный продукт — это часто совсем не одно и то же. Не то чтобы Тильда технически плохой продукт, но есть куда стремиться. Сидят же там разработчики, денежку получают за JQuery лапшу свою в 2022м-то.
#frontend #IT #javascript #codebetter
Тильда, да ты ж моя няшечка, да кто ж тебя научил так делать-то:)
Удаление/добавление элементов в DOM — дорогие операции и современный веб (ну как современный, уже лет ~10 как, наверное) идет в сторону оптимизаций и уменьшения количества таких операций.
Мда. Технологически хороший продукт и коммерчески успешный продукт — это часто совсем не одно и то же. Не то чтобы Тильда технически плохой продукт, но есть куда стремиться. Сидят же там разработчики, денежку получают за JQuery лапшу свою в 2022м-то.
#frontend #IT #javascript #codebetter
🔥65😁53👍20🤔4🥰2
Ревьюил сейчас финальные проекты ребят по курсу и много говорил о декларативном и императивном подходе в программировании. Понимаете разницу?
На самом деле очень много можно уложить в применение этих подходов.
https://teletype.in/@t0digital/imperative-and-declarative-approach2
#IT #python #codebetter #backend
На самом деле очень много можно уложить в применение этих подходов.
https://teletype.in/@t0digital/imperative-and-declarative-approach2
#IT #python #codebetter #backend
Teletype
Императивный и декларативный подход
Ревьюил сейчас финальные проекты ребят по курсу и много говорил о декларативном и императивном подходе в программировании. Понимаете...
👍134🔥7🤔4🎉3
Навигация по постам в канале
🍒 #IT — всё, касающееся айтишечки нашей
🍒 #backend — о бэкенде
🍒 #frontend — о фронтенде
🍒 #linux — о Linux, администрировании и смежных темах
🍒 #python — о языке Python
🍒 #javascript — о языке JavaScript
🍒 #typescript — о языке TypeScript
🍒 #css — о CSS
🍒 #rust— о языке Rust
🍒 #db— о СУБД
🍒 #codebetter — о хороших подходах в программировании
🍒 #tools — об инструментах
🍒 #tests — об тестировании ПО
⚡#LMS — о нашей LMS системе для образовательных программ
🌶 #youtube — мои видео на YouTube
🌶 #course — о моём курсе
🍉 #softskills — о софт-скиллах и личной эффективности
🍉 #books — о книгах
🍷 #interview — где-то что-то кому-то комментирую
🍷 #news — что-то касается новинок/новостей
🍷 #interesting — что-то интересное, не обязательно ИТ
🍷 #gg — гыгы
🍓 #management — о менеджменте
🍓 #marketing — о маркетинге
🥝 #soulful — душевное
Ы!
🍒 #IT — всё, касающееся айтишечки нашей
🍒 #backend — о бэкенде
🍒 #frontend — о фронтенде
🍒 #linux — о Linux, администрировании и смежных темах
🍒 #python — о языке Python
🍒 #javascript — о языке JavaScript
🍒 #typescript — о языке TypeScript
🍒 #css — о CSS
🍒 #rust— о языке Rust
🍒 #db— о СУБД
🍒 #codebetter — о хороших подходах в программировании
🍒 #tools — об инструментах
🍒 #tests — об тестировании ПО
⚡#LMS — о нашей LMS системе для образовательных программ
🌶 #youtube — мои видео на YouTube
🌶 #course — о моём курсе
🍉 #softskills — о софт-скиллах и личной эффективности
🍉 #books — о книгах
🍷 #interview — где-то что-то кому-то комментирую
🍷 #news — что-то касается новинок/новостей
🍷 #interesting — что-то интересное, не обязательно ИТ
🍷 #gg — гыгы
🍓 #management — о менеджменте
🍓 #marketing — о маркетинге
🥝 #soulful — душевное
Ы!
🔥186👍102❤16😁3😢3
Читаю цикл статей https://testdriven.io/guides/complete-python/
Некоторые новые штуки там узнал. Интересно. Про пайтон инстументарий, тестирование, подходы в разработке и тп. Со ссылками на Фаулера местами, ух!
#python #backend #IT #codebetter
Некоторые новые штуки там узнал. Интересно. Про пайтон инстументарий, тестирование, подходы в разработке и тп. Со ссылками на Фаулера местами, ух!
#python #backend #IT #codebetter
testdriven.io
The Complete Python Development Guide
Develop Python-based apps with confidence by mastering the tools needed to ship well-tested, high-quality code.
👍89🔥34
Пользуетесь
https://teletype.in/@t0digital/python-pathlib
#IT #backend #python #codebetter
pathlib в Python? Если нет или хочется узнать подробнее о возможностях:https://teletype.in/@t0digital/python-pathlib
#IT #backend #python #codebetter
Teletype
pathlib в Python
В богохранимом PHP есть такая встроенная глобально доступная функция get_file_contents. Она читает локальный или удаленный (http) ресурс...
👍163🔥8🤔1🎉1
Типизированный_Python_для_профессиональной_разработки.pdf
3.4 MB
Рад поделиться с вами книжкой по типизированному Python, о разработке которой я говорил здесь. Вжух!
Здесь актуальная версия книги от 8 июня 2022.
Цель материала — помочь тебе научиться писать более красивые, надёжные и легко сопровождаемые программы на Python. Это не начальный уровень владения языком, предполагается, что ты уже умеешь программировать, но хочешь научиться делать это лучше.
Поговорим о том, почему вопросы типизации очень важны и как они влияют на программу, разберём все основные структуры для использования в типизации, напишем программу, которая находит наши GPS координаты и показывает текущую погоду по ним. В ходе разработки программы затронем и обсудим много смежных тем — архитектура кода, построение слоёв логики в приложении и др.
Код из книги
Видео версия — текстовую обязательно читаем тоже, в ней ряд тем расширен.
РАСПРОСТРАНЕНИЕ поддерживается, но, пожалуйста, в виде ссылки на этот пост или ссылки на веб-версию, т.к. книга обновляется.
#python #backend #it #codebetter #books
Здесь актуальная версия книги от 8 июня 2022.
Цель материала — помочь тебе научиться писать более красивые, надёжные и легко сопровождаемые программы на Python. Это не начальный уровень владения языком, предполагается, что ты уже умеешь программировать, но хочешь научиться делать это лучше.
Поговорим о том, почему вопросы типизации очень важны и как они влияют на программу, разберём все основные структуры для использования в типизации, напишем программу, которая находит наши GPS координаты и показывает текущую погоду по ним. В ходе разработки программы затронем и обсудим много смежных тем — архитектура кода, построение слоёв логики в приложении и др.
Код из книги
Видео версия — текстовую обязательно читаем тоже, в ней ряд тем расширен.
РАСПРОСТРАНЕНИЕ поддерживается, но, пожалуйста, в виде ссылки на этот пост или ссылки на веб-версию, т.к. книга обновляется.
#python #backend #it #codebetter #books
🔥791👍247❤63🎉27🥰2
Видео по типизированному Python. Два часа сорок минут материала, 3 недели моей работы. Ура ура:)
https://www.youtube.com/watch?v=dKxiHlZvULQ
#python #IT #backend #codebetter
https://www.youtube.com/watch?v=dKxiHlZvULQ
#python #IT #backend #codebetter
YouTube
Типизированный Python для профессиональной разработки — теория и практика [2022]
Книга в PDF https://xn--r1a.website/t0digital/151
Веб-версия https://to.digital/typed-python/
Мой курс «Хардкорная веб-разработка» — https://course.to.digital
Книжный клуб Ботаним!, где мы читаем хорошие ИТ-книги: https://botanim.to.digital/
Telegram: https://t0digital.t.me…
Веб-версия https://to.digital/typed-python/
Мой курс «Хардкорная веб-разработка» — https://course.to.digital
Книжный клуб Ботаним!, где мы читаем хорошие ИТ-книги: https://botanim.to.digital/
Telegram: https://t0digital.t.me…
1👍516🔥223❤36🎉15🥰5
Обновил PDF документ «Типизированный Python», новая версия в том же посте : t.me/t0digital/151
* Добавилась информация о протоколах
* Добавилась информация о параметрах датаклассов
* Добавлен пример в главу «Интерпретатор не проверяет подсказки типов»
* Расширена глава о
* Расширена глава «Подсказки типов нужны только в функциях?»
* Исправлены найденные опечатки
Также обновлён Github с кодом.
Оглавление прошито в PDF документе.
#books #python #IT #backend #codebetter
* Добавилась информация о протоколах
typing.Protocol в главе об интерфейсах* Добавилась информация о параметрах датаклассов
slots и frozen* Добавлен пример в главу «Интерпретатор не проверяет подсказки типов»
* Расширена глава о
Enum, добавлено про наследование от str* Расширена глава «Подсказки типов нужны только в функциях?»
* Исправлены найденные опечатки
Также обновлён Github с кодом.
Оглавление прошито в PDF документе.
#books #python #IT #backend #codebetter
👍220🔥72🎉5❤2😢1
Если что — книжка снова обновилась, актуалочка всё там же https://xn--r1a.website/t0digital/151. Сорян, если кто-то напечатал:)
* Обновлена глава о
* Добавлены рекомендации в главу «Контейнеры — Iterable, Sequence, Mapping и другие»
* Исправлены найденные опечатки
#books #python #IT #backend #codebetter
* Обновлена глава о
Literal
* Добавлена информация о pyright анализаторе кода в дополнение к mypy* Добавлены рекомендации в главу «Контейнеры — Iterable, Sequence, Mapping и другие»
* Исправлены найденные опечатки
#books #python #IT #backend #codebetter
👍188🔥22😁16❤10😢1
Статья для тех, кто боится использовать родной модуль
Накидал также небольшую демку настройки логирования в проекте — в сообщении выше.
#IT #Python #backend #codebetter
logging в Python, не понимает его или не понимает, как настроить всё в своём проекте: https://khashtamov.com/ru/python-logging/Накидал также небольшую демку настройки логирования в проекте — в сообщении выше.
#IT #Python #backend #codebetter
👍127🔥18❤1
Диджитализируй!
Типизированный_Python_для_профессиональной_разработки.pdf
Вдогоночку. Если надо указать тип для переменной, принимающей класс
Удобно, когда функция принимает класс. Например, функция-фабрика какая-то, которая принимает на вход класс и создаёт его экземпляр.
#IT #backend #python #codebetter
Animal или классы его наследники (а не экземпляр класса Animal) — можно указать так:animal: type[Animal]Удобно, когда функция принимает класс. Например, функция-фабрика какая-то, которая принимает на вход класс и создаёт его экземпляр.
class Animal: pass
class Cat(Animal): pass
class Dog(Animal): pass
def create_animal(animal_cls: type[Animal]) -> Animal:
print("create another animal...")
return animal_cls()
create_animal(Cat)
create_animal(Dog)
#IT #backend #python #codebetter
👍124🔥22😁2
В комментах видео по drag-and-drop подсказали лучший способ позиционирования перетаскиваемого элемента — вместо изменения координат top/left использовать CSS правило transform: translate(x,y). Плюсы такого подхода в общем случае — браузеру легче делать оптимизации производительности, легче задействовать GPU и т.п. Но реализация сложнее, во всяком случае вчера весь день мне так казалось, пока я пытался это натыкать:)
Сегодня на свежачок, умываясь, словил из недр подсознания внезапно всплывшую хорошую идею и она быстренько залетела без больших правок в коде.
Вывод — если что-то долго не залетает, то вполне вероятно, что вы тупите. Стоит отдохнуть, переключиться, возможно поспать, а мозг в фоне вам поможет найти новые подходы.
Разницы в Performance в моей задаче, правда, Chrome dev tools не показал. Двигать один элемент в привязке к мыши видимо не так уж и сложно.
#IT #frontend #css #js #codebetter
Сегодня на свежачок, умываясь, словил из недр подсознания внезапно всплывшую хорошую идею и она быстренько залетела без больших правок в коде.
Вывод — если что-то долго не залетает, то вполне вероятно, что вы тупите. Стоит отдохнуть, переключиться, возможно поспать, а мозг в фоне вам поможет найти новые подходы.
Разницы в Performance в моей задаче, правда, Chrome dev tools не показал. Двигать один элемент в привязке к мыши видимо не так уж и сложно.
#IT #frontend #css #js #codebetter
👍134❤12🥰5🤔1
Упомянул тут в комментах книгу, которую читаю сейчас — по System design. Думаю, будет полезно многим бэкендерам. Показаны подходы к построению больших систем по нагрузке и данным. Прям хорошо. И много ссылок на бодрые статьи в интернете.
Особенно полезна книга своим чётким акцентом на строгое использование кнопочек и манипулятора мышь при написании своих собственых гуглов и твиттеров!
#books #IT #backend #codebetter
Особенно полезна книга своим чётким акцентом на строгое использование кнопочек и манипулятора мышь при написании своих собственых гуглов и твиттеров!
#books #IT #backend #codebetter
www.piter.com
System Design. Подготовка к сложному интервью
Инсайдерская информация: что на самом деле нужно интервьюерам по System Design, 4-х шаговый подход к решению любой задачи, 16 вопросов из реальных интервью с подробными решениями, 188 диаграмм, наглядно объясняющих, как работают реальные системы
👍108🔥25😁4
Запариваетесь ли вы по красоте/длине урлов в своих веб-системах?
Которые не публичные адреса с ЧПУ для SEO, а внутрянка — там, где SEO не нужен, но люди-человеки в адресной строке браузера всё равно адрес видят?
GUID’ы, скажем, всякие смущают вас в URL, м:)?
Мы вот посовещались и решили, что GUID (один) в урле — это ок!
#IT #codebetter
Которые не публичные адреса с ЧПУ для SEO, а внутрянка — там, где SEO не нужен, но люди-человеки в адресной строке браузера всё равно адрес видят?
GUID’ы, скажем, всякие смущают вас в URL, м:)?
Мы вот посовещались и решили, что GUID (один) в урле — это ок!
#IT #codebetter
👍83❤6😢5🔥4
Надо делать хорошо, а нехорошо делать не надо!
Я сейчас в деревне и здесь по-прежнему мобильная связь работает только вне дома и на возвышенности.
Подтвердить что-то смс-кодом — проблемка. Код актуален 60 сек, за которые смс тупо не удаётся поймать иногда. И осложняется сиё мероприятие тем, что помимо смс надо ведь ещё и чтобы интернет как-то ловился, чтобы было куда этот код ввести.
И знаете что? Вот, стоя во весь рост на пеньке посреди поля с поднятым над головой телефоном и пытаясь загрузить личный кабинет оплачиваемого сервиса с постоянно отваливающимся интернетом, очень хочется, чтобы там грузилось чууууточку поменьше долбаных мегабайтов джаваскрипта:)
Professional highly complex ultra-modern frontend
Для загрузки кабинета Selectel надо грузануть 4.2 мегабайта, из которых 3.5 мегабайта JS. Angular — привеееет, дружочек-пирожочек!
Там же highly complex frontend у селектела, там стартануть без 3.5 метров скриптов никак низя. Иначе ж оно как на первом сайте в Интернет получится, недостаточно professional, слишком не modern, и вообще developer experience без этого пострадает и фронтендеры будут плак-плак и хнык-хнык, ибо их розовые IDEшные жопки на такое не подписывались!
Уууу, и што делать?!
Любой добавляемый npm пакет нужно проверить на размер в сборке через bundlephobia.com или аналоги. На каждый чих-пых добавлять плюс несколько десятков, а то и сотен килобайт чужих скриптов в сборку — может, мммм, не надо? А то в глазик тук-тук да по макушечке хрясь-хрясь:)?
А ещёёёё есть lazу loading, чтобы скрипты грузить по мере необходимости. А ещё есть SSR. А ещё есть сильно более легковесные фреймворки, чем Angular. А ещё есть островная архитектура. И ещё много-много-много всякого хорошего.
NullPointerException
Ну и, конечно, забавно наблюдать, как начинают сыпаться мобильные приложения на таком интернете. Кто молодец, добавляет плашку — пропал доступ к интернет, и мягко её убирает затем. Кто немолодец, начинает сыпать java’вовские исключения в духе
Пургу гонишь!
Стой там на своём пеньке и не возмущайся, у нас с нормальным интернетом всё работает чётенько.
Ну так-то да.
Всем пофик. Фреймворк на фреймворке фреймворком погоняет, смазанный сотнями жирных в пень ненужных npm зависимостей. Профессиональные девелОперы профессионально девелОпят.
Хорошооо!
#IT #frontend #codebetter #javascript #tools
Я сейчас в деревне и здесь по-прежнему мобильная связь работает только вне дома и на возвышенности.
Подтвердить что-то смс-кодом — проблемка. Код актуален 60 сек, за которые смс тупо не удаётся поймать иногда. И осложняется сиё мероприятие тем, что помимо смс надо ведь ещё и чтобы интернет как-то ловился, чтобы было куда этот код ввести.
И знаете что? Вот, стоя во весь рост на пеньке посреди поля с поднятым над головой телефоном и пытаясь загрузить личный кабинет оплачиваемого сервиса с постоянно отваливающимся интернетом, очень хочется, чтобы там грузилось чууууточку поменьше долбаных мегабайтов джаваскрипта:)
Professional highly complex ultra-modern frontend
Для загрузки кабинета Selectel надо грузануть 4.2 мегабайта, из которых 3.5 мегабайта JS. Angular — привеееет, дружочек-пирожочек!
Там же highly complex frontend у селектела, там стартануть без 3.5 метров скриптов никак низя. Иначе ж оно как на первом сайте в Интернет получится, недостаточно professional, слишком не modern, и вообще developer experience без этого пострадает и фронтендеры будут плак-плак и хнык-хнык, ибо их розовые IDEшные жопки на такое не подписывались!
Уууу, и што делать?!
Любой добавляемый npm пакет нужно проверить на размер в сборке через bundlephobia.com или аналоги. На каждый чих-пых добавлять плюс несколько десятков, а то и сотен килобайт чужих скриптов в сборку — может, мммм, не надо? А то в глазик тук-тук да по макушечке хрясь-хрясь:)?
А ещёёёё есть lazу loading, чтобы скрипты грузить по мере необходимости. А ещё есть SSR. А ещё есть сильно более легковесные фреймворки, чем Angular. А ещё есть островная архитектура. И ещё много-много-много всякого хорошего.
NullPointerException
Ну и, конечно, забавно наблюдать, как начинают сыпаться мобильные приложения на таком интернете. Кто молодец, добавляет плашку — пропал доступ к интернет, и мягко её убирает затем. Кто немолодец, начинает сыпать java’вовские исключения в духе
NullPointerException. Альфа-банк привееееет, как дела:)?Пургу гонишь!
Стой там на своём пеньке и не возмущайся, у нас с нормальным интернетом всё работает чётенько.
Ну так-то да.
Всем пофик. Фреймворк на фреймворке фреймворком погоняет, смазанный сотнями жирных в пень ненужных npm зависимостей. Профессиональные девелОперы профессионально девелОпят.
Хорошооо!
#IT #frontend #codebetter #javascript #tools
🔥312👍92😁43🎉4
https://youtu.be/haqLhNN5ZdY
Поговорим о возможностях аспектно-ориентированного программирования в Python, о внедрении зависимостей DI и DI-контейнерах в Python на примере punq, а также в целом о Java подходах vs Python подходах к реализации архитектуры.
Из разборов Ботаним!, 11 глава книги Чистый код, Роберт Мартин.
#youtube #IT #python #codebetter #tools #ботаним
Поговорим о возможностях аспектно-ориентированного программирования в Python, о внедрении зависимостей DI и DI-контейнерах в Python на примере punq, а также в целом о Java подходах vs Python подходах к реализации архитектуры.
Из разборов Ботаним!, 11 глава книги Чистый код, Роберт Мартин.
#youtube #IT #python #codebetter #tools #ботаним
YouTube
DI, DI-контейнеры, аспектно-ориентированное программирование в Python vs Java. Чистый код, 11 глава
Поговорим о возможностях аспектно-ориентированного программирования в Python, о внедрении зависимостей DI и DI-контейнерах в Python на примере punq, а также в целом о Java подходах vs Python подходах к реализации архитектуры.
Из разборов Ботаним! https:…
Из разборов Ботаним! https:…
👍69🔥12❤6
Зззнатокам Python хитрый вопрос!
Какой тип поставить у параметра
Код скопировать можно здесь.
Вот так это делается на TS
А как на Python, м:)?
#IT #python #typescript #codebetter
Какой тип поставить у параметра
field функции print_user_field, чтобы последняя строка при проверке типа показала ошибку? Перечислять второй раз поля User — нельзя, ибо делает возможным рассинхрон имён полей в классе и отдельном их перечислении.Код скопировать можно здесь.
Вот так это делается на TS
А как на Python, м:)?
#IT #python #typescript #codebetter
👍38🔥5😁4
Почему перечислять второй раз поля — плохо? Потому что возможна ситуация на скриншоте ⬆️ — поле
Почему вынести эту проверку на переданное значение
Систематических способа минимизировать ошибки в рантайме я знаю два, ТТ — как Тульский Токарев, только Типизация и Тесты.
Оба способа не гарантируют отсутствие ошибок, но позволяют вылавливать какое-то их количество на этапах до рантайма, то есть до пользователей. Чем лучше ТТ, тем меньше ошибок в рантайме.
Можно ли обойтись без типизации? Конечно, драматически увеличив количество тестов и проверок в коде, засорив код этими проверками.
Типизация помогает сократить количество тестов, потому что большой пласт ошибок выявляется на этапе проверки типов.
#python #it #codebetter
name в User переименовалось в username, а в типах параметра field осталось name. Система проверки типов не покажет ошибку при вызове print_user_name(user, "name"), а хотелось бы ошибку увидеть, так как поля name уже нет.Почему вынести эту проверку на переданное значение
field в блок try/except — плохо? Потому что это уведёт ошибку в runtime, а надо минимизировать ошибки в рантайме, ошибки в рантайме = грустящие пользователи.Систематических способа минимизировать ошибки в рантайме я знаю два, ТТ — как Тульский Токарев, только Типизация и Тесты.
Оба способа не гарантируют отсутствие ошибок, но позволяют вылавливать какое-то их количество на этапах до рантайма, то есть до пользователей. Чем лучше ТТ, тем меньше ошибок в рантайме.
Можно ли обойтись без типизации? Конечно, драматически увеличив количество тестов и проверок в коде, засорив код этими проверками.
Типизация помогает сократить количество тестов, потому что большой пласт ошибок выявляется на этапе проверки типов.
#python #it #codebetter
👍43🔥30❤2
Михаил о написании кода, рефакторинге и двух чудо-шапках программиста!
https://www.youtube.com/watch?v=tMbfqsePKHs
#IT #interesting #codebetter
https://www.youtube.com/watch?v=tMbfqsePKHs
#IT #interesting #codebetter
YouTube
Говнокод - необязательно писать код и рефакторить одновременно
В этом видео поговорим о критике, говнокоде, рефакторинге... Все это в принципе связанные темы, но просто эмоции немного бушуют и хотелось высказаться.
Стрим Диджитализируй https://www.youtube.com/watch?v=ExaQHffBE20
Поддержать меня: https://boosty.to/mflenov…
Стрим Диджитализируй https://www.youtube.com/watch?v=ExaQHffBE20
Поддержать меня: https://boosty.to/mflenov…
👍119🔥14❤3