ITnan

Все публикации Хабрахабр и Гиктаймс в одном месте
Выбран стиль: blue


  1. unC0Rr
    /#23191470

    Возможно, континентальная плита ещё не так далеко от экватора была.

  2. danilovmy
    /#23191472

    привет, kesn. Читал статью и кивал: вроде бы и да, а вроде бы и нет.

    Писать на Python можно сразу хорошо, только у всех это свое хорошо. Тут соглашусь с David Beazley, что большинство не понимает идеологию Python вообще, но это не мешает им создавать интересные решения.

    Что мне кажется полезным использовать:

    1. Генераторы и Pipe-generators в любом виде.
    Все, что необходимо для перечисления в последующих функциях, должно быть генератором.

    Когда я вижу, что вычисляется лист/кортеж который прокидывается дальше в какой-нибудь цикл, то это означает, что алгоритм выполняет несколько ненужных проходов по коллекции элементов, прежде, чем выполнить что-то полезное. В моем теперешнем проекте можно встретить list только в одном случае: я пропустил это при рефакторинге.

    2. Рефакторинг цикла без использования Break.
    Если идет цикл по набору элементов, который прерывается (break) по каким-либо причинам, оставляя часть элементов не обработанными, то получается, что набор был излишен. Ресурсы на создание и хранение этого набора частично были потрачены зря. Если же набор элементов — это генератор, не ясно, что мешало создать генератор на меньшее количество элементов?

    3. Рефакторинг цикла без использования Continue.
    Если идет цикл по набору элементов, некоторые из которых пропускаются (continue) по каким-либо причинам, оставляя часть элементов не обработанными, то получается, что набор был излишен. Ресурсы на создание и хранение этого набора частично были потрачены зря. Если же набор элементов — это тоже генератор, не ясно, что мешало создать сразу правильный генератор?

    4. While c break/continue является продолжением предыдущих выводов. Многие захотят поспорить, и я соглашусь, например, с тем, что использование break/continue убыстряет разработку, а это плюс!

    4. map/zip в современном Python бессмысленны:
    про map уже даже Гвидо сказал, что

    «want to remove map»
    , zip стал не нужен после появления yield from:
    zip = yield from (next(iterator) for iterator in tuple(iter(iterable) for iterable in iterables))
    


    5. Ранний return — не панацея от удержания кода в голове. Если код надо запоминать — это скорее всего признак необходимости рефакторинга. А вот множественные точки выхода — это попо-боль для отладки.
    Пример: поставил точку останова. А оно не остановилось… Оказалось создатель кода решил выйти из функции раньше.

    6. Даже в документации Django list(queryset) отмечен, как опасный. Потому, как list запускает получение всех данных queryset.

    Предлагаю Автору сделать assert list(queryset) на queryset под миллион записей и удивиться.

    Кто-то посоветовал queryset.get(), но для версий django <=3.0 get имеет ту же проблему, я описывал это в своей статье.

    Ложки Хорошего решения тут нет.
    Иногда поможет queryset.exists(), но это n+1 запрос.
    Иногда поможет выполнение кода и assert после:
    item = None
    for item in Item.objects.all()[:1]:  #  для твоего кода 
        print (item)
    assert item  # для любителей assert-ов
    


    7. select_related / prefetch_related ТОЛЬКО в случаях, когда это действительно надо.
    Такое надо в коде бывает редко, если алгоритм выполняет то, что должен, и не более.
    Пример: В Django 1.4 я прилепил select/prefetch всего сразу на базовый queryset цены товаров в магазине. Спустя 4 года любое обращение к queryset цен стало вешать базу. Я начал плакать, кода посмотрел код sql запроса price.objects.count(), который вызывается дважды в AdminModel в шаблоне change_list.html

    В итоге Автор напомнил мне меня же лет 6 назад. Я тогда уже наелся первой стрельбой по ногам от python/django и сформировал кодекс «пиши вот так...». Cпустя время каждое второе правило этого кодекса оказалось очередной «случайной пулей в ногу», ведь задачи стали совершенно другими.

    Автору успехов

  3. A114n
    /#23191474 / -2

    Дело не в болезнях курильщиков. Дело в смертях.

    ВОЗ указывает, что от курения гибнут 8,5 млн в год. ЕЖЕГОДНО, понимаете? И из них 1 млн некурящих гибнет. То есть люди сами не виноваты, они не хотят умирать. А вы их убиваете. Вы отказываете уничтожать табачные заводы, и тем самым приводите к смерти невинных людей. Вы готовы взять на себя ответственность за смерть человека? Почему вы не думаете об окружающих? Миллион человек в год умирает даже без вины, и ещё восемь умирает, потому что табачные заводы их провоцируют.

    От ковида за год не померло и четырех миллионов. Кафе, рестораны, торговые центры закрыли мгновенно. Почему сегодня же по всему миру все страны немедленно не закроют табачные заводы, чтобы спасти 8 миллионов жизней в год?

  4. saboteur_kiev
    /#23191480

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

  5. LAG_LAGbI4
    /#23191478

    Ты хочешь сказать, что какое-нибудь соглашение с Майкрософт в Голландии короче, понятнее, да ещё и на нидерландском языке?

  6. ru1z
    /#23191476 / +1

    А что же вы статью не пишете про вред курения? Раз:

    8,5 млн в год. ЕЖЕГОДНО, понимаете?

    Про ковид написали, теперь очередь за курением, надеюсь?

  7. todoman
    /#23191486

    Безусловно, интересно.

    Но технических подробностей маловато. Не только бы про память 128 КВ, а про архитектуру хоть немного. И НР 3000, например, был первым компьютером, установленным в Белом доме. Деталь, всё же, значимая.

  8. Scinolim
    /#23191488

    Ну так возьмите инструменты разработчика (QPST, firehose), ключ разработчик (уже давно слит, на 4pda или XDA есть) и можете всё что угодно куда угодно там записать.

  9. dfgwer
    /#23191494

    Каждый раз, когда я читаю о JWST, у мена самопроизвольно скрещиваются пальцы, руки, ноги, волосы…

  10. A114n
    /#23191496 / -1

    Что должно произойти, чтобы лично Вы признали свою теорию ошибочной?

    (устало) таких комментариев уже были сотни здесь.

    У меня нет никаких «теорий», невозбранный борец с конспирологией. Нет никаких «теорий». У меня есть ВОПРОСЫ.

    А у вас — теории есть. У вас есть теории о том, что локдауны спасают от ковидлы, что маски спасают от ковилды, что вакцинации от неё спасают и ещё море других теорий. Была теория о том, что от ковидлы умрут 40 млн. Все эти теории сейчас фальсифицированы.

    Про критерий Поппера даже говорить смешно, годы назад всё сказано, а вы всё талдычите.

    Свои теории проверьте. Свои. Вам про НИХ вопросы задают. Вы ни на один вопрос не можете ответить. Сотня борцов с конспирологией набежали и визжит: «Что должно произойти, чтобы вы перестали верить в свою теорию!». Где теорию увидели — непонятно. Сами себе что-то придумали, сами ответили.

    А про свои собственные теории такое им и в голову не приходит. Как так маски не помогают? Как так? А что должно произойти, чтобы я поверил, что они не помогают? Ведь они же помогают!

    А вот теория о том, сколько должно было помереть в Швеции, и сколько померло. ОЧЕВИДНО провальная, фальсифицированная теория.
    image