Задать вопрос
  • Какой файловый менеджер с веб интерфейсом использовать для производства?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Очень сумбурно изложено. Но мне кажется что автору нужно
    - система версионного контроля (git)
    - индекс для поиска по содержанию файлов (lucene, sphinx, elastic)
    - веб интерфейс (их наверное очень много и надо искать отдельно)
    Ответ написан
    Комментировать
  • Как отслеживать изменения на сайте?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Это сложный вопрос и вобщем на 99% он зависит от дизайна самого сайта.
    Сайт вам вобщем -то ничего не должен предоставлять для трекинга информации.
    Но согласно HTTP-протколу например GET/HEAD может вернуть заголовок документа
    где будет много интересного.

    Например артифакт gravitee-am-repository-api-4.4.4.jar внутри maven repository
    хранит много метаинформации о себе. Например etag (контрольная сумма md5)
    и last-modified метка времени которая показывает как давно обновлялся
    документ.

    $ curl --head https://repo1.maven.org/maven2/io/gravitee/am/repository/gravitee-am-repository-api/4.4.4/gravitee-am-repository-api-4.4.4.jar
    HTTP/2 200
    etag: "3f5e67c1a10ded796a27108ba3756823"
    content-type: application/java-archive
    last-modified: Mon, 19 Aug 2024 13:49:25 GMT
    x-checksum-md5: 3f5e67c1a10ded796a27108ba3756823
    x-checksum-sha1: 4ac91e2e6d1cfd393c505e6a8db6bf0031dcc517
    via: 1.1 varnish, 1.1 varnish
    accept-ranges: bytes
    age: 0
    date: Mon, 19 Aug 2024 22:52:11 GMT
    x-served-by: cache-iad-kcgs7200147-IAD, cache-fra-etou8220101-FRA
    x-cache: HIT, MISS
    x-cache-hits: 2, 0
    x-timer: S1724107932.544121,VS0,VE90
    content-length: 71040


    Если вам повезет - то можете использовать эти атрибуты как метод трекинга обновлений.
    Ответ написан
    Комментировать
  • Как организовать умное кеширование MYSQL?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Можно попробовать материализовать какие-то срезы главной таблицы для
    быстрого извлечения информации. Классифицировать
    оперативные типы запросов и для каждого класса создать материализованную view читать оттуда.
    Структура mat-view может быть денормализованной например
    CREATE TABLE mview1 (id varchar primary key, doc JSON);

    Формат документа может быть произвольным но главное что он должен
    собирать ровно те сведенья которые нужны для responce ни больше ни меньше.

    По поводу быстрого извлечения 100 тысяч datarows из 2 млн. Это вызывает у меня
    большое изумление. Для кого эта выборка? Человек-оператор не успеет прочитать
    эти строки
    за разумное время. А для фоновых задач типа jobs скорость отлика вообще
    не важна. Особенно если джобы работают ночью например и еще и объединяются в пакет.

    И если у вас идет неравномерный доступ к таблице то возможно имеет смысл разделить
    ее на union из двух таблиц типа hot_data + historical_data. Это потребует переписывания
    софта но зато у вас будет очень рациональное использование индексов. Они будут маленькие
    и соотв. не будел вытеснения индексных страниц из кеша страниц.

    Вот. Разделить можно по дате создания бизнес-факта или по другим вризнакам где есть date+time.
    Ответ написан
    6 комментариев
  • Чем подобрать кириллический пароль из словаря к rar архиву?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Мне кажется что успех мероприятия очень сильно зависит от версии RAR.
    Начиная с 5.0 автор внедрил настоящий AES/128/256. Это очень сильный
    симметричный шифр. Он-же опционально работает в браузерах при
    соединении TLS/SSL. Тоесть я-бы первым делом наудачу чекнул по заголовкам
    чем был сжат оригинальный архив.

    Если hashcat работает с кириллицей то тебе не нужны программы. Тебе любой Python-программист
    или PHP сделает список txt всех кириллических паролей от ААААААА до ЯЯЯЯЯЯЯ.
    Это очень простая работа для учащегося 1 курса универа. На 1 story point.
    Ответ написан
  • Как происходит перехват трафика?

    mayton2019
    @mayton2019
    Bigdata Engineer
    wireshark - имеет параметры. И он слушает список сетевых интерфейсов которые ты указал в параметрах
    запуска.

    Usage: wireshark [options] ... [ <infile> ]
    
    Capture interface:
      -i <interface>, --interface <interface>


    Если какой-то IP-пакет попадает на интерфейс - то он будет зафиксирован.
    Ответ написан
    Комментировать
  • Решение для 3D симуляции физики?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Вот тут внизу список хороший есть https://en.wikipedia.org/wiki/Physics_engine
    Ответ написан
    Комментировать
  • Почему различаются картинки?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Возможно Discord при трансляции видео использует дешевые алгоритмы сжатия
    которые дают толи dithering, толи квантование. В любом случае это тебя не должно
    волновать.
    Ответ написан
  • Насколько целесообразно использовать ленточную схд для продакшена?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Главное преимущество ленточного хранения - это то что производитель кассет гарантирует срок хранения
    до 20 лет (кажется). При правильной температуре и влаге. Поэтому выбор кассет может быть обусловлен
    этим. Магнитные диски и SSD не гарантированы таким сроком.

    Насколько я себе понимаю storage classes для AmazonS3/Microsoft Blob (у них есть классы archive, iceberg)
    это и есть дисковые интерфейсы к ленточным устройствам. Если у вас есть подписка - то вам вобщем-то
    ничего не надо покупать а лишь переключить класс хранения для всех файловых объектов в скоупе
    хранения.
    Ответ написан
  • Как проверить, что строка содержит только цифры и символы?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    public static boolean isDotOrDigit(String s) {
            return s.chars().allMatch(c -> Character.isDigit(c) || c == '.');
    }
    Ответ написан
    2 комментария
  • Денвер сообщает о нехватке памяти?

    mayton2019
    @mayton2019
    Bigdata Engineer
    По поводу data44.csv и прочего.

    Обычно разработчики не прогружают файлы целиком в memory. Это опасно.
    Файл имеет право во много раз превышать оперативу по размеру. И даже если
    тебе кажется что файл (влезет) на глазок, то будучи сериализованным в PHP
    array он может иметь накладные расходы.

    Для альтернативы var_dump попробуй распечатать его по строкам

    while (($data = fgetcsv($file, 15, ";")) !== false) {
        print($data);
    }
    Ответ написан
    4 комментария
  • Какая ширина канала нужна для видеохостинга?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Скорее всего ширина канала видеохостинга - это метафора. Тоесть ее конечно можно
    посчитать если у нас есть 2 хоста в сети. Клиент и сервер. В случае с YouTube, Netflix
    у нас есть много клиентов и есть много S3/BlobStorage хостов которые децентрализованы
    географически и ваш софт выбирает то хранилище которое ближе к вам. Ну ближе не в смысле
    километров а в смысле througtput.
    Ответ написан
    Комментировать
  • Какие книги прочитать чтобы написать свою операционную систему?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Мне кажется что это блажь. Операционные системы в наше время люди не пишут.
    Ее написать невозможно по причине бесконечных технических требований которые
    мы (читатели хабра) применяем к этому термину. И если вы по каким-то причинам
    будете сокращать или вычеркивать эти требования - то на выходе будет не ОС
    а некий программный продукт который содержит подмножество функций ОС.

    Я вам советую отказаться от мега-постановки и сначала просто написать свой загрузчик.
    После этого посмотрите и подумайте стоит ли дальше двигаться. Если вы хотите все таки
    писать свою ОС - напишите план разработки и перечень фич которые вам надо будет
    реализовать (файловая система, консоль с интерпретатором команд, какой-то менеджер
    процессов).

    Написание своей уникальной ОС - это дорога длиной в жизнь.

    Если писать не свою ОС а клонировать имеющиеся проекты то надо тоже на этом акцентировать
    внимание.
    Ответ написан
    7 комментариев
  • Как замокать StringJoiner?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Тебе не нужно мокать StringJoiner. Это точно тестовый антипаттерн потому
    что сам по себе Стринг джойнер не является источником данных. Это все равно
    что мокать функцию синуса или квадратный корень. Это просто звучит как бред.

    А мокать тебе надо твою бизнес логику которая продуцирует данные для другой
    бизнес логики которая тестируется. Вот.
    Ответ написан
    Комментировать
  • Большое кол-во записей в секунду в 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) протокол по идее помогает.
    Ответ написан
    Комментировать