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

    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% бинарная совместимость всех структур. Вот библиотеки Протобуф и Авро
    как раз для этого создавались.
    Ответ написан
    Комментировать
  • Как выполнить перевод 8-ми битного отрицательного числа из десятичной системы счисления в шестнадцатиричную?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Вот из википедии. Как из положительного сделать отрицательное в формате ДК (дополнительный код).

    int twos_compl_abs(int a) {
        if (a < 0) a = (~a) + 1;
        return a;
    }


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

    Для числа -100. Берем сначала по модулю. 100 - это 64 + 32 + 4

    0110 0100

    Инвертируем

    1001 1011

    И прибавляем 1

    1001 1100

    В хекс-системе тоже число будет

    9C
    Ответ написан
    Комментировать
  • Вылеты, артефакты, фризы системы. Виноват нищенский БП?

    mayton2019
    @mayton2019
    Bigdata Engineer
    265WATT - это мало для современных ПК. Воспользуйся онлайн-калькуляторами
    для расчета мощности. Там легко. Укажешь свою конфигурацию и все компоненты
    и приложение покажет сколько тебе надо.

    И возьми с запасом хотя-б 15% для других устройств.
    Ответ написан
    1 комментарий
  • Можно ли учить python(ООП) с помощью pygame?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Судя по описанию pygame - это игровая библиотека. И она учит школьников делать игрушки.

    Никакому ООП она не научит. Если ставить цель - именно ООП - то лучше просто брать курс Python
    там и будет обязательно лекция по ООП в парадигме Python.
    Ответ написан
    Комментировать