Задать вопрос
  • Как связать модели в Django учитывая условия?

    WStanley
    @WStanley
    Back-end Developer
    Привет!
    Примерно так это должно работать
    ссылка на источник
    в admin.py
    @admin.register(Ordering)
    class OrderingAdmin(admin.ModelAdmin):
    
    	def formfield_for_foreignkey(self, db_field, request, **kwargs):
    	        if db_field.name == "system":
    	            kwargs["queryset"] = Code.objects.filter(used=True)
    	        return super().formfield_for_foreignkey(db_field, request, **kwargs)
    Ответ написан
    Комментировать
  • Как асинхронная программа(event loop) понимает, что пришел ответ от сервера?

    bingo347
    @bingo347
    Crazy on performance...
    Что-бы понять асинхронность полностью придется постепенно опустится на самый низкий уровень, вплоть до железа. Но начать стоит с самого верха - с уровня нашего приложения.

    Итак, мы пишем на нашем высокоуровневом любимом языке, неважно JS/Rust/C#/Scala/Python или любой другой. В современном мире у нас скорее всего есть какая либо абстракция для работы с асинхронными апи, предоставляемая или стандартной библиотекой языка или сторонними библиотеками. Она может быть примитивной и основанной на колбэках или более продвинутой, вроде Future/Promise/Task или чем-то подобным. Иногда наш язык предоставляет синтаксис наподобие async/await для более простой работы с этими абстракциями, а иногда асинхронная работа может вообще быть скрыта от нас в рантайме языка, например как с горутинами в Go. Но в любом случае где-то под капотом у нас будет event-loop, а иногда и не один, так как никто не запрещает нам писать многопоточку в то же время используя асинхронные вызовы.

    Сам event-loop - это не более чем обычный while(true) или любой другой бесконечный цикл. И внутри этого цикла наша программа имеет доступ на извлечение к некоторой очереди (если не знаете, что это за структура данных, то погуглите), которая содержит в себе результаты уже обработанных задач. Программа берет очередной результат, находит ожидающий ее колбэк/Promise/Future/Task и запускает выполнение ожидающего кода. Очередей опять же может быть несколько и обрабатываться они могут по разному, но это не важно. Важно то, что наш основной поток (или потоки) ничего не знают, о том как выполняются асинхронные задачи. Он лишь смотрит, есть ли в очереди результат, и если есть - обрабатывает его, а если нет, то принимает решение или выйти из цикла (и завершить поток, а иногда и весь процесс) или уснуть пока новых результатов не появится.

    Но откуда же в очереди берутся результаты? Надо понимать, что асинхронная программа почти всегда многопоточная и результат операций попадает в очередь из фоновых потоков, которые просто блокируются в ожидании нужного ресурса (или сразу многих ресурсов, если используют системные апи вроде epoll или kqueue). Как правило такие фоновые потоки большую часть времени находятся в состоянии ожидания, а значит не потребляют ресурсы CPU и не попадают в планировщик ОС. Такая простая модель действительно позволяет сильно экономить ресурсы по сравнению с моделью, где множество потоков выполняют по 1 задаче и самостоятельно ожидают свои запросы.

    Важно отметить, что в современном мире даже на среднеуровневых языках, вроде C или C++, не говоря уже о высокоуровневых, не реализуют асинхронность сами. Во-первых, на разных ОС для этого используются разные апи. Во-вторых, эти апи на разных ОС умеют обрабатывать разные типы ресурсов (с сетью вроде как умеют работать все основные ОС, но помимо сети асинхронно можно работать с пользовательским вводом, диском и периферийными устройствами, вроде сканеров, вебкамер и прочего цепляемого в usb). Наибольшую популярность (ИМХО) имеет кроссплатформенная библиотека libuv, хотя в Rust принято использовать mio (или даже абстракции над ней, вроде tokio), в C# подобные механизмы есть в .NET Core, а в Go оно уже зашито
    в те самые 1.5МБ рантайма, что Go засовывает в каждый бинарь
    (там правда еще и GC, но один фик это много и достойно вынесения в динамическую либу)


    Ок. С прикладным кодом вроде разобрались. А что же происходит в ядре ОС? Ведь, как писалось выше, у нас даже есть апи, чтоб ждать запросы пачкой. Все просто. Ядра ОС стали асинхронными еще до того, как это стало мейнстримом, если мы конечно имеем дело не с ОС реального времени (но у нас же винда/линь/мак/фряха, а не ОС для бортового компа боинга, где это критично). Смотрите, когда что-то происходит на внешней периферии (ну например диск запрошенные данные прочитал или по сети данные пришли, или юзер мышкой дернул), то формируется прерывание. CPU реально прерывает свою текущую работу и бежит смотреть что случилось, точнее вызывает обработчик предоставленный ОС. Но у ОС то есть основная работа, поэтому она скорее старается освободить обработчик и просто скидывает все данные в оперативку, а разбираться будет потом, когда очередь дойдет. Ничего не напоминает? Очень похоже, на то что происходило в event-loop, только вместо фоновых потоков "результаты" попадают в очередь из прерываний. А уже когда-то потом ОС отдаст данные в драйвер устройства, ну и т.д., пока они не дойдут до нашего прикладного приложения. Вот и все, никакой магии.
    Ответ написан
    3 комментария
  • Факт или миф: комп не стоит изнашивать частыми включениями-выключениями? Гибернация системы на SSD?

    gbg
    @gbg Куратор тега Электроника
    Любые ответы на любые вопросы
    Сама идея появилась от того, что при циклировании питания, изнашивается HDD и в гораздо меньшей степени, конденсаторы в цепях фильтрации питания.

    Так что если исключить из рассмотрения HDD (его нет) и конденсаторы (там теперь кругом твердотельные), пробоем с циклированием нет никаких.

    Идея о том, что частая гибернация может испортить SSD - также устарела, современные SSD и не такое переживут и будут заменены раньше - просто потому, что станут вмещать мало данных.
    Ответ написан
    3 комментария
  • Разница между DNS зоной и доменом?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Домены разбиваются на зоны, за которые отвечают индивидуальные DNS-серверы.
    Домен представляет список ресурсов, объединенных одной организационной единицей.
    К примеру, все домены с окончанием ".ru" принадлежат домену "ru".
    Зона - запись, определяющая делегирование ответственности за поддомены на другие DNS-серверы (запись типа NS).
    Ответ написан
    Комментировать
  • Базовое обучение JS на html academy - стоит стого?

    Там есть бесплатные курсы. 5 лет назад я их проходил и смог нафрилансить на платные. Но это по верстке было. По js там такие основы что ты не узнаешь ничего кроме первой главы learn.js (что такое переменные, массивы и тд)
    Программирование лучше учить на hexlet + codewars, и параллельно читать доку по выбранному фреимворку и пилить что то для практики
    Ответ написан
    Комментировать
  • Можно ли описать такой запрос PostgreSQL при помощи Django ORM синтаксиса?

    tumbler
    @tumbler Куратор тега Django
    бекенд-разработчик на python
    is_actual=Case(
        When(created__gt=Value(now()) - F(period)), then=True),
        default=False
    )

    Суть в том что почти все линейные неравенства в таких условиях приводятся к виду {переменная} < {выражение}
    Ответ написан
    Комментировать
  • Донатерский и суперадминский доступ к консоли сервера?

    gbg
    @gbg
    Любые ответы на любые вопросы
    Поднимайте сервер в докере, давайте туда доступ и пусть резвятся.
    Ответ написан
    Комментировать
  • Что может линукс, чего не может Mac?

    Adamos
    @Adamos
    Системы довольно сходны, поскольку и то, и другое - это Юникс с графической оболочкой.
    Под Мак есть некоторые проприетарные программы, которые под Линукс никто никогда не портировал.
    У Мака вылизанный и консистентный DE, но, если тебе что-то в нем не нравится - изменить это куда сложнее, чем в Лине. Альтернативных DE, насколько мне известно, нет вовсе.
    Ну, и Мак - это система для продаваемых Эпплом машинок, отсюда ограниченная поддержка железа и зонды, которые требуется преодолевать.
    По факту, если тебе не нужны определенные программы и игрушки, которые портированы только под Мак - ничего особенно нового, если уже сидишь на Линуксе, там не встретишь. Кроссплатформенные программы те же, консоль та же, разве что горячие клавиши по традиции через... одну клавишу, но к этому, говорят, привыкают.

    Если вопрос именно в преимуществах Линукса, то это многообразие дистрибутивов и кастомизация имеющихся, а также репозитории вместо магазина. Ну, и большая гибкость системы, позволяющая запустить ее практически на чем угодно.
    Ответ написан
  • С чего начать изучение программирования?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    1. Основная сложность в уверенности, что вы гуманитарий и этим ограничены. Склады ума - это миф.
    2. Нет.
    3. Нет.
    4. Какие востребованы сейчас вы можете легко посмотреть по рейтингам и по открытым вакансиям. Какие будут - это может с уверенностью сказать только гадалка с хрустальным шаром.
    5. HTML, CSS и SQL желательно знать каждому. Хотя какому-нибудь эмбедеру они никогда и не пригодятся.
    6. Курсы не нужны. Либо вы сумеете учиться по учебникам, либо о программировании можете забыть.
    Ответ написан
    Комментировать
  • С чего начать изучение программирования?

    saboteur_kiev
    @saboteur_kiev Куратор тега IT-образование
    software engineer
    1) Какие основные сложности у меня могут возникнуть на пути изучения программирования как у "гуманитория"?

    Непонимание что такое программирование и что такое квалифицированный программист.
    Спутать HTML/CSS и программирование могут как раз те, кто еще ничего не знает.

    В программировании меня привлекают следующие факторы:
    1) Ты что-то создаешь, видишь результаты своих усилий, можешь создать что-то с нуля, это классно.

    Это неправда. Подавляющее большинство программистов делают банальные штуки, результаты которых в основном не видны. И программисты часто результаты маркетологов и СЕО, как раз считают гораздо более видимыми.

    2) Очень востребованная и высокооплачиваемая профессия во всем мире и мне кажется, что так и будет еще много лет.

    Вы путаете востребованность профессии и квалификацию. Много платят тем, кто очень много умеет и продолжает постоянно учиться, а не просто рядовому программисту.
    Ответ написан
    3 комментария
  • Где можно найти Сеньор БЭ разработчика в стартап?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Нигде. Сеньор и энтузиаст - понятия в норме несовместимые.
    Ответ написан
    Комментировать
  • Как мягко переубедить клиента в том что он не прав?

    riky
    @riky
    Laravel
    положите в портфолио ту версию которая нравится вам.
    Ответ написан
    Комментировать
  • Как сделать многоточие (прикрепил гифку)?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Как-то примерно так:

    P.S. Не сразу заметил, что в оригинале hover.
    Ответ написан
    3 комментария
  • Какую авторизацию сделать на сайте?

    Lebezniy
    @Lebezniy
    Веб разработка
    Можете рассмотреть вариант использования JWT в PHP: Авторизация на сайте с JSON Web Token
    Ответ написан
    4 комментария
  • Как найти одинаковые файлы на диске?

    Jump
    @Jump
    Системный администратор со стажем.
    Ответ написан
    Комментировать
  • Какой правильный размер SWAP установить при 24 Gb RAM + SSD? Или отключить SWAP, используя лишь RAM?

    Там есть размер по выбору системы, чем он тебя не устроил?
    Ответ написан
    Комментировать
  • Какой тип в базе данных позволит записать число больше 999,999?

    2ord
    @2ord
    Для денег тип Float нельзя использовать.
    Тип Decimal нужно использовать правильно, с учетом дробной части.
    Что означает тип данных/поля DECIMAL (MySql)?
    Ответ написан
    Комментировать
  • Что означает тип данных/поля DECIMAL (MySql)?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    общее количество (а есть не общее?)

    да есть - число знаков после запятой.

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

    Да, может не храниться. В частности - отбрасываться, округляться или выдавать ошибку переполнения.

    Как я понимаю, в этом поле должно хранится значение с 11 цифрами целой части и 10 дробной.

    Нет.
    11 знаков есть всего, из них 10 - для дробной части.

    И почему запись вида DECIMAL(9,10) вызывает ошибку

    Потому что число знаков после запятой не может быть больше общего числа знаков.
    Ответ написан
    Комментировать
  • Как "расшарить" сессию между вкладками?

    Seasle
    @Seasle Куратор тега JavaScript
    Ответ написан
    Комментировать