Задать вопрос
  • Как сделать INSERT в две таблицы в одном запросе?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Ты можешь открыть транзакцию и сделать два инсерта в разные таблички. И с точки зрения БД
    это будет иметь смысл атомарного действия.

    Или ты другое хотел?
    Ответ написан
    8 комментариев
  • Стоит ли хранить HTML документ в базе?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Когда говорят о базе данных, то 99% имеется в виду классическая реляционная БД типа Postgres/MySQL e.t.c.
    Такие базы данных создавались для эффективного соединения кортежей и сортировок. Длина DataRow
    при этом обычно не больашя (до 8К целый блок таких строк). Эта цифра имеет корни еще в 20м веке.
    И если заставить их хранить html (обычно 5-100К) то такая деятельность может быть не очень
    удобная для БД. Это как микроскопом гвозди забивать. Очень умная система будет использоваться как
    файловое хранилище. Возникает идея - просто взять что-то ориентированное на файлы. Например S3,
    BlobStorage, GoogleDrive.
    Это было-бы дешевле с точки зрения стоимости владения и бэкап делать
    проще.

    Я понимаю что мы живем в странное время, когда вместо расчета в калькуляторе - запускают гугл или вместо
    расчета в MathCad спрашивают ChatGpt, но все-таки программист должен быть немного хозяйственник
    и должен брать простые и дешевые решения там где они достаточны.
    Ответ написан
    6 комментариев
  • Возможна ли двухфакторная авторизация, основанная только на хранении пароля в голове?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Многофакторка как раз и создана чтобы повысить безопасность на базе
    имеющихся тенических средств (телефоны и аппаратные генераторы ключей).

    Твоя идея о существовании некого спасательного ресурса в сети - работать по старой схеме
    не выдерживает проверки на безопасность. Подумай сам как ты будешь отменять или опровергать
    свою учетку если ей завладеет кто-то третий. И почитай законы Керхгофса. Там есть требование - оперативной
    замены ключа (пароля) в случае компрометации.
    Ответ написан
  • Как хранится c++ struct в памяти и как определить размер вручную?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Скорее всего такого алгоритма нет. Размер структуры будет зависеть
    от разрядности платформы и от типа компиллятора и возможно от всяких
    опций типа #pragrma pack. Тоесть получается нехилый квест.

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    Mongo и многие документ-подобные системы обычно оптимизируются не так как реляционки а как агрегаты.
    Тоесть ты подготовавливаешь для пользователя полностью самодостаточный документ который за 1 операцию
    извлекается и больше никаких joins не нужно.

    Ответить на твой вопрос можно только наблюдая за типичными запросами пользователя этой системы. Никакой другой здесь теории нету.
    Ответ написан
    Комментировать
  • Можно ли организовать фильтр/поиск товаров посредством JSON_EXTRACT?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Я-бы переделал табличку. Пускай мета-данные по продуктам лежат в виде битовых полей.

    create table product(
      ....
      params_group1 BINARY(100),
      params_group2 BINARY(100),
      params_group3 BINARY(100)
    )


    И дальше булевыми (bitwise) операциями как тут пишут https://dev.mysql.com/doc/refman/8.0/en/bit-functi... делать поиски продуктов по маске свойств.
    Ответ написан
  • Я написал свой сканер портов на языке Rust при помощи библиотеки std::net. Почему у меня зависает программа если ввести другое значение?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Несколько мыслей. Первое. Скорее всего утилита зависает здесь
    TcpStream::connect(&ip)
    но ты должен это сам проверить и доказать во время подачи вопроса в хабр. Логгированием или профилированием неважно. Короче приходи - чуть более подготовленным чем просто с зависающей программой.

    Второе. Сам по себе TCP протокол не бесплатный. Каждый новый сокет аллоцирует память в виде буфера
    для отработки опций протокола (восстановление стрима с учетом потерянных пакетов) и этот буфер
    где-то регулируется. Поищи. Проверь также скорость работы твоего приложения. Как быстро он отрабатывает
    ответ от молчаливых портов которые ничего не отвечают. Это - тоже протокольная ситуация и ее надо как-то
    обработать. Грубо говоря не доверять дефолтным таймингам.

    Третье. Возможно некоторые промышленные утилиты-сканеры такие как nmap не используют создание
    сокетов
    . Они могут работать на уровне IP протокола просто посылая SYN-пакеты и обрабатывая ответы
    асинхронно. Это такая хитрость которая позволяет создать сокет без буфера. Это не честно с точки
    зрения полноценного протокола но достаточно чтобы проверить что ACK пришел. Вот почитай какие
    возможности у RUST есть в части IP-программирования.
    Ответ написан
    8 комментариев
  • Как написать свой матричный фильтр (например размытие по Гауссу)?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Фильтр Гаусса ничего не знает о цвете. Он просто применяется к матрице вещесвтенных чисел.
    Поэтому обычно картинку в формате RGB переводят в трех-слойную вещественную матрицу { double, double, double }
    и фильтр Гаусса применяют трижды для каждого слоя. И результат потом снова сводят в RGB.

    Есть миллиард хитростей как делать это в целых или в вещественных числах или как использовать SIMD, Parallel
    computing e.t.c. но ты сделай сначала самый простой и работающий вариант а потом уже оптимизация.

    С оптимизацией неизбежно сталкиваются все новички на цифровых фильтрах. Потому-что без нее фильры
    работают на порядки медленнее чем в Photoshop например.
    Ответ написан
    Комментировать
  • Какой сайт с задачами rust?

    mayton2019
    @mayton2019
    Bigdata Engineer
    На codewars есть опция выбора языка. Можно взять Rust. И там можно решать задачи разной сложности. И после решения сравнить свой исходник с другими (более успешными обычно).
    Ответ написан
    Комментировать
  • Как найти в файле тхт нужную строку и добавить к ней другую переменную?

    mayton2019
    @mayton2019
    Bigdata Engineer
    На регулярной основе - я-бы загружал этот файл в базу данных. И там через update обновлял бы поле 90 на 100.
    А потом сохранял-бы обратно в CSV файл.

    Если задача одноразовая ... ну есть масса утилит типа sed/awk/perl они это делают за 2 минуты.
    Ответ написан
    Комментировать
  • Кто сталкивался с сертифицированным ПО для скриншотов?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Я-бы разделил эту задачу на две разные части. Первое - это делать скриншоты любым опенсорцным софтом
    и складывать их в локальный фолдер пользователя.

    И второе - это забирать файлы с локального фолдера пользователя на сервер при необходимости.
    Со второй задачей - справляться проще т.к. любая ОС в домене уже должна иметь такой коробочный
    софт. И здесь проблема сертификации уходит т.к. ОС уже сертифицирована.
    Ответ написан
  • Какой способ хранения и выборки данных предпочтительней?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Нужно делать одну таблицу и с ней работать. Самый простой вариант - обычно самый надежный и долговечный.

    Игры с разными таблицами - это овер-инжинеринг. И ты зря занимаешся этим потому что в топике совершенно
    нет мотивации к этому. Пускай одна таблица работает и если она по каким-то причинам перестанет справлятся
    - то тогда можно рассмотреть materialized views, витрины, гиперкубы и прочие технологии. Но пока это
    все - не нужно.
    Ответ написан
    Комментировать
  • Софт для проверки б/у компьютера перед покупкой?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Бери с собой специалиста. Потому-что дефекты блока питания например вообще никак не видны софтверной диагностикой. Так-же не видно вздувшихся электролитов и не видно перепаянного монтажа на материнке.
    Ответ написан
    Комментировать
  • Структуры данных, как пользоваться,с чем едят и какие бывают кроме распространенных деревьев и хеш мапов?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Для блочной игры типа Minecraft можно применять Octree https://en.wikipedia.org/wiki/Octree

    Практически везде в С и других языках применяются хеш-мапы и красно-черные деревья. Они
    закрывают 90% всех твоих потребностей. Вот изучи их и используй. Все прочие экзотические
    структуры данных - надо обсуждать применительно к каждому случаю. Многие из них
    являются просто композицией уже известных. Например LRU-лист это хеш-мапа и связный список.
    Ответ написан
    3 комментария
  • Почему любую булеву функцию можно представить в виде СДНФ или СКНФ?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Автор вот ты написал СДНФ или СКНФ. Это означает что ты уже читаешь булеву алгебру. И ты уже прошел
    основы булевой алгебры. Я не помню где это написано. Честно не помню. Но разве тебя не удивляет что в
    математике целое число можно представить в виде суммы других чисел. Или гладкая функция - представима
    в виде суперпозиции других гладких функций.

    Я не знаю какое нужно притащить доказательство чтобы обобщать этот тезис на любую функцию. Но начни
    с простых функций - и просто индуктивно увидишь что для любой функции всегда можно создать формулу.
    Хотя она может быть длинной и некрасивой.
    Ответ написан
    Комментировать
  • Какой инструмент может превратить схему БД в панель управления или админку?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Практически такое решение будет очень небезопасным. Обычно вебу дается минимум доступа к БД и то
    через всякие сервисы и прослойки. А вы прям открываете вообще все что только есть. Это я думаю - плохой
    дизайн по безопасности. И пользователь может грохнуть целую таблицу случайно.

    Графические инструменты для работы с БД есть. Например JBeaver. Универсален и удобнее веба.
    Ответ написан
  • Как называется (термин) предельное число в счетной системе континуумного типа?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Максимум?
    Ответ написан
    Комментировать
  • Как нарисовать картинку имея координаты точек?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Можно попробовать сохранить эти точки в SVG-файл. Там формат - простой.
    Ответ написан
    Комментировать
  • Как формировать сырые SQL запросы максимально эффективно?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Я в самодельных билдерах запросов добавлял фейковый предикат 1=1 который всегда был. Тогда добавление новых предикатов делается проще. Вот как-то так.

    def get_user(*, username: str = None, email: str = None, id: int = None, is_blocked: bool = None):
        SQL = "SELECT * FROM USERS {} LIMIT %s OFFSET %s WHERE 1=1 "
        more = []
        if username:
            more.append("AND username = '%s'" % username)
        if email:
            if any([username]):
                more.append("AND email = '%s'" % email)
        if id:
            if any([username, email]):
                more.append("AND id = '%s'" % id)

    Я проверял этот код на валидность. Это лишь идея как сделать. Поэтому исправляй дальше сам.
    Ответ написан
    Комментировать