Задать вопрос
  • Денвер сообщает о нехватке памяти?

    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) протокол по идее помогает.
    Ответ написан
    Комментировать
  • Можете дать рекомендации и советы по ограничениям компьютеров в школах?

    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. И я не уверен что они являются
    строками. Возможно на уровне БД это более сложный объект. Короче узнай его тип.
    Ответ написан
    Комментировать