Задать вопрос
  • Django не видит css файлы, не понимаю в чем ошибка?

    @deliro
    Теги в джанге пишутся не так. Учи матчасть
    Ответ написан
    1 комментарий
  • Как внести в массив символы, которым соответствует диапазон u8?

    @deliro
    use std::slice;
    
    fn main() {
        let range = (0..u8::MAX).collect::<Vec<_>>();
        let v = range
            .iter()
            .map(|x| std::str::from_utf8(slice::from_ref(x)).unwrap_or("Err"))
            .collect::<Vec<_>>();
        println!("{v:?}")
    }
    Ответ написан
    1 комментарий
  • Выражение без эффекта перемещает переменную?

    @deliro
    Если bb; убрать, то всё работает, почему так? Никакого перемещения там не происходит, но компилятор думает иначе.

    Перемещение происходит. Семантически это выражение эквивалентно `{ bb }`

    Это точно системный язык на котором можно писать серьёзные вещи?

    Нет, язык херня. Беги писать на жс

    Или тут и правда происходит некое перемещение в параллельную вселенную?

    Хорошая привычка — агриться на вещи, которые ты не понимаешь. Далеко пойдёшь.
    Ответ написан
    3 комментария
  • Как имитировать медленное соединение, Mac OS localhost?

    @deliro
    65e4611e2b105078027393.png

    Точно также можно во вкладке performance "замедлить" процессор
    Ответ написан
    1 комментарий
  • Какой смысл ставить мощный Wi-Fi модуль в ограниченный роутер?

    @deliro
    Вот бы устройства по локальной сети не общались
    Ответ написан
    Комментировать
  • Как можно распарсить текст на python?

    @deliro
    Когда-то писал учебно-развлекательный конвертер таких вложенных структур из текста в JSON на расте: https://gist.github.com/deliro/ccd8bdb2aab78a229fe...

    Зависимости

    [dependencies]
    serde = { version = "1.0.192", features = ["derive"] }
    serde_json = "1.0.108"



    Пример вывода на твоих данных (cat x.txt | cargo run -q | jq .)

    [
      {
        "values": {
          "test_snap": "test_snap2",
          "15:49:28": "09:38:39",
          "no-description": "no-description",
          "`->": "`->",
          "2023-12-15": "2023-12-22"
        },
        "children": [
          {
            "values": {
              "no-description": "no-description",
              "test_snap": "snapshot3",
              "`->": "`->",
              "2023-12-15": "2023-12-22",
              "15:49:28": "09:38:54"
            },
            "children": [
              {
                "values": {
                  "`->": "`->",
                  "15:49:28": "09:39:03",
                  "2023-12-15": "2023-12-22",
                  "no-description": "no-description",
                  "test_snap": "xxx"
                },
                "children": [
                  {
                    "values": {
                      "test_snap": "current",
                      "`->": "`->",
                      "2023-12-15": "You",
                      "15:49:28": "are",
                      "no-description": "here!"
                    },
                    "children": []
                  }
                ]
              }
            ]
          }
        ]
      }
    ]



    Для корректной работы нужна шапка (которой у тебя нет).

    Если добавить шапку

    Контент с шапкой:
    _   name                        date       time         description
    `-> test_snap                   2023-12-15 15:49:28     no-description
      `-> test_snap2                2023-12-22 09:38:39     no-description
        `-> snapshot3               2023-12-22 09:38:54     no-description
          `-> xxx                   2023-12-22 09:39:03     no-description
            `-> current                                     You are here!


    Вывод:
    [
      {
        "values": {
          "name": "test_snap",
          "time": "15:49:28",
          "description": "no-description",
          "date": "2023-12-15",
          "_": "`->"
        },
        "children": [
          {
            "values": {
              "name": "test_snap2",
              "description": "no-description",
              "time": "09:38:39",
              "_": "`->",
              "date": "2023-12-22"
            },
            "children": [
              {
                "values": {
                  "date": "2023-12-22",
                  "_": "`->",
                  "time": "09:38:54",
                  "description": "no-description",
                  "name": "snapshot3"
                },
                "children": [
                  {
                    "values": {
                      "_": "`->",
                      "date": "2023-12-22",
                      "time": "09:39:03",
                      "name": "xxx",
                      "description": "no-description"
                    },
                    "children": [
                      {
                        "values": {
                          "date": "You",
                          "time": "are",
                          "description": "here!",
                          "_": "`->",
                          "name": "current"
                        },
                        "children": []
                      }
                    ]
                  }
                ]
              }
            ]
          }
        ]
      }
    ]



    Если хочешь — переписывай на питон. Или пользуйся как cli
    Ответ написан
    Комментировать
  • Существует ли аналог left join в redis?

    @deliro
    Как сказали уже, джойнов нет и не будет. Но во-первых есть пайплайны, которыми можно сильно снизить издержки на RTT, во-вторых есть lua scripting, так что можно вызвать одну функцию на стороне клиента, "сджойнить" через луа на сервере редиса и отдать ответ какой ты хочешь

    Но вообще звучит как Проблема XY. Либо редис там не нужен вовсе
    Ответ написан
    Комментировать
  • Как удалить много строк (порядка 500.000) из csv файла в Python?

    @deliro
    Просто перепиши в соседний csv файл только те строки, которые должны остаться

    И можно ли это сделать не используя библиотеку csv?

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

    @deliro
    Смысл в том, что в го нельзя явно сказать "хочу соответствовать вот этому, вон тому и ещё вон тому интерфейсам". А это способ сделать так, чтобы компиляция сломалась при нарушении интерфейса не "где-то там когда-нибудь", а здесь и сейчас

    Если я передам структуру через di в другую структуру, и она не будет иметь методы требуемого интерфейса, приложение все равно не скомпилится


    Не всегда. Попробуй передай в пустой интерфейс и потом сделай switch type на этот интерфейс или даункастни его
    Ответ написан
    Комментировать
  • Как правильно масштабировать Django с Kubernetes?

    @deliro
    Хочу такой вариант пропустить и сразу перейти к kubernetis

    "You think you do, but you don't"

    Знаю, что могу вынести DB и pgbouncer на отдельные сервера

    Чтобы увеличить RTT?

    Для поддержки кубика нужна целая выделенная команда, которая, помимо кубика, ещё настроит и будет поддерживать ёлку (ELK), какой-нибудь vault, графану, прометей, консул, докер реджистри, s3 (типа minio или seaweedfs, ведь контейнеры теперь stateless и хранить на них ничего нельзя) и кучу других сложных штук. Если у тебя нет сотни разработчиков в компании, то не нужно играть в гугл.

    Во-первых, какая у тебя нагрузка? Сколько тысяч запросов в секунду приходит и отмасштабировал ли ты вертикально и упёрся уже в потолок? gunicorn оптимально настроен? сколько процессов/потоков, какой тип воркеров? json парсишь и сериализуешь orjson'ом? Приложение профилировал?
    Во-вторых, 12 factor
    В-третьих, у базы есть реплики? read запросы раскидал на реплики? а редис? Действительно ли нужен zero downtime (это исходит из вопроса про нагрузку)

    Если тебе хочется просто поиграть, то поставь локально кубик, поиграй, погрусти и удали. Не нужно это тащить в прод, если нет на это необходимости. А если ты даже название kubernetes не можешь правильно написать, то он тебе не нужен.

    P.S. DRF — медленное нетипизированное говно, выкинь его
    Ответ написан
    5 комментариев
  • Почему объединение двух Queryset.values в set дает в результате множество объектов(со всеми их полями)?

    @deliro
    Видимо баг, сделай

    set((Product.objects.order_by('-date_updated')[:3] | Product.objects.filter(new_product__in=NewArrival.objects.all())).values_list("id", flat=True))
    Ответ написан
  • Как оптимизировать код в rust при помощи trait?

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

    Подозреваю, что тебе хочется что-то вроде "сложить два числа, но чтобы можно было и f32 туда и f64". Для этого есть множество стандартных трейтов: Add, Sub, Div, Mul, *Assign, которые и стоит использовать. Например:

    fn f<T: Add<Output = T>>(x1: T, x2: T) -> T {
        x1 + x2
    }
    
    fn main() {
        println!("{}", f(3.14_f32, 2.7)); // можно f32 + f32
        println!("{}", f(3.14_f64, 2.7)); // а можно f64 + f64
    }
    Ответ написан
    Комментировать
  • Книга "Совершенный код" подойдет начинающим программистам?

    @deliro
    Совершенный код проще Чистого кода, его стоит читать раньше
    Ответ написан
    Комментировать
  • В чем отличие ngnix от golang?

    @deliro
    nginx — это реверс-прокси
    go — это яп.

    в чём вопрос-то?

    то как go может работать на ngnix?

    nginx проксирует запрос в сервер на го, который пишет программист. Цепочка проксей может быть сколько угодно большой. Ты можешь поставить nginx -> nginx -> caddy -> nginx -> gin, никто не запрещает.
    Ответ написан
    3 комментария
  • Может ли Раст полноценно заменить Джаву в сфере финансовых технологий?

    @deliro
    Да, может и, вероятно, заменит. Уступает очень крутой кривой обучения на старте
    Ответ написан
    8 комментариев
  • Как хранить условия в БД?

    @deliro
    Вариантов очень много. Самый простой и часто самый хороший — хранить скидки в коде. Да, это требует программерских ресурсов на их поддержку, но зачастую хранение скидок в БД и создание к ним админки будет сильно дороже.

    В целом, условия и действия скидки можно представить и хранить деревьями (что-то похожее на AST). В каждой ноде есть оператор, опциональное значение и дети, которые тоже ноды. Действия тоже можно представить деревьями, только операторы будут вроде min, max.

    Но сразу скажу, что это сложно менеджерить без хорошей админки. А хорошая админка = очень дорого.
    Ответ написан
    Комментировать
  • Какой метод разрешения коллизий используется в Python?

    @deliro
    Открытая адресация, но по формуле, а не тупо сдвигом на один
    Ответ написан
    Комментировать
  • Хорошая ли стратегия разбивать монолит джанго на микросервисы джанго?

    @deliro
    "Разбивать" монолит на сервисы хорошая идея только если у вас больше 500 разработчиков. Никаких плюсов кроме независимого деплоя микросервисы не имеют, зато минусов — перечислять не хватит недели
    Ответ написан
    Комментировать
  • Как получить путь к испольняющемуся файлу rust?

    @deliro
    use std::env::current_exe;
    
    fn main() {
        let x = current_exe();
        println!("{x:?}")
    }
    Ответ написан
    1 комментарий
  • Можно ли заменить javascript языком dart/flutter?

    @deliro
    Хочется уже какой-то стабильности

    Для этого есть Elm на фронтенде и Rust на бэкенде
    Ответ написан
    Комментировать