Задать вопрос
  • Как в Reactor запускать параллельные запросы?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    В том виде как ты написал - это классическое задание на мультипточность.
    Убери Mono. Используй Thread, Runnable, start, join

    Реактор здесь не нужен или его использование не мотивировано.
    Ответ написан
    1 комментарий
  • Мой код слишком громоздкий?

    mayton2019
    @mayton2019
    Bigdata Engineer
    1. pinic3..pinic6 можно не вычислять а вставить прямо в printf выражение.
    2. Обычно во всех пользовательских вводах делают больше проверок. Например проверяют что введено
    неотрицательное число сосикок. Казалось-бы пустяк. Но если подумать что это торговый автомат и дело
    касается денег - то такие баги вовсе не пустяк.
    Ответ написан
    1 комментарий
  • Почему начинает лагать программа запущенная в несколько копий?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Напоминает игру "Сапер".

    Возможно в WinForms не эффективно реализован поиск компонентов по имени
    Controls.Find("checkBox" + i, true)
    Да и вообще 256 элементов - для рантайма тяжело. Наверное они слишком громоздкие
    и интеллектуальные чтоб делать из них сетку объектов. Тоесть это не те WindowsGDI объекты.
    Это дотнетовские объексты со своей обвязкой. С очередями сообщений и прочее.

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    Смотри. Уже прошло время когда все пилили монолиты на микросервисы. Щас пошло переосмысление.
    Объективно есть 2 причины пилить. Первое - организационная. Команда по какой-то причине не хочет
    или не может поддерживать приложение. Или там что-то с бизнесом. Слияние. Поглощение. Передача
    проекта другой команде в поддержку. Тогда берут и ставят задачу раздела отвественностей.
    Конвей про это писал еще.

    И второе - это баланс нагрузки и децентрализация. Про failover тут еще даже речи нет. Это
    тяжелая тема и распилить монолит так чтобы его части были отказоустойчивы очень трудно. Более
    того в случае синхронных взаимодействий между частями микросервисов может быть даже падение
    перформанса
    . Да. Теоретики которые там пишут восторженные отзывы - совершенно игнорируют
    накладные на RPC. И не упоминают что в монолите цена RPC была равна нулю. Иногда RPC заменяют
    на MQ - но это новая архитектура и это надо полностью переделывать бизнес.

    И что делать с базой данных? Это тот еще вопрос. Я почти готов спорить что вы базу пилить не будете.
    И что в результате будет? Иммитация микро-сервисов? Где слабая связность?

    Тоесть если у вас нет таких кричащих ситуаций что оргазниация требует или нужно баланс
    нагрузки как-то разнести - то тебе вообще-вообще нет смысла ходить ни в какие микросервисы.

    Но имеет смысл сделать модуляризацию монолита. Например что там...
    application
    - sales
    - hiring
    - userprofiles

    Тоже очень полезно для управления сложностью. И пускай себе будет монолит зато будет сильный
    контроль за изменениями.
    Ответ написан
    6 комментариев
  • Что за шифр или комбинация шифров?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Дружище так нельзя делать. Криптоанализ предполагает что ты знаешь что ищешь.
    Из какого приложения ты это скопировал? Что ожидается? Хешированный пароль?
    Магнитная ссылка? И мы должны знать контекст. А может ты взял задачу на cryptohack
    и пришел сюда за подсказкой? Так нельзя! Иди в тот форум и там спрашивай.

    У них условие даже есть что участники не обсуждали задачи на стороне.
    Ответ написан
    Комментировать
  • Какую структуру таблиц выбрать для описания некоторой сущности, у представителей которой часть атрибутов совпадает, а часть - различна?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Путей много. Можно завести 2 таблички. Одна для новых машин. Другая - для подержанных. Со
    своими наборами пропертей. Тогда и индексы строить удобно.
    И с точки зрения типизации этот подход верный. Если язык разработки (Python/PHP) различает
    типы машин - то для каждого типа нужна отдельная табличка. Это в духе ORM.
    Недостаток - надо делать union all двух таблиц если мы хотим делать поиск по общим пропертям.

    Можно завести 1 табличку с полем типа JSON и свалить туда все проперти которые могут быть
    опциональны для новых машин и для Б/У. Это делает схему более компактной. И поиск по основным
    полям работает универсально. Для кастомных полей надо искать описание в MySQL языков работающих
    с JSON (JSonPath) для того чтоб выбирать и фильтровать и индексировать их.

    Можно поступить как в BigData. Свалить все проперти что есть в одну большую таблицу. Будет в ней
    допустим 500 колонок. И большая часть из них - пустая. Заполняется null. Такая модель тоже работоспособна.
    Но для человека наблюдающего глазами таблицу будет неудобно с ней работать. Особенно когда нужное
    тебе поле находится где-то на 400х колонках и надо скроллить грид мышкой вправо чтоб хотя-бы прочитать
    глазами значения. И эволюция такой схемы проходит тяжелее. Т.к. alter table обычно блокирует таблицу
    от транзакций DML и нужен регламент что добавлять новую колонку.
    Ответ написан
    Комментировать
  • Эффективны ли roadmapы в обучении?

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

    Нам здесь в хабре трудно оценить их эффективность. Это - примерно тоже самое
    что оценивать программу обучения ВУЗа.

    С моей субъективной точки зрения план - хороший. Если-бы я решил что он плохой
    то мне надо было-бы срочно предложить свой собственный план. У меня такого нет.

    А учитывая что ты плаваешь в понимании нужности Django и сокетов - то ты тем более
    не в состоянии даже критиковать этот план. Поэтому бери его. Учи. И скажи спасибо
    что хотя-бы такое есть.
    Ответ написан
    Комментировать
  • Можно ревью супергрязного(наверное) кода на с#?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Я тоже добрый сегодня.

    Общее впечатление что код - пенопласт. В нем очень много строк но очень мало бизнес логики.

    1) Во первых непонятно где фокусироваться. Смотреть формочки - не интересно они состоят в
    основном из шумящих событий которые радуют глаз но делают очень мало действий. Это как смотреть
    байткод LLVM или Java.

    2) Вот такой комментарий я-бы не писал. Он звучит как капитан-очевидность. И ежу понятно что это Main.

    /// <summary>
            /// Главная точка входа для приложения.
            /// </summary>
            [STAThread]
            static void Main()


    Если твой преподаватель требует - то пускай будет. Но я-бы убрал.

    3) Вот такие название как Classes, надо убрать. Они считаются дурным тоном. У тебя-же есть понимание
    что внутри? Вот прояви фантазию и дай какое-то бизнесовое название. У тебя в названии вообще висит
    газо-анализатор. Используй это.

    4) Вот здесь имеет смысл вводить поясняющую переменную. Это основы рефакторинга
    о которых писал Кериевски.

    Mixtures[mixture].measurementResults[cycle] = gasType == "mixture" ? concentration : Mixtures[mixture].measurementResults[cycle] - concentration;
            }//сохранение текущего результата в конкретный цикл конкретной смеси


    И комментарий должен стоять над кодом а не внизу.

    5) Я не знаю зачем в 21 веке так сложно конкатенировать строку. Это не Си и не Java1.1.

    table.GetControlFromPosition(i, table.RowCount - 1).Text = String.Concat("СКО", ":", Mixtures[i].sko.ToString());


    Вот я специально посмотрел в learn портал https://learn.microsoft.com/en-us/dotnet/csharp/ho... и там пишут что вполне можно брать операцию плюс или стринговую интерполяцию.

    Вобщем старайтесь писать меньше слов. Это - хорошая точка приложения сил для развития как разработчика.
    Ответ написан
  • Как в Readme на гитхабе вставить SVG в виде inline-кода без ссылки на файл?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Картинки в Markdown вставляются так.

    ![SVG Image](https://host.com/your-image.svg)

    Ессли SVG не отрисовывается - сконвертите его в формат растровой картинки.
    Ответ написан
    5 комментариев
  • Проверка принадлежности GEO-координат определенному месту?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Excel - не вариант.

    Нужен программист чтоб написать софт. Если хочешь просто сам поразбираться - то развлекайся
    например с https://www.openstreetmap.org/

    Там-же доступны базы для скачивание в двоичном и в XML формате.

    Если для очень крупных объектов (страны) то полигоны можно тут скачать
    https://www.ip2location.com/free/world-svg-map
    Ответ написан
  • Где я мог увидеть задачу про то как объект идёт по шагам вперёд и впереди строится стена?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Парадокс Зенона?
    Ответ написан
    Комментировать
  • Используют ли при обучении нейронных сетей генетические алгоритмы?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Я думаю да. Более того. Если нас попросят перечислить конкретные алгоритмы генетики - то
    оказывается что мы ничего назвать не можем. ГА - это даже не алгоритм а это просто подход
    к селекции чего либо. Например когда вы выбираете в магазине железа себе материнку и
    проц и видяшку - вы решаете ГА. Вы выбираете. Делаете кроссовер (из двух удачных конфигураций
    берете части) и делаете мутации (берете и что-то меняете). И в конце выбираете по цене
    и по индексу бенчмарка что-то себе приятное. Лучшая хромосома.

    Тоже самое при обучении. Какую топологию сети взять? Сверточные. Больцманы. Хопфилда.
    Сколько скрытых слоёв? Какую функцию активации? Это все селекция и кросс и мутация.
    Тоесть вы будете как Мичурин среди яблонь ходить и выбирать лучшие образчики конфигураций
    чтоб совокупить их и родить новую сеть-мутанта.
    Ответ написан
  • Как подключиться к Wifi на C++?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Тебе работать с Wifi на С++ нужно будет только в одном случае - когда ты разработчик драйвера Wifi устройства.

    В остальных случаях - ты пишешь обычные приложения на С++ которые используют сокеты TCP/UDP, которые (сокеты) в свою очередь работают через стек технологий ОС для кидания пакетов в Wifi интерфейсы в соотвествии с правилами таблиц маршрутов.
    Ответ написан
    2 комментария
  • Не получается сделать exe. Почему?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Он скорее всего работает. Просто консоль так быстро появляетя и исчезает что ты не успеваешь разглядеть.
    Там сразу после печати Hello идет return.

    Добавь туда cin >> для того чтоб было какое-то ожидание от пользователя.
    Ответ написан
    1 комментарий
  • Как вывести буквы, которые используется наиболее кол-во раз?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Можно отсортировать массив букв любым алгоритмом. Тогда буквы выстроятся в серии.
    Например

    aaaaaabbccccccccccdeeeeggggff

    И тогда самая длинная серия и будет ответом.

    Антагонист этого метода - это сортировка подсчетом. Это то о чем писал Wataru.
    Оба метода - рабочие. Можно обсуждать тонкости которые в задаче не были заданы.

    Стоит ли их обсуждать? ХЗ
    Ответ написан
  • Возможно ли оптимизировать Inline метода с throw с помощью директив препроцессора?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Не скажу насчет C# но в других языках и технологиях обработка Exception когда оно уже случилось
    приводит к тяжелым последствиям для производительности. Мне кажется лучше возвращать код
    ошибки или как-то по другому проверять capacity.
    Ответ написан
  • Какой самый легковесный nix-дистрибутив?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Любители докеров и безопасники любят alpine-linux. Вроде там все по минимуму.

    UPD: Alpine
    Ответ написан
    2 комментария
  • Как организовать код, сниппеты, файлы внутри команды?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Если команда большая (больше чем скрам) то имеет смысл раз в неделю собираться на голосовом
    митинге в полном составе и хотя-бы по 5 минут заслушать каждого. Кто чем болеет. Какие проблемы.
    Какие разработки. Далее по результатам надо думать о создании общего репозиатрия кода.
    Что-то вроде библиотеки. И сводить в библиотеку только реально нужное и разделяемое между
    проектами. Библиотекой должны заниматься опытные. Она должна иметь структуру и документированность.
    Она должна вбирать в себя только полезное. По принципу реального боевого кода. Код который
    морально устарел или не используется лучше выбросить из библиотеки.

    Нужно создать условия когда код из библиотеки не копируется а инклудится в проекты. Если кто-то
    берет наброски и "дорабатывает" - надо смотреть что он доработал и почему.

    По иному - вряд-ли получиться. Сниппеты и горизонтальная переброска кусков кода между верстальщиками
    и разработчиками - это хаос. Кроме роста количества файлов и сниппетов - ничего полезного не будет.
    Ответ написан
  • Почему при выборке элементов SQLite в Android studio суммируемые числа округляются до целого?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Надо сменить тип данных с TEXT на NUMBER. Тогда суммирование будет точнее. По крайней мере я проверил вот так.

    sqlite> create table test(n number(2,3))
       ...> ;
    sqlite> insert into test values(16.30);
    sqlite>
    sqlite> select typeof(n) from test;
    real
    sqlite>
    sqlite> insert into test values(19.11);
    sqlite>
    sqlite> select total(n) from test;
    35.41
    sqlite> select sum(n) from test;
    35.41
    Ответ написан
    Комментировать
  • Почему функция count() увеличивает время запроса в 5 раз?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Вот эти две вьюшки можно заменить на одну.

    t2 AS (
        SELECT id
          FROM books
         WHERE dateYearPublished IN (2000) 
    ),
    t3 AS (
        SELECT id
          FROM books
         WHERE pagesCount BETWEEN 200 AND 1000
    ),


    что-то вроде

    tbooks AS (
        SELECT id
          FROM books
         WHERE dateYearPublished IN (2000) and pagesCount BETWEEN 200 AND 1000 
    )


    Ну и count каждый раз считать не надо. Как-то кешируй там результат.

    Очень часто новичкам нужен не count а exist хотя-бы одной строки. А это другой вид запросов.
    И его использовать выгоднее чем count.
    Ответ написан
    Комментировать