Диджитализируй!
27.6K subscribers
459 photos
54 videos
11 files
530 links
Авторский канал Алексея Голобурдина о разработке ИТ систем и прочем важном

ПРАВИЛА — https://xn--r1a.website/t0digital/200

ЛАЙВ-КАНАЛ — @smthisgoingon

Дать много деняк — sterx@rl6.ru

Роскомнадзор: https://vk.cc/cJmDDB
Download Telegram
Когда Яндекс.Станция ставит какую-то хорошую музыку, я говорю ей — Алиса, влепи-ка лайк. И она такая — запомню, что вам такое по душе.

Такое. Звучит, будто мои вкусы очень специфичны бгг:)

А я что, я ничего!
😁213🔥16🥰6👍53
Зззнатокам Python хитрый вопрос!

Какой тип поставить у параметра field функции print_user_field, чтобы последняя строка при проверке типа показала ошибку? Перечислять второй раз поля User — нельзя, ибо делает возможным рассинхрон имён полей в классе и отдельном их перечислении.

Код скопировать можно здесь.

Вот так это делается на TS

А как на Python, м:)?

#IT #python #typescript #codebetter
👍38🔥5😁4
👍6🔥2
Почему перечислять второй раз поля — плохо? Потому что возможна ситуация на скриншоте ⬆️ — поле name в User переименовалось в username, а в типах параметра field осталось name. Система проверки типов не покажет ошибку при вызове print_user_name(user, "name"), а хотелось бы ошибку увидеть, так как поля name уже нет.

Почему вынести эту проверку на переданное значение field в блок try/except — плохо? Потому что это уведёт ошибку в runtime, а надо минимизировать ошибки в рантайме, ошибки в рантайме = грустящие пользователи.

Систематических способа минимизировать ошибки в рантайме я знаю два, ТТ — как Тульский Токарев, только Типизация и Тесты.

Оба способа не гарантируют отсутствие ошибок, но позволяют вылавливать какое-то их количество на этапах до рантайма, то есть до пользователей. Чем лучше ТТ, тем меньше ошибок в рантайме.

Можно ли обойтись без типизации? Конечно, драматически увеличив количество тестов и проверок в коде, засорив код этими проверками.

Типизация помогает сократить количество тестов, потому что большой пласт ошибок выявляется на этапе проверки типов.

#python #it #codebetter
👍43🔥302
О, ровно 5 лет назад, 10 декабря 2017го я снял свой первый видос на ютуб. Помню, как это было. Было очень интересно и очень тяжело:) Говорить в камеру непросто, потому как невольно смотришь на себя со стороны и понимаешь, что выглядишь сейчас как дурачок, говорящий сам с собой. Ощущение это прошло у меня много позже, после большого количества практики.

Старый офис, старый мак, старый фотик, молодой я:)

Счастлив, что всё не зря.

Спасибо вам!
👍736🔥107🎉8771😁7
Вот люблю я ютуб за это!

К недавнему видосу, в котором помимо прочего говорится про DI и DI-контейнеры, Vadim Ryazanov написал комментарий: «в последнем примере на лицо сервис локатор. то есть некая функция ран сама дергает депенденси из контейнера которые ей нужны, что не торт».

И таки да! В таком сценарии это действительно Service Locator и антипаттерн. Углубился немного, почитал. Отличнейший блог, кстати. Последний пост от 2019го, надеюсь, у автора всё хорошо и он продолжит когда-нибудь писать дальше.

И ещё нашлась даже полноценная книга по DI.

Надо будет сделать отдельный материал в общем.
👍103🔥19🥰2
Ох сколько вопросов на ютубе почему товарищ Лутц не попал в выборку. Ладненько, сниму разнос Лутца попозже:)

#books #it #python
👍82😁401🔥1
Так, ребятушки, давайте S0ER’у 100к уже добьём:)
🔥129👍24😁92🥰1
В ботанском клубе выбрали следующей книгой «Теоретический минимум по Computer Science. Все что нужно программисту и разработчику», ссылка. Сижу про логические вентили, полусумматоры и сумматоры читаю. Интересно оччччень:)

Планируем до НГ прочитать-разобрать её. Старт на следующей неделе.

#ботаним
👍80🔥15
Гугол, ну это же русский!
😁312🔥96👍3🎉3
Обедаю, родители привели большую ватагу детей откуда-то, с трудом усадили и пошли заказывать. Дети тем временем посидели, поглазели и принялись играть в блогеров. «Всем привеееет, сегодня мы продаём пустую коробкууу!» 😂
😁314🔥34👍13🥰9🎉4
Господа PHP’шники, а што, нет нонче замыканий в PHP:)?

<?php
function closure_example($counter) {
return function() use ($counter) {
$counter++;
return $counter;
};
};

$result = closure_example(0);
foreach (range(0,2) as $_){
print_r($result());
}


Почему сие великолепие печатает 111, а не 123?

Питон печатает 123:

def closure_example(counter):
def inner():
nonlocal counter
counter += 1
return counter
return inner

result = closure_example(0)

for _ in range(3):
print(result(), end="")


JS печатает 123 (красиво на JS, даа!):

const closure_example = counter => () => ++counter

const result = closure_example(0)

for (const _ of Array(3).keys()) {
console.log(result())
}


Go печатает 123:

package main

import "fmt"

func closureExample(counter int) func() int {
return func() int {
counter++
return counter
}
}

func main() {
result := closureExample(0)
for range [3]int{} {
fmt.Print(result())
}
}


А PHP 111.
О — оригинальность!

Или я что-то делаю не так в PHP примере? Замена use на global заставит работать аналогично и PHP-пример, но это как-то кривенько совсем:)
😁44👍16🥰1
Вопрос снят, таки есть способ заставить это работать и в PHP. Этот мир не потерян!
😁71👍13🎉3
Дядя Боб и SRP сначала сформулировал, потом сказал ой нет, чота вы все, балбесы, его неправильно понимаете, сформулируя-ка я его по-другому! И теперь принцип единой ответственности по идее должен звучать как принцип единого актора:) Правит правила на ходу!
https://xn--r1a.website/softwareengineervlog/1338
😁40👍7
Так... Поможем человеку?

Пинтагон это, предположу, место для выпивки. Гонят пинтами.

А Пентагон это сервис на Хачатуряна.

Зачем ему их ломать...
😁284👍23🔥15🥰1🎉1
Следующей книгой будем ботанить «PostgreSQL. Основы языка SQL :: Евгений Моргунов», бумажная версия (ozon), бесплатная PDF версия, начинаем в первых числах января. Присоединяйтесь.

По Чистому коду у меня получилось 4.5 часа видео дополнений/комментариев. По Теоретический минимум по Computer Science 2 часа. Все эти материалы тоже доступны в группе по одной подписке.

За 1.5 месяца проработали 2 книги там. Мне нравится. Качаем скиллы. Основная польза не в моих комментариях, конечно, а в самом факте проработки материала — вместе, в одном ритме, с обсуждением этого материала, опечаток, корявых пояснений или, наоборот, хороших формулировок.

Касательно книги по постгресу. БД это важнейшая часть приложения. Ей мало внимания уделяют обычно на старте изучения ИТ и иногда не уделяют должного внимания на старте проектов, но чем взрослее проект, тем важнее БД становится. Код можно переписать, и бэк, и фронт, а БД это центровая часть, ядро. Двигать его непросто. Особенно когда на проекте уже много пользователей и данных. Недаром в микросервисах предлагается делать изолированные небольшие базки под каждый сервис.

БД структурирует данные, хранит их, даёт доступ к ним. Неважно, насколько чистый код у вас в приложении и насколько круты его алгоритмы, если в данных расколбас. Если крутыми алгоритмами и чистым кодом обработать расколбас, на выходе всё равно будет расколбас. Из-за отсутствия ограничений в БД записались кривые данные или вообще не записалась часть данных, и привет.

Плюс БД это почти всегда первое, что создаст проблемы с ростом нагрузки пользователями и нагрузки данными. Почти всегда не алгоритмы в вашем питон-коде систему положат, а БД.

И при всём этом многие уделяют много внимания языку приложения и обвязке вокруг этого — фреймворкам, ORM и прочему, но почти не уделяют внимание БД. Вот несложные селекты-джоины умеем писать и всё. Этого мало.

Кто хочет углубиться в постгрес — приходите. Я книгу полистал, там есть в частности для меня новый материал, который мне хочется проработать-систематизировать.
#books
👍162🔥2714😁1