• С чего начать создание сервиса бронирования на java?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Не существует книг по созданию сервисов бронирования, как курсов вождения по поворачиванию налево при езде на север в ВАЗ 2107. Есть учебники по программированию в общем. Если человек программировать умеет, то напишет хоть что.
    Ответ написан
    Комментировать
  • Для чего в микросервисе задается порт 8080 если не используется http?

    xez
    @xez
    TL Junior Roo
    Например, для обслуживания миксросервисной инфраструктуры (типичные эндпоинты /actuator/; /actuator/health; /actuator/info)
    Ответ написан
    1 комментарий
  • Можно ли создать базу данных на одной таблице?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Да. Такие эксперименты были. Лет 5 назад когда был еще жив sql.ru, один человек продвигал
    модель т.н. квинтетов. Это таблица с 5 полями которая полностью описывала любую
    доменную область. Я к сожалению не могу нигде найти следов описания этой системы
    но возможно это оно https://cyclowiki.org/wiki/QDM . Читайте смотрите.

    Второе. В эпоху новых версий DBMS (Oracle/PG/MySQL) когда мы можем использовать
    JSON/XML внутри ячейки, сама идея EAV теряет смысл. Поле атомарно? Атомарно.
    Значит законы реляционной алгебры мы не нарушаем и JSON совершенно легальный
    тип для реляционок. Хотя лет 30 назад его использование было-бы кощунством
    в БД. Но это можно было списать на жесткую экономию ресурсов и чрезмерную
    математичность моделей Бойса-Кодда. Сегодня все используют JSON и нет никаких
    архитектурных доводов против. Поэтому создавайте NoSQL табличку где есть
    key и есть значение в виде либерального типа документа. Как делают MongoDb, CouchDb.
    И если связать их в иерархию то получится вполне себе те-же самые квинтеты.

    Про EAV лучше забудьте. Их любят преподаватели SQL и теоретики. Но практически EAV
    слишком медленно работает чтобы развивать его в бизнес-приложении или в промышленности.
    Мир тяготеет к упрощению. И поэтому JSON - это упрощение EAV. И работает быстрее.
    Ответ написан
    6 комментариев
  • С чего начать изучать разработку приложений под Linux?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Если ты хочешь программировать под Linux то тебе нужно знать функции ядра Linux.
    Это так называемые syscalls. Системные вызовы. Работа с файлами. С сокетами.
    С объектами мультизадачности (mutex). Языки могут быть любые но принципы
    будут примерно одинаковые.

    +Надо определиться с доменной областью. Вряд-ли вы будете писать системный софт.
    Системщиков вообще мало и пишут они очень узко. Скорее всего это будет что-то прикладное
    поэтому надо искать прикладные задачи и искать типичный профиль такой прикладной задачи.
    FastCGI приложение например там или ETL процесс или какие-то сетевые штуки. Ищите
    практические задачи. Иначе сам по себе вопрос потеряет смысл.
    Ответ написан
    8 комментариев
  • Какие существуют методы сравнения качества изображения?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Я помню что в умных статьях, которые сравнивают алгоритмы сжатия типа JPEG/J2k/Lurawave
    часто приводили параметр PSNR (Peak signal-to-noise ratio) и на базе него пытались
    построить какие-то выводы. Период этих революций сжатия приходился примерно на 2000-е годы.

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

    В случае когда картинок много и мы не можем определить где оригинал то я-бы предложил
    смотреть спектры высоких частот. Где их больше - там и предположительно оригинал.
    Если с изображением работали (scale, фильтры) то обычно метрика высоких частот будет
    слабее выражена.

    Вобщем сравнивать вам придется не по 1 параметру а по вектору. Увы-увы... в наше современное
    время маш-обучения сравнение векторов это нормально. Так и должно быть.
    Ответ написан
    3 комментария
  • Что нужно знать начинающему системному администратору?

    @brar
    ///После недельного простоя, мне звонят и приглашают на стажировку////
    Значит, опытные спецы за ту зп, которую они предлагают даже не откликаются. Взяли Вас "На стажировку". Это и правда и нет, одновременно. Вы друг друга нашли, скажем так.
    Выжмите максимально опыт в практике из этой хитрой конторки. Главное - не сильно себя вините, если что-то сломается, а на вас будут наезжать. Отвергайте любые обвинения в случае простоя. Далее, как поднатореете, через месяцев 12 ищите нормальную, которая понимает объёмы и ответственность IT-специалиста за простои в работе и платит в ~2 раза больше.

    По теме вопроса: первое, на что обратить внимание - на критичность того ии иного сервиса. Прям подойти к боссу и спросить - "что должно работать весь рабочий день?". Телефония? БД? 1с? Без чего прям кранты? К тому сервису и направьте своё максимальное внимание. Смоделируйте на практике восстановление БД из резервной копии. Файловый сервер. Сотрудник уволился, грохнул все свои наработки/файлы, логины на торговых площадках, почтовую переписку etc. Промониторить доступы предыдущих сотрудников на администратиыный доступ к каким-либо сервисам/серверам/роутерам/площадкам.
    Ответ написан
    Комментировать
  • Почему модуль rust не видит другой модуль?

    GONJY_MONJY
    @GONJY_MONJY Автор вопроса
    В поисках новых горизонтов
    Ответ оказался до жути простым
    Я забыл добавить модуль своих моделей в main.rs файл:
    mod entities;
    Ответ написан
    Комментировать
  • Какие решения существуют для индексированного поиска по десяткам полей огромных таблиц?

    mayton2019
    @mayton2019
    Bigdata Engineer
    В реляционных БД нельзя сделать серебрянную пулю которая всегда будет успешно стрелять.
    Чаще всего в БД делают так. Анализируют какие группы запросов наиболее тяжелые
    и пытаются материализовать по 1 mat view на каждую группу.

    Можно сделать более детальный партишенинг (у вас шардинг) тами образом чтобы искомые данные
    всегда лежали в маленькой части таблицы.

    Поиск идет в одной из шард, определяемой по дате.

    Попробуйте более детальную дату. От суток - к часам. От часов к минутам.

    Для поиска используется 2-3 поля, которые являются какими-либо идентификаторами, сильно сужающими выборку (до нескольких записей в пределах нужной даты).


    Если у вас есть тренд на использование 1-2 дней (оперативная информация)
    то отгрузите этот опер-период в отдельную свехр-быструю БД (Redis)
    и сгенерируйте все возможные комбинации запросов и ответов.

    Звучит странно но такая материализация может быть выгоднее чем точечные
    запросы (которые у вас не являеются OLTP т.к. возвращают в общем случае
    более чем 1 строку).

    Есть несколько отделов: операционный центр, диспуты, коллекторы, бухгалтерия, аудит, комплаенс, профильные отделы по разным группам транзакций, сопровождение бизнеса и другие. В отделах есть разделение на функции, и в итоге им нужны множества атрибутов для поиска. Всего получается заметно больше 50 множеств, что делает невозможным создание частично индексированных реплик под каждую такую группу пользователей.

    Здесь я не очень понял, является ли указание отдела взаимоисключающим. Но попробуйте
    подумать направлении фасетов (facets). Это почти тот-же партишенинг-шардинг но ключ
    партишенинга будет сочетанием нескольких атрибутов.
    Ответ написан
    Комментировать
  • Утечка DNS или как соц. сети узнают мое местоположение?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Существуют базы (IPLocation) которые связывают IP адрес и локацию (Обычно Страна-Регион).
    Точность связности при этом очень грубая. Вряд-ли можно узнать что-то подробное.

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

    А само приложение Инстаграм и Тик-ток не знаю... Проходило ли хоть раз проверку на безопасность.
    Какую информацию приложение знает о профиле телефона? Что оно передает по своему протоколу?
    Да что угодно. Вот я-бы и передавал что угодно если-бы был заинтересованным в сборе сведений.

    Бесплатные VPN/Proxy и прочие анонимайзеры здесь не помошники а скорее инсайдеры.
    Забезплатно они скорее вас сольют быстрее чем окажут помошь. Поэтому им ни на копейку
    доверять нельзя.
    Ответ написан
    Комментировать
  • Плавный переход анимации атаки от шага до бега?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Тут - сложно. Физика я имею в виду. Шаг от бега отличается тем что шагающий всегда касается земли.
    А бегущий как-бы делает прыжки по воздуху.
    Ответ написан
    Комментировать
  • Как ведут себя данные при удалении?

    mayton2019
    @mayton2019
    Bigdata Engineer
    В реляционных БД не существует гарантий относительно порядка записей внутри таблицы. Этот порядок
    - это особенности технической реализации хранения данных внутри блоков и сегментов. Это - "know how"
    и это будет зависеть от типа DBMS (Postgres, MySQL, Oracle) и от типа таблицы (heap, index-organized, clustered e.t.c)

    Если говорить грубо, то записи (data-rows) лежат не плотно а вразнобой с пробелами с выравниванием
    к блокам. Ну тоесть вообще-вообще не так как в Excel. Удаление data-rows в Postgres насколько я помню
    физически не удаляет запись а помечает ее мертвой используя служебные поля. Впоследствии VACUUM
    делает работы по уплотнению.

    Поэтому порядок ты сам обеспечиваешь, делая запрос с опцией ORDER BY some_date_time.
    Ответ написан
    1 комментарий
  • Как часто стоит открывать и закрывать соединение при записи в БД из Kafka?

    mayton2019
    @mayton2019
    Bigdata Engineer
    В самом вопросе есть какой-то конфликт интересов. С одной стороны сессии БД надо экономить.
    Тоесть нужно их закрывать. С другой стороны реакция на это сообщение в БД должна быть быстрой.

    Мне кажется что без какого-то дополнительного SLA или штрафов со стороны бизнеса, этот вопрос
    просто невозможно решить.

    Я-бы еще этот вопрос рассмотрел в суточной нагрузке. Если например событие с кафки приходят
    от кассовых аппаратов то их надо обработать обязательно в течение дня. Тоесть БД должна быть
    открыта всегда. Ну а на ночь можно изменить режим работы косньюмеров и сделать их более
    вялыми и дать возможность ночным джобам поработать в БД спокойно.
    Ответ написан
    Комментировать
  • Почему начинает прыгать скорость торрента?

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

    Надо спросить почему канал между тобой и другими владельцами ресурса стал прыгать.
    Торрент здесь скорее всего непричем. А причем может быть провайдер, который регулирует
    (shaper) скорость к частным направлениям.

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

    Вот иди и проверяй все эти версии.
    Ответ написан
    Комментировать
  • Как выводить цифры числа слева направо?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Можно делать накопление числа в строку а потом в конце перевернуть ее

    >>> "".join(reversed("улыбок тебе дед макар"))
    Ответ написан
    1 комментарий
  • Причина падения ЛВС?

    martin74ua
    @martin74ua Куратор тега Компьютерные сети
    Linux administrator
    не используйте неуправляемые коммутаторы. Используйте управляемые, читайте их логи, смотрите за их состоянием. Это если в двух словах.
    Ответ написан
    Комментировать
  • MikroTik, есть ли инструкция по правильной настройке IS-IS?

    @Strabbo
    вот какие порты использует данный протокол, чтоб ему разрешать передачу трафика через firewall

    Он не использует IP протокол, соответственно никаких портов там нету. IS-IS использует протокол CLNS.
    можно ли огранить отправку маршрутов по аналогии с OSPF filter rules или же данный протокол работает совершенно по-другому

    По стандарту фильтрация работает из одной area в другую или же с Level 2 в Level 1 и наоборот. + может какой то вендор добавил свои методы фильтрации.

    P.S. как ISIS работает в микротике понятия не имею :)
    Ответ написан
    1 комментарий
  • Какое сетевое оборудование выбрать: Mikrotik или Zyxel?

    @Zerg89
    150+ про Zyxel точно можно забыть а микротик брать от rb40xx в паре с 7мя 48 портовыми коммутатрами минимум
    Объясню сразу два простых правила
    1)1 место 2 розетки пк +sip
    2)2 правило смотри первое правило
    А для 300+ сразу смотрите в сторону chr в нормальном сервере
    Ответ написан
  • Как правильно использовать внешние библиотеки на 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
    Т.к. мы не можем сделать выборку всех заказов в статусе X, т.к. их очень много, но мы и не можем сделать выборку с лимитом т.к. не знаем точно, что данные заказы будут оплачены платёжной системой Y и наоборот, если будем строить выборку от оплат. В общем получается, что мы решаем вопросы, которые легко решены в БД, но мы их пытаемся решить в коде. Как поступать то?

    Это типичная проблема которая возникает после распила монолита на части. Если раньше
    монолит ходил в базу и делал любые SQL, то после разделения отвественностей уже такие
    игры не работают.

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

    Вот и есть правильная микросвервисная архитектура.
    Ответ написан
    Комментировать