Задать вопрос
  • Как узнать версии пакетов у Ubuntu в официальном релизе на определённую дату?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Я думаю что организация не заинтересована трекать минорные версии пакетов. В этом нет смысла. Они хранят последний снапшот и предлагают его к обновлению. Если у вас какие-то проблемы с пакетом gcc то нужно писать в поддержку.

    Что еще можно поискать. Архивы снапшотов по дистрибутивам (Jelly, Focal, e.t.c.)
    archive.ubuntu.com/ubuntu/dists/?C=M;O=D

    Например у меня Ubuntu Focal Fossa которая лежит здесь archive.ubuntu.com/ubuntu/dists/focal-updates
    Попробуйте переключиться на старый релиз. Может там gcc будет для вас подходящим.

    Текущий статус пакета можно глянуть через apt info:

    $ sudo apt info gcc-9
    Package: gcc-9
    Version: 9.4.0-1ubuntu1~20.04.1
    Priority: optional
    Build-Essential: yes
    Section: devel
    Origin: Ubuntu
    Maintainer: Ubuntu Core developers <ubuntu-devel-discuss@lists.ubuntu.com>
    Original-Maintainer: Debian GCC Maintainers <debian-gcc@lists.debian.org>
    Bugs: https://bugs.launchpad.net/ubuntu/+filebug
    Installed-Size: 30.6 MB
    Provides: c-compiler
    Depends: cpp-9 (= 9.4.0-1ubuntu1~20.04.1), gcc-9-base (= 9.4.0-1ubuntu1~20.04.1), libcc1-0 (>= 9.4.0-1ubuntu1~20.04.1), binutils (>= 2.34), libgcc-9-dev (= 9.4.0-1ubuntu1~20.04.1), libc6 (>= 2.15), libgcc-s1 (>= 3.0), libgmp10 (>= 2:5.0.1~), libisl22 (>= 0.15), libmpc3, libmpfr6 (>= 3.1.3), libstdc++6 (>= 5), zlib1g (>= 1:1.1.4)
    .............


    Когда запускаете apt update - обычно спул показывает больше ссылок по все репозитариям. Провертье.
    Ответ написан
    Комментировать
  • Какие сервера поднимаются на виртуалках, а какие физически?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Заказчик сам выбирает обычно. Исходя из денег. VPS или bare-metal. Насколько амбиций хватит.
    В последнее время все тяготеют к Kubernetes. Он как-то динамичнее утилизирует доступные железки.
    Если VPS подняли. Поставили ОС. Поставили софт .... и побежали твои денежки к облаку.
    А с кубером так. Захотел бигдату посчитать. Написал джоб. Запустил в кубере. Джоб отработал 1 час.
    И ты заплатил ровно за 1 час. Дисковые хранилища там почти бесплатны. По цене грязи.
    Ну з IOPS в пике можно заплатить. Но в целом пока джобы не работают ты ничего не платишь.

    Вот. Еще лямбды (AWS) и clound-functions (другие облаки) тоже потребляют по 1 центу за вызов.
    И при этом ее хостинг тебя не волнует. Она поднимется на любой виртуалке где есть ресурсы.

    Поэтому не bare-metal -> VPS. А все еще запутанее хитрее. Железо. Виртуализация. Потом что там...
    контейнеризация... Потом FAAS. Функции. Вот поэтому вопрос звучит не какие сервера поднмиаются
    а какой бизнес-функционал лучше летает на каком уровне этой лестницы.
    Ответ написан
    Комментировать
  • Как проверить regex Range?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Регулярка такое не умеет. Проверка Range - это арифметическая задача. А регулярка
    проверяет соовтествие шаблона символов.
    Ответ написан
    Комментировать
  • Как это исправить?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Подозрительное место. Ты кастишь user.password из неизвестного типа в String.
    На каком основании? Почему не из binhex или из base64?
    String(user.password)
    Нужно доказать что вот эта конверсия правильная. Ну и типы данных надо потрассировать.
    что покажет
    typeof user.password
    typeof password
    Ответ написан
  • Как пошагово работает сортировка .sort()?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Поскольку вопрос тегирован алгоритмами - человек пытается ИХ изучать а не контракт array.sort.

    В науке и технике... в качестве алгоритма сортировки любят использовать сортировку Хоара.
    Она-же Quick Sort. Еще в переводной литературе ее называют Быстрая сортировка делением.

    Еще я где-то читал (не помню где! блин) что ядро Linux иногда использует для своих нужд HeapSort.
    Или сортировку Пирамидой. Или пирамидальную. Достаточно быстрая и не требующая дополнительной памяти
    вообще. По месту сортирует.

    Более полное демо по алгоритмам с визуализацией здесь

    https://www.youtube.com/watch?v=kPRA0W1kECg

    Какую под капотом реализует JavaScript sort - чорт его знает. Но возможно одна из самых быстрых.
    Ответ написан
    4 комментария
  • Сложно ли создать тг бота на c++?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Мне кажется что проблема не в телеграм библиотеках а как всегда в классических вопросах С++.
    Контроль над памятью например. И если взять за формулу что ТГ-бот - это типичное реактивное
    приложение то преимуществ С++ здесь вобщем-то нет. Нету задач которые бы загрузили CPU.

    А если задачу развивать в части интеграции например с MQ/документными БД (Mongo) или с
    веб-апи криптовалют то окажется что С++ в такой интеграции стоит еще в 2 раза дороже
    и во времени разработки и в поддержке. А конечному пользователю вообще плевать на чем
    бакенд бота написан.

    И окажется в сухом остатке что наговнячить бота на Node или на Python будет дешевле. И поддерживать
    код тоже дешевле. Вносить изменения - легче и быстрее. Для бизнеса - вообще скорость внесения
    изменений в продукт - это метрика №1. Кто вышел с маркетинг акцией в срок - тот заработал денег.

    Если-бы я был бизнесом и хотел бы свой ТГ-бот то я-бы не вкладывался в С++ (хотя я уважаю этот язык).
    Я-бы нанял команду Ноде-Жс и все было бы норм.
    Ответ написан
    Комментировать
  • Наиболее безопасный мессенджер?

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

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    Тут цель не совсем ясна. Ознакомить чтоб сотрудник был просто ознакомлен? Или чтоб в суд пойти?

    Все современные корпорации - тоталитарны. Как мини-армия. У всех есть требование ко всем сотрудникам
    - читать почту раз в сутки. И через сутки ответить. В данном случае CEO пишет всем письмо на корпоративный
    емейл. Типа "ознакомиться с приказом". По факту ознакомления - уведомить в чят своего лайн-менеджера.
    Пока не подтвертили - не получаете аванса и отпусков до разбирательства причин неознакомления.
    И побегут ознакамливаться аж со свистом. Вприпрыжку побегут.

    Поэтому забудьте вы все эти подписи. В них нет смысла в рамках соврмеменной корпорации.

    А если вы предпрениматель или само-занятый или просто гражданский безработный - то вам должно быть положить
    буй на эти все циркуляры. И тогда уж только участковые с приставом могут прийти домой и звонить вам
    в дверь до посинения с бумажкой. Только так.
    Ответ написан
  • Как в 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
    Я думаю да. Более того. Если нас попросят перечислить конкретные алгоритмы генетики - то
    оказывается что мы ничего назвать не можем. ГА - это даже не алгоритм а это просто подход
    к селекции чего либо. Например когда вы выбираете в магазине железа себе материнку и
    проц и видяшку - вы решаете ГА. Вы выбираете. Делаете кроссовер (из двух удачных конфигураций
    берете части) и делаете мутации (берете и что-то меняете). И в конце выбираете по цене
    и по индексу бенчмарка что-то себе приятное. Лучшая хромосома.

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