Задать вопрос
  • Большое кол-во записей в секунду в MySQL. Как читать последний порядковый номер столбца и добавлять к нему +1 при записи?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Обычно при стриминге информации разделяют 2 процесса. Первое - это регистрация
    событий с устройств.
    Это обычно запись в Message Hub, Kafka, RabbitMQ, Apache Pulsar e.t.c.
    прочие брокеры или системы которые работают с очередью. Тут - главная задача просто успеть
    регистрировать событие. С этим системы очередей справляются отлично.

    При регистрации событий никакого синхронизма между устройствами нет и в принципе
    не может быть. По законам физики и по часовому времени и по прочим сложным процессам
    которые идут в мире. Мы не можем вообще гарантировать точного совпадения часов на всех
    устройствах поэтому фактор времени мы пропустим. К свойствам дублирования и грязи в атрибутах
    на этом уровне можно относиться очень толерантно и не требовать никакой сложной логики фильтрации.
    Если допустим 99.9% событий зашло ровными - оно и ладненько. Дальше почистим.

    Дальше идет - процессинг. Вот здесь уже может вступать в игру MySQL сервер с его логикой
    транзакций. Счетчиков. Уникальностей. Сурогатных или натуральных ключей. Партишенинга
    и прочего. Здесь у вас уже может возникнуть лимит на скорость генерации (inserts) но он будет
    мягкий потому что очередь уже смягчает удар.

    Если у тебя приложение - тайм-критичное и клиент хочет видеть КАЖДОЕ событие как счетчик
    в браузере то здесь тебе скорее всего надо отказаться от MySQL и попробовать что-то другое.
    Что - я не знаю. Надо исследовать глубже use-case. Обычно разработка таких систем - это
    компромисс между одним и другим. Идеала тут не будет.
    Ответ написан
    4 комментария
  • Возможно ли актуализировать старый дистрибутив Linux?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Я-бы просто перенес шрифты на новый дистрибутив. Более того. Мы живем в такое время
    когда все ОС не надежны. И у любого осторожного пользователя должен лежать аварийный
    спасательный диск или флешка чтобы в случае чего спасти все что нажито непосильным трудом.
    У меня стоит обычная Ubuntu 22LTS но я для себя настроил много скриптов которые бекапируют
    и восстанавливают фолдеры с настройками.

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    Вот хорошая статья в хабре была https://habr.com/en/articles/120562/

    И вроде алгоритм не сложный.
    Ответ написан
    7 комментариев
  • Какой тайм-трекер выбрать для фрилансера?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Дружище. У меня для тебя плохие новости. Я тебе советую распрощаться с этой контрой.
    Такого рода менеджмент времени вводят не от хорошей жизни а от плохой. И означает
    он что идет оптимизация ресурсов. И все это очень плохо заканчивается. Люди которые реально
    работают и думают 24/7 о продукте с точки зрения тайм трекинга выглядят не сильно хорошо.
    А те кто умеют тапать хомяка или задней левой ногой шевелить мышкой в фоновом режиме
    - достигают хороших показателей.

    Вобщем беги из этой конторы пока ты психологически еще не выгорел. Ни один нормальный
    работодатель такого обычно не делает.
    Ответ написан
    Комментировать
  • Как транспонировать биты числа максимально быстро?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Ищется функция вида

    def transpose(matrix uint16) : uint16 = {}

    Если она ДЕТЕРМИНИРОВАНА тоесть зависит от аргумента и все. То можно ее ускорить
    путем МЕМОИЗАЦИИ тоесть создания просто таблицы расчитанных значений.
    Это будет очень быстро.

    Это удобно поскольку таблица получается не очень большая и влезает в разумные
    рамки памяти. Если допустим мы говорим о 32х битах то можно изучать варианты.
    В реальном мире линейного распределения аргументов не бывает. Распределение
    всегда косит в какую-то сторону, и этим можно вользоваться, создавая кеши значений
    типа LRU или дисковые базы данных как делают например, для
    тяжелых расчетов или в вебе для медленных источников данных.
    Ответ написан
    Комментировать
  • Самопроверка целостности кода контрольной суммой, как реализовать?

    mayton2019
    @mayton2019
    Bigdata Engineer
    В лихие 90-е был такой антивирус типа ADinf кажется. Он работал под MS-DOS и он после
    проверки каждого файла писал в свою базу контрольную сумму как результат проверки.
    Есть позитивный результат и связь 1:1 контрольной суммы? Все хорошо! Кажется такие антивирусы называли
    ревизорами. И если файл по каким-то причинам менялся то Adinf соотвественно бил тревогу
    и сообщал что длина или сумма отличается от оригинальной.

    Сегодня все программные продукты разрабатываются в версионным контролем. Тоесть есть Github
    или BitBucket где лежит оригинальный код. И есть репозитарии бинарей. Их много. Для Linux
    apt/rpm, есть у Java maven и есть у Python свой PIP

    Все они - централизованы. Имеют в вебе ендпоинт и не очень сложно написать логику которая
    просто сверяет актуальность бинаря и сооответсвующего в репо.

    Я слушал интервью с Евгением Касперским. Он сказал что не сильно верит в антивирусы но
    очень доверяет системам с ЭЦП и тотальному алгоритму проверки доверия. Тоесть допустим
    ты доверяешь производителю ПО - соотв. ты должен чекать наличие сертификата у любого
    бинарника перед запуском. Обычно чек сертификата это легче чем антивирус-контроль
    и при хорошей инфраструктуре может быть очень быстрый.

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    Здесь в вопросе - 2 разных вопроса. Мне кажется так:
    1) Как защититься от любого мусора который прилетает с клиента. Скорее всего никак.
    Нужно реагировать только на HTTP запросы которые имеют смысл в контексте пользовательской
    сессии. Тут - как-бы бизнес логика и FSM для сессии должен все решать. Хакеры с помощью
    wget, curl, python могут генерировать фаззингом миллионы самых вариативных запросов
    в поиске вашего слабого места в этой части защиты.

    2) Как защититься от атаки man-in-the-middle.. Это если легальный пользователь
    зашел в свой клиент банк, а некто, кто физически сидит на канале может перехватывать
    IP пакеты. Изменять их. Удалять. Задерживать на какое-то время или делать повторы.
    Здесь коробочное решение это https (TLS/SSL) протокол по идее помогает.
    Ответ написан
    Комментировать
  • Можете дать рекомендации и советы по ограничениям компьютеров в школах?

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

    Из физического анти-вандализма. Тут как-бы сложно что-то придумать. Я помню что на уроках
    биологии нам выдавали школьные микроскопы которые увеличивали там в 30-100 раз
    но при этом имели чуть ли не чугунное основание и штатив и ими можно было колоть орехи.
    Вобщем в таком вот аспекте смотрите. Насколько денег хватит.

    А еще из компьютерных клубов эпохи 90х. Я помню ходил посмотреть как в Quake играют.
    И смотрю что у всех системников (белый middle-tower) слоты где стоят CD диски закрыты железной
    пластиной и закручено на винтах. Я такой спрашиваю у сисадмина - а зачем типа? Он говорит
    что это против вандалов. Были такие хитрые что прямо во время игры втихаря отламывали
    пластиковую заглушку и могли засунув руку выдернуть планку памяти из материнки прямо
    и тихо унести.

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    1 коммутатор прислал часть А 8600100 Б 8700100 длительность 50сек время вызова 2024-08-03 12:51:00
    2 коммутатор прислал часть А 8600100 Б 8700100 длительность 49сек время вызова 2024-08-03 12:51:00
    3 коммутатор прислал часть А 8600100 Б 8700100 длительность 50сек время вызова 2024-08-03 12:51:01

    Данная постановка для нейросетей выглядит достаточно ... натянутой что-ли.
    Обычно НС мы внедряем тогда, когда у нас нет возможности описать логику на if-else.
    В твоем-же случае если вектор параметров представить как { x1, x2, x3, x4 }, то
    нам достаточно проверить что параметры x3, x4 попадают в окрестность некого времени "эпсилон"
    (равной 1 секунда например) и после этого задача сведения трех записей в одну группу решается элементарно.

    Для более обобщенных случаев почитай про метод кластеризации (машинное обучение ) https://ru.wikipedia.org/wiki/%D0%9A%D0%BB%D0%B0%D...

    Но он в свою очередь потребует для твоих векторов { x1,x2,x3,x4 } ввести некую меру дистанции
    чтобы понимать насколько далеко один вектор убежал от другого (и не только по длительности звонка
    но и возможно по номеру А и Б).

    Это все сложные методы и я все таки повторю что лучше твою задачу решить простым способом
    если твой преподватель конечно не требует таких извращений.
    Ответ написан
  • Torrent клиент. Скачать файлы по "маске"?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Посмотри transmission-cli. Может там есть. Я им пользовался но для очень простых случаев когда 1 файл был.
    Ответ написан
    Комментировать
  • Не запускается код из-за ошибки Process finished with exit code 1, почему?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    У тебя
    Tables.check();
    не обрабатывает исключение.
    Ответ написан
  • Как исправить ошибку в python?

    mayton2019
    @mayton2019
    Bigdata Engineer
    В таблице users уже есть пользователь с таким id. Бери следующий id.
    Ответ написан
  • Нейронные сети - как правильно подсчитать производную функции?

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    Тебе надо читать документацию по этой библиотеке (com ?):

    char c = com.ReadChar(successFlag); // read a char

    и узнать что конкретно она возвращает в виде пустоты.

    Она может возвращать знаковое отрицательное число (int) -1 в качестве признака например.

    А для char - никакой пустоты не бывает. Обычно char - это 8 или 16 бит беззнаковое целое число (завист
    от компиллятора).
    Ответ написан
    Комментировать
  • Как из базы данных MySQL в Java получить результат запроса в виде объекта?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    [maiorow, mWbs0yt, 3, [1,8], [8,9,10,11,12], dir_str, ZXC120, 3, [7], [13], DirLid, ZXC121, 3, [2], [1,2,3,4,5,6,7]]

    Это какая-то чепуха полученная методом toString. Спутались запятые и вообще непонятно где
    объекты начинаются и где заканчиваются.

    Распечатай отдельно чему у тебя равен direction_json и object_types. И я не уверен что они являются
    строками. Возможно на уровне БД это более сложный объект. Короче узнай его тип.
    Ответ написан
    Комментировать
  • Как добавить автоматическое создание симлинков на две последние версии ядра?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Симлинк создается командой
    ln -s file linkfile
    и ты можешь сам это проделать для одного раза.

    Centos и Debian насколько я знаю сильно отличаются по менеджеру пакетов (yum/apt) и
    очень сомнительно что в centos можно переносить какие-то алгоритмы обновления ядер.
    Вернее сказать проще с нуля написать чем переносить.
    Ответ написан
    Комментировать
  • Как определить похожесть комплектации автомобиля?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Я предполагал представить каждую запись в датасете как вектор, и посчитать косинусную схожесть между векторами.

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

    У тебя автомобили содержат просто булевы признаки. Например тип_двигателя_дизель = true.
    И сравнивать тебе выгоднее просто векторы такого вида { 1.0, 0.0, 1.0, 0.0 .... },
    Тут дистанция хемминга была бы проще и вернее.

    По поводу объема двигателя и года выпуска - решай сам. Но при численном сравнении
    у тебя возникнет дилемма крокодила. Типа крокодил более зеленый чем плоский? Или наоборот.
    Грубо говоря какой из параметров будет иметь БОЛЬШИЙ вес в при операциях сравнения.
    Ответ написан
    Комментировать
  • Задание на учебную практику у программистов колледжа?

    mayton2019
    @mayton2019
    Bigdata Engineer
    уровень студентов максимально разнообразный (от прям серьезный умников и умниц, до слабоватых ребят, но которые, тем не менее, что то пытаются делать)

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    Параллелизм и последовательность - это две противоречивые постановки. Тебе стоит
    пересмотреть подход к разработке. Подумай насколько важен для тебя LastEventNumber
    как объект наблюдения человеком. Если он меняется чаще чем 10 раз в секунду то
    вряд-ли он имеет смысл для публикации.

    В паралелльных системах для массовой загрузки например объекты продюсеры захватывают
    диапазоны номеров. Диапазо берется из объекта SEQUENCE. Умножатеся допутим на 10000.
    И получается что перый продюсер захватил номера с 1 до 10000. Второй - захватит с 10001
    до 20000 и так далее.

    Да у тебя не будет строгой последовательности но вопросы коллизий ключкей и performance
    будут решены сразу и не будет issues в будущем.
    Ответ написан
    Комментировать