Задать вопрос
  • Почему мерцает лампа при включении в ИБП?

    mayton2019
    @mayton2019
    Bigdata Engineer
    ИБП бывают разные по качеству. Некоторые выдают чистый синус на выходе. Некоторые - такую
    дискретную ломаную кривую. Как после квантизации. Возможно ты подсадил ИБП и ему стало еще хуже.
    Вообще я-бы на твоем месте не включал 95 Вт. Купи светодионое устройство. В люменах будет тоже
    самое а по мощности слабее.
    Ответ написан
  • Как правильно залить БД?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Найди дубликаты в wp_actionscheduler_logs по ключу log_id и поудаляй их.
    Ответ написан
    9 комментариев
  • Как скачивать медиа из инстаграма по ссылке пользователя, чтобы инстаграм не блокировал запросы?

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    DTO объекты часто пересекают границы Языков (Java/JavaScript/GWT) и сетевых протоколов (Rest/Graphql/SOAP/Avro).

    И эти объекты могут нести на себе семантику только чистых данных. Вы не сможете через сеть
    из Java в C# например передать интерфейс или объект с методами.

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    Твоя задача может быть решена конфигурацией consumers вот как тут пишут https://www.baeldung.com/kafka-send-data-partition

    Но мне кажется что тебе выгоднее решать такое разделением на топики а не на партишены.
    Партишены - все таки больше для affinity, баланса нагрузки чем для разделения на бизнес-кейсы.
    Ответ написан
    2 комментария
  • Как найти фантомный бинарник Caddy, который мне не нужен?

    mayton2019
    @mayton2019
    Bigdata Engineer
    У меня lsof показывает среди прочих файлов и сам бинарник

    $ lsof -p PID
    Ответ написан
    Комментировать
  • Как сделать запрос на поиск 6 значений в одной таблице и 1 значения в другой, имеется не оптимизированный запрос с ILIKE?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Непонятно зачем ты конструируешь ILIKE когда у тебя идет поиск цифр и нет
    case-insensitive алгоритмов. Упрости, чтоб было системе проще.

    Про триграммы тут уже напихали. Нечего добавить.

    Есть идея попробовать следующее. Можно конкатенировать все искомые поля в одно большое
    виртуальное поле и построить по нему реальный триграммный индекс. Здесь мы сэкономим на количестве.
    Вместо 5 индексов сделаем один и результат будет тот-же самый. Нам по сути безразлично
    в каком поле найдена строка. Важно что просто была дизьюнкция предикатов.

    CREATE TABLE messages(
        .......
        all_fields text GENERATED ALWAYS AS (CONCAT(sender,' ',message,' ',receiver,' ',sim))
    );
    
    CREATE EXTENSION IF NOT EXISTS pg_trgm;
    
    CREATE INDEX messages_tr_idx ON messages USING GIN (all_fields gin_trgm_ops);


    Точно так-же поступить с табличкой user_apps.

    По поводу этого ограничителя.

    ....
    order by "messageId" desc 
    limit 51 offset 0

    Судя по всему - это дизайн запроса для показа на UI. Обычно так делают чтобы
    показать на формочке веба или в приложении.

    Limit и order - это плохая комбинация. Если смысл сортировки по messageId - это показать
    последние (оперативные) сообщения то я-бы заменил это на поиск по партишену сегодняшнего
    дня
    (или опер-дня) если можно так сказать.

    Разделение данных на оперативные и исторические ускорит поиск многократно. И если
    допустии опер-день занимает 500 тыс строк а исторические данные - 13 млн. То вы
    сразу получаете вместо 80 секунд ускорение ... эээ в сколько раз? 500 000/13 000 000 = x/80
    это будет примерно 3 секунды. Вот. Это если предполагать линейную зависимость от объема.
    Ответ написан
    Комментировать
  • Нынешние реалии стандарта Java?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Каковы нынешние реалии стандарта языка? Используются ли в каких-то моментах фишки новых версий (если это вообще возможно)? Ибо судя по всем статьям, практически большинство до сих пор сидит на восьмёрке.

    Да. Это отчасти правда. Основные заказчики Java разработки - это банки. А они не любят миграции версий
    без какой-то особой причины. Я работал с тремя банками и я могу сказать что большая часть кода - это
    легаси. И совершенно нет никакой надежды что будет bump версии языка. Product owner-ы в таком случае
    задают вопрос - "а что мы с этого будем иметь". И обычно для банка - ничего особенного. В некоторых
    случаях (использование CORBA или JAXb, com.sun.*) повышение версии чревато проблемами. Что-то
    может резко отвалиться в новой версии.

    Самые интересные новшества после JDK8 с моей точки зрения были не в языке а в других слоях JRE/JDK (GC, FFI, vectorization, unmanaged memory). Но вы еще попробуйте эти новшества продать бизнесу. Успехов вобщем.
    На какой версии лучше всего практиковаться в написании кода, да и обучаться в целом?

    Да. Ты можешь брать самую последнюю LTS-версию. Брать preview нет никакого смысла. Очень
    сомнительно что для учебы тебе кто-то даст в туториалах экспериментальные фичи. Скорее наоборот.

    Есть ли вообще предпосылки на переход большей части энтерпрайза в ближайшем будущем (ближе к 2030) на более современную версию? Почему тезис о дорогом переходе не нивелируется тем, что за 10 лет со времён восьмёрки завезли достаточно "контента", например, новый синт.сахар и обновленный GC?

    Никакого глобального перехода на самом деле нет. Потому что нет такой проблемы.
    По сути проблемой например для Java 21 может стать "end of extended support" а он условно отмечен
    например на 2031 год. Вы еще попробуйте доживите до этого года и попробуйте сидеть на одном проекте
    столько лет.

    Java может стать COBOL-ом XXI столетия. Но у нее будет даже меньше проблем чем у Кобола, потому что
    байткод и стек-машина имеет больший потенциал. Тоесть пока жива концепция байт-кода и пока существуют
    процессоры Фон-Нейман архитектуры, можно сказать что Java неубиваема.

    Вообще не стоит вам сильно циклиться только на языке. Параллельно существуют Scala, Kotlin, Groovy, Clojure
    и их само существование делает много альтернатив. Одна JVM - бесконечное число языков.
    Ответ написан
    3 комментария
  • Через какую программу перевести текст цветной с таблицами в электронный вид (Книга Английского Соловов В.Н)?

    mayton2019
    @mayton2019
    Bigdata Engineer
    То что в таблицах - не надо переводить. Перевод будет безсмысленным т.к. речь идет о
    тех формах английского, которые без контекста не существуют или не существуют в других
    языках. Это shall/will, will have to.

    Просто выучи как есть.
    Ответ написан
    Комментировать
  • Увидит ли сисадмин, чем я занимаюсь, если подключиться через Anydesk?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Корпоративный ПК полностью принадлежит корпорации. И все что вы там делаете - фотографируется,
    кей-логгируется и снифферится. И потом хранится в BigData.

    Я советую вам не играть в кошки-мышки с безопасником. Вы все равно проиграете.

    Используйте личный ноутбук для личных дел. И лучше выходить в коридор корпорации или на улицу
    чтобы не было к вам лишних вопросов.
    Ответ написан
    Комментировать
  • Как перехватить исключение pyo3_runtime.PanicException при использовании pandas и calamine?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Если сторонняя библиотека крашит python процесс то вам просто надо запускать
    еще один процесс-камикадзе (excel-kamikadze.py), который даже если падает - не оказывает влияние на основной.
    Эта техника используется часто в акторах Erlang/OTP.

    Как получить данные назад из excel-kamikadze.py. Тут - много вариантов. Можно создавать временный
    файл (XML/JSON куда передавать нужные результаты парсинга). Можно выдать их в поток STDOUT.

    import subprocess
    
    result = subprocess.run(["/usr/bin/python3", "kamikadze.py"], stdout=subprocess.PIPE) 
    output = result.stdout.decode("utf-8")
    Ответ написан
    Комментировать
  • Регулярное выражения для поиска информации?

    mayton2019
    @mayton2019
    Bigdata Engineer
    В Apache Spark обычно нет таблиц. Дата-инженер оперирует абстракциями
    - RDD
    - DataFrame
    - DataSet (почти тоже самое что датафрейм)


    Когда у тебя в одной руке датафрейм - ты можешь уже к нему применить фильтр с регуляркой тип

    df.filter(col("name").rlike("(?i)^*rose$")).show()

    Если сильно хочется - то поверх датафрейма создается View через

    df.createOrReplace......View("view_name")

    И с ним работают.

    spark.sql("SELECT .... WHERE col RLIKE ..... ").show()


    Но это уже такой себе овер-инжинеринг. И если можно решить задачу на уровне датафреймов
    то обычно так и решают. SQL и прочее подключают когда есть JOINS или какие-то особые условия
    (catalyst optimizer нужен).
    Ответ написан
  • Возможно ли создать универсальное решение для процесса синхронизации данных от разных поставщиков?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Если кратко - то да. Можно.

    Если более подробно - то это долго. Мучительно. И где то в конце вы создадите свой собственный
    язык (DSL)
    который будет описывать все бизнес-преобразования данных.

    Общая идея такая. Вы пишете одинаковый софт на Python для всех поставщиков данных а различия
    реализуете как часть конфигураций. Пример (совершенно выдуманный):

    datasources:
      - datasource: Bitcoin
        format: xls
        header: on
      - datasource: Market
        format: csv
        header: off
    
    transformations:
      - name : Bitcoin
        filter: "WHERE payload is not null"
    
    sink:
      - name : Bitcoin
        dest: jdbc:thin:oracle@....

    Существует разумный баланс между DSL и частным решением для каждого провайдера
    данных. Например с точки зрения передачи знаний для новых разработчиков решение
    на DSL всегда плохое. По личному опыту коллегам всегда не нравится то, что вам кажется
    красивым и концептуальным. И чаще всего DSL языки тихо умирают с уходом с проекта
    главного создателя и идеолога этих всех DSL.

    В качестве основы для DSL не обязательно нужен Yaml. Это можно делать на Python, Lua, Lisp
    и вообще даже на основном языке. Главное чтобы конфигурационная часть была декларативной
    и не содержала циклов и проверок условий.
    Ответ написан
    1 комментарий
  • Как сделать нечёткую кластеризацию текстов?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Тебе нужно во первых поставить задачу в терминологии векторов (VectorDb, spark.mlib, pandas).
    По сути надо сделать top 3 максимально близких жанровых вектора к текстовому описанию игры.
    SELECT 
     distance(v_genre, v_game) as dist, genre, game 
    FROM
     genres, games
    .....
     (select top 3 by dist for each game)
    Ответ написан
    Комментировать
  • Хостинг не до конца выполнил услуги, файлы потеряны, кто виноват?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Я думаю что нет смысла ходить в суды. Суд будет смотреть в то что написано в договоре. А там про
    бэкапы скорее всего будет написано в общих словах. И если ты в течение месяца ни разу не сделал
    backup то ты - плохой поросёнок. На будущее - всегда делай backup. Делай backup когда дела идут хорошо.
    И у тебя не будет ситуации когда надо срочно-срочно.
    Ответ написан
    6 комментариев
  • Как создать хранилище с raid 1?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Raid в домашних условиях никому не нужен. Просто не летает эта тема.
    Купи обычный USB 3.0 portable drive в резиновом корпусе. А лучше два. И пиши бэкапы
    туда в шахматном порядке.
    Ответ написан
  • Как составить список уникальных комплексных решений для уравнения? Как понять что число 0.999999 то же что 1.0000001?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Можно методом Монте-Карло перебирать все случайные решения на всей области определения.
    Потом - делать квантизацию (так чтобы такое значение 0.99999 равнялось такому 1.000001)
    и квантизованные пары (ключи) складывать в какую-то хеш-табличку с подсчетом.
    Триллион итераций ждать не будем. Может быть где-то через тысяч сто у нас будет
    гистограмма. И бери из нее top 10 значений. Это и будут твои 10 уникальных.
    Ответ написан
    1 комментарий
  • Как "склеить" два файла?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Самый простой вариант - редактирование сегмента данных не трогая код. Забиваешь
    нулями дополнительный резерв места в строке.

    section .data
        error_message db "Hello byte, hello word", 0, 0,0,0,0,0,0,0,0,0,0,0,0


    Потом в hex редакторе просто передвигаешь слово вправо не забывая что ASCIIZ строка обязательно
    должна закончистя нулем.
    Ответ написан
  • Имеет ли смысл добавлять первичный ключ в таблицу?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Есть два важных смысла в ПК. Первое - это реляционная алгебра. Про это написанно миллиард
    книжек и все преподаватели тебя зачморят если в таблице нет ПК и foreign key constraint не будет
    работать.

    Второе. Если ты создаешь например CREATE TABLE .... (.... PRIMARY KEY..); то бесплатно
    бонусом получаешь создание индекса
    по полям где есть ПК и соответсвтенно поиск по ПК
    будет идти очень быстро и не будет дубликатов.

    Но в современном мире понятие "данные" стало очень широким и в базах очень часто лежат
    таблицы без ПК. Это staging table (куда идет загрузка из внешних источников), логи и отчеты.
    И аналитические представления. В области bigdata данные часто лежат в файлах (parquet, orc, delta)
    и там вообще ПК нету. И ничего. Работает.
    Ответ написан
    Комментировать