Задать вопрос
  • Почему начинает лагать программа запущенная в несколько копий?

    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.
    Ответ написан
    Комментировать
  • Как осуществить сбор данных подключенных usb устройств на Linux?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Флешка в автоматическом режиме открывает терминал, пишет pip intall badusb

    Это скорее всего не работает.
    Ответ написан
  • Для чего нужна аннотация @Serializable в либах Java/Kotlin?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    С точки зрения Java language, аннотации ничего не делают. Они - как каменты в коде. Но они могут быть подсказками для фреймворков которые в compile time, classloader или runtime могут что-то выполнить над кодом. 99%
    это какие-то ORM/JSon подказки которые разъясняют фреймворку что делать. Например @Table(name="emp")
    подсказка JPA то класс относится к таблице emp.

    Ваш вопрос про либы Java/Kotlin слишком общий. Ничего конкретного нельзя сказать. Но по отношению к
    Serializable, можно предположить что это гарантия что класс можно сериализовать во внешнюю память
    (оперативная или диск) и это не нарушит никакой бизнес логики. Например это DTO которая полностью
    самодостаточная. Не все сущности вообще реально сохранить. Некоторые сущности - как орграф опутывают
    всю память Java и сохранять их накладно. Как корневой объект хипа. Дешевле дампнуть всю память чем
    сохранять такие объекты поштучно. Некоторые - имеют связи с внешними ресурсами Files/Sockets и вне контекста они не имеют смысла. Есть ключевые слова языка (transient) которые запрещают сериализацию для полей.
    Есть также проблема версионности для Serializable. Сохраненная структура не трекает ваши изменения
    по коду уже после того как вы что-то сохранили. Грубо говоря это не JSON. Если вставили новое поле - можете
    старый файл и не прочитать. В качестве маркера проблемы там заводят специальное поле типа versionId или
    что-то такое. Просто для детектирования.

    Если вы хотите иметь тотальный контроль над сохранением - то определяйте Externalizable и там будут 2
    метода в которых вы контролируете Output/Input streams и сами пишете что сохранять и читать. А еще
    лучше брать библиотеки Kryo/Protobuf/Avro e.t.c. У них еще и есть оптимизации по скорости и по сжатию.
    Вы к этому придете эволюционным путем если будете писать систему где сохранение во вне - важно.

    Сериализация во внешнюю память это огромная проблема когда мы пытаемся подружить разные
    технологии (32-64 бит целые числа или разный порядок байт в машинном слове). Даже простое
    сохранение даты или строки может быть ошибочным если вы сохранили в Java а пытаетесь читать в C++.
    Нужна 100% бинарная совместимость всех структур. Вот библиотеки Протобуф и Авро
    как раз для этого создавались.
    Ответ написан
    Комментировать