Задать вопрос
  • Почему jar не проигрывает звук?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Ты прикалываешся такие молчаливые выходы делать?
    System.exit(-1);
    Пиши println... там вышли с таким-то кодом ошибки. Вообще если тебе лень придумывать имена чекпоинтам
    - делай просто нумерацию. ":1", ":2" и по ним будешь понимать где вылет был.
    Ответ написан
  • Как реализовать кроссплатформенную поддержку Unicode в аргументах командной строки в C?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Тебе проще всего посмотреть как эта задача уже решена в других Windows/Linux проектах.
    Я думаю что ты тут не первооткрыватель. Уже решали эту задачу миллион раз.
    Ответ написан
  • Как часто используется Spring Security? Стоит ли его учить джуну?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Ты пришел в хабр спрашивать что учить? У хабра нет учебного плана.
    План бывает на курсах которые обучают Spring. Найди любой курс и
    посмотри какую последовательность знаний о Spring они предлагают.

    Spring Security это не та тема с которой обязательно начинать.
    Ответ написан
  • Как правильно написать условие запрета повторного ввода символа "." в Action Script 3.0?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Action Script - это как Cobol в наше время. Разработчики отрастили седые бороды и померли.

    Проверь что
    имя_текстполя.text
    не пустое.

    Проверь какое числовое значение возвращает
    имя_текстполя.text.indexOf(".")

    Это и будет скорее всего ответ на твой вопрос
    Ответ написан
  • Как добавить сторонний репозиторий в Tails?

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

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

    Грубо говоря твои посторонние программы - это ложка дёгтя в бочке меда Tails.

    Если сильно нужны посторонние программы - то подумай стоило ли тебе вообще брать Тайлс.
    Возьми Убунту.
    Ответ написан
    Комментировать
  • Какой курс Java выбрать новичку с нуля?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Нужен ментор, который шпыняет каждый день и ставит сроки. Иначе ничего не будет. Через неделю
    у тебя энтузиазм прогорит и ты пойдешь шпилить в PUBG.
    Ответ написан
  • Какие есть инструменты и решения для экстремально быстрой online-аналитики потоковых данных?

    mayton2019
    @mayton2019
    Bigdata Engineer
    При расчете аналитики (min/max/avg) и прочих оконных функций сам алгоритм имеет лаг.
    Тоесть ты должен понимать что за 1 мс ты можешь анализировать данные в прошлом за окно
    размером к примеру в 100мс.

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    Ну ты можешь сделать исключение ради одного файла и переключиться в Microsoft Edge?
    Ответ написан
  • Как выбрать строку по определенному числу?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Дружище, data quality у тебя ужасное. Такие данные не должны попадать в реляционную БД.
    Лучше их как-то подчистить и нормализовать. И потом и запрос по подчищенным данным пойдет
    быстрее и индекс можно построить.
    Ответ написан
    Комментировать
  • Как найти текст по xpath в requests?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Тут - терминологическая путаница.
    Суп обычно работает с html. Чтоб работать с XPath, нужно преобразовать html в XML.
    И с помощью других библиотек (lxml) сделать это преобразование и далее использовать
    метод xpath.
    Ответ написан
    Комментировать
  • Как эффективно читать сжатый лог файл с S3 бакета в Ruby?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Фреймворк Apache Spark судя по документации умеет работать с zstd.

    https://spark.apache.org/docs/latest/configuration.html

    Я имею в виду что он может извлекать сведентья из архива не распаковывая.
    Но если выбирать между форматами то я-бы посоветовал перепаковать в bzip2.
    Он судя по документации - splittable, тоесть несколько Workers смогут работать
    с архивом одновременно и независимо и таким образом ваш парсер будет быстрее в разы.
    Ответ написан
  • Как получить доступ к логическим дискам на выделенном сервере?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    С помощью Java

    ProcessBuilder.start()

    ты можешь вызывать скрипт операционной системы (bash или Windows CMD) и если
    у текущего пользователя хватит прав то ты можешь увидеть результат работы df например
    $ df
    Filesystem      1K-blocks      Used Available Use% Mounted on
    none              8061940         4   8061936   1% /mnt/wsl
    .....

    потом забрать этот результат через stdout и далее парсить результат в Java.
    Ответ написан
    5 комментариев
  • Где и как хранить файлы пользователей?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Если тебе нужно временное место - то используй системную переменную

    System.getProperty("java.io.tmpdir")

    Или с префиксом и суффиксом - есть готовая функция которая возвращает файл.

    Files.createTempFile("", ".tmp")

    Вместо игр со счетчиком от 0 до 1000 - лучше использовать текущую дату-время или GUID.
    Ответ написан
    Комментировать
  • Чем MSSQL занимает всю оперативную память?

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

    Оно понятно что Express - это такой пробник. Но этот пробник все равно в перспективе перерастет
    в БД. И зачем тебе размениваться на мелочах?

    База всегда брала столько памяти сколько есть. Потому вто буферный кеш БД или кеш блоков
    (его по разному называют) играет роль ускорителя для таблиц и индексов. Грубо говоря
    чем больше блоков в кеше - тем быстрее идет интеракция с data-files.
    Ответ написан
    1 комментарий
  • В каком контексте значение класса String является неизменяемым в отличии от StringBuilder?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Почему все методы StringBuilderнельзя было поместить в класс String, чтобы не плодить классы строк?

    Главный поинт при создании immutable String - безопасность кода. Когда компиллятор точно
    знает что value строки не изменится - то он может доказать много кейсов и гарантировать что
    разделяемая память не будет сломана. Особенно это важно для мультипоточки. Когда
    разные потоки владеют строкой и здесь сам вопрос доказательства вдруг становится очень важным.

    Язык С++ например такой защитой не обладает и для него строка как фундаментальный тип
    может иногда мутировать. Тоесть если вы старались писать правильно то она конечно не мутирует.
    Но в этом есть большая разница между C++ и Java. На уровне платформы гарантировано отсуствие
    какого-то класса ошибок.

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

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

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    Agile не запрещает вам самим писать и согласовывать ТЗ. Для этого есть процедуры типа Груминг и прочее.

    Темпы современной разработки не то чтобы отменяют ТЗ а делают его просто сильно быстро неактуальным
    документом в силу того что бизнес очень быстро меняется
    . Поэтому пишите User Stories. Это и будет
    ваше основание для разработки. Пишите много. Добавляйте линки на Confluence.

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

    Тоесть в самом agile нет ничего контр-продуктивного или вредящего. Agile - это про гибкость.
    А вот для кого по настоящему agile может быть плох - так это для бесполезного специалиста в команде
    которые никакой полезной работы не делает. Он пару спринтов побегает. Посимулирует активность
    и потом будет удален из команды т.к. задач для него не будет.
    Ответ написан
    4 комментария
  • На сколько популярно и корректно хранить данные в столбце в виде JSON строки?

    mayton2019
    @mayton2019
    Bigdata Engineer
    В конце 20-го века, когда Эдгар Кодд развивал свою реляционную теорию было очень
    модно все данные нормализовывать для хранения их в БД. Это соотвествовало экономии
    ресурсов (диски мерялись килобайтами и мегабайтами) и нормализация хорошо ложилась на
    техно-стек. Все данные должны быть атомарны. И ты - плохой DBA и программист если
    кладешь в ячейку что-то более комплексное чем просто атом.

    В 2000х развитие веб и XML(XHTML/SGML, XSLT, XPath) дало толчок новым видам
    хранения информации в виде markup languages. Появляются технологии семанического веба.
    Мечтатели-теоретики создают RDF, OWL. Базы данных пытаются успеть втянуть в себя новые типы.
    Oracle начинает поддерживать XML+Schema как тип данных в таблице. Браузер начинает
    поддерживаеть трансформацию XML и обогащение его стилями. XML - моден. Его внедряют
    везде где можно и где не нужно. Даже в конфигах Apache Http и в сборщике Maven.

    Параллельно Дуглас Крокфорд работает над Java Scrip Obj Notation и создает лайтовый язык
    для описания объектов и документов. Они - конкурируют с XML но JSON практически побеждает
    в вебе, полностью захватывая веб протоколы (Ajax, WebSockets, e.t.c). И интеракцию с сервером.
    JSON становится более популярный для REST. Многие БД тоже начинают поддерживать JSON.
    Postgres даже делает бинарный JSON и добавляет спец-индексы для быстрого поиска атрибутов.
    Узко-специализированные системы такие как Mongo изначально заточены на храннение JSON
    информации.

    BigData плавно проростает в 2007 (кажется) и где-то в 2014 (или позже) году фреймворк Spark начинает поддерживать DataFrames + Structured Types которые по сути являются зеркалом JSON. Фреймворк
    позволяет грузить в бигдату JSON-lines датасеты, автоматически выводя схему.

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

    Если поискать анти-паттерны применения JSON в базах данных - то я-бы предложил такую метрику.
    Если вы очень часто обновляете маленькое поле внутри большого JSON документа и это создает
    сильные I/O нагрузки то скорее всего вам надо перепроектировать вашу БД как-то по другому
    и вынести это поле во вне по отношению к документу
    Ответ написан
    5 комментариев
  • Как работают транзакции в Spring?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Не все режимы изоляции поддерживаются целевой DBMS.
    DEFAULT(-1),
        READ_UNCOMMITTED(1),
        READ_COMMITTED(2),
        REPEATABLE_READ(4),
        SERIALIZABLE(8);

    Перечисление Isolation взято из умных теоретических книжек. Но Oracle к примеру поддерживает
    только READ_COMMITED и SEAIALIZABLE.

    И что ему делать если вы заказали READ_UNCOMMITED ? Поэтому я-бы сказал что Spring делегирует
    гарантии по изоляции к целевой системе.
    Ответ написан
    Комментировать
  • Как правильно обрабатывать SQLException?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Скорее всего коды SQL ошибок зависят от DBMS. Например я по старой памяти помню что если
    в коде вы видите ORA-00001 то вы скорее всего используете Oracle и ваша ошибка
    связана с нарушением Primary KEY во время INSERT/UPDATE.

    Другие DBMS (Postgres/MySQL) будут иметь другие коды ошибок.
    Ответ написан
    3 комментария
  • Как корректно изменить права во всей системе, чтобы others не могли ничего делать?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Правильно написали что по умолчанию ОС и так достаточно безопасна и ничего уже из гаек
    закручивать не стоит
    . Иначе просто что-то перестанет работать.

    Но если ты такой любитель мозохизма - то посмотри в сторону Alpine Linux. Возможно
    там тебе будет еще больше бондажа. Кайфанешь.
    Ответ написан
    Комментировать