Задать вопрос
  • Как правильно использовать внешние библиотеки на Java?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Тебе надо обязательно прочитать что такое манифест
    https://docs.oracle.com/javase/tutorial/deployment...

    Большинство ответов на твои вопросы лежит там. Существуют разные методики упаковки
    приложения в jar-артифакт. Можно делать зависимости внешними. А можно создавать
    так называемый fat-jar (толстый jar) куда будут перепакованы все внешние зависимости.
    Shade plugin, jar plugin и еще много плагинов этим занимаются для maven сборщиков.

    Почитай еще что такое Java9 modules. Это тоже полезно.
    Ответ написан
    Комментировать
  • Как визуализировать магнитное поле?

    mayton2019
    @mayton2019
    Bigdata Engineer
    В школе мы делали такой эксперимент. Клали на магнит толстый лист бумаги. И потом
    сверху сыпали металлические опилки. И трясли.

    После этого опилки выстраивались как-бы в линии магнитной напряженности.
    Вот твоя задача - рассечь катушку плоскостью
    и насыпать виртуальных опилок.
    Ответ написан
  • Как гарантировать последовательную запись данных без пропусков id?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Таблицы на основе генераторов или sequences обычно ствавят главной задачей - обеспечить
    уникальность id в первую очередь
    . С эти sequence справляется.

    Гарантировать блокировку или захват sequence они не могут так как Postgres создавался
    как много-пользовательская БД
    . Тоесть много сессий обладают правом в любой момент
    взять из sequence следующее значение
    . Поэтому требование хронологии - это как эксклюзивный
    лок объекта. Слишком жесткое требование. И никому не нужное. Если б так БД работали то
    они теряли бы в производительности и ждали-бы чтоб какая-то главная сессия отпустила таблицу.

    Выход есть - брать ранг записи извне. Тоесть само приложение должно быть поставщиком
    таких номеров. А БД будет просто их вставлять.

    Еще вариант - в уже после загрузки обновить одно полей одной транзакцией как row_number
    сортируя по любому признаку.
    Ответ написан
    6 комментариев
  • Почему 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 комментариев