Задать вопрос
  • Почему не печатает каждую секунду вывод?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Как-то так надо.
    for (int i = 0; i <= 3; i++) {
            std::cout << i << "..." << std::flush;
            sleep(1);
        };

    (отредактировано)
    Ответ написан
  • Почему crawler, работает 7 часов? Не зациклен ли код?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Некоторые сайты могут сдетектировать бота и подкинуть свинью. Например - отдавать бесконечный поток шумящего html-кода который просто нагружает работой BeautifulSoup. Но чтобы говорить о зависании - надо сначала придумать формальный критерий. Например - парсинг одного url запускается в отдельном потоке и lifetime потока не должен превышать к примеру 30 секунд. Если превышает - мы считаем что он глотает шум или не получает контента. И прибиваем поток. ЛОггируем событие и идем дальше по ссылкам.
    Ответ написан
    Комментировать
  • Что быстрее: json или sqlite?

    mayton2019
    @mayton2019
    Bigdata Engineer
    извлечь и записать в словарь набор данных json, или извлечь тот же набор данных из БД sqlite

    Я не знаю кто вам подает такие формулировки. Возможно вы сидите на митингах и слушаете трёп разработчиков и здесь спрашиваете. Но данный вопрос с точки зрения инфо-технологий звучит как : "что лучше желтое или квадратное".

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

    Я вас прошу.
    Ответ написан
    Комментировать
  • Как сделать подобное исключение в java?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Можно в блоке catch проверить что содержит message. Это обычно текст в котором есть информация об ошибке
    и дальше разбирать этот текст и принимать решение.

    } catch(IndexOutOfBoundsException ex) {
        String message = ex.getMessage();
        ....
    }
    Ответ написан
    Комментировать
  • В каких случаях логичней чтобы получить половину умножать на 1/2, а в каких делить на 2?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Возможно это не от математики а от практики программирования идет. Когда работают в вещественных числах (float, double) то умножают на 0.5.

    А если какой-то особый случай и надо работать с рациональными дробями вида 3/15, 7/11 то подключают тип Rational и в нем получают более точный результат базовой арифметики чем например double.
    Ответ написан
    Комментировать
  • Зачем нужно каррирование функций?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Насколько я понимаю, каррирование - это плод математических исследований. Математики не интересовались программированием а их больше интересовало некое механическое преобразование мат-функций с целью доказательства какого-то их свойства. Вот. Значит если есть сложная функция у которой сотня аргументов но ее с помощью преобразований удается свести к сотне функций с 1 аргументом - то это успех.

    Где это практически применяется я щас не скажу. Но вот Haskell компиллятор видит все функции как каррированные. При этом на output функция будет вести себя как обычная.

    Еще КМК каррированные функции очень удобно оптимизировать. Если мы можем часть аргументов зафиксировать (константы) - тогда остаточное туловище функции будет быстрым. Мы ведь уже выбросили
    часть аргументов и компиллятор может доказать больше инвариантов. Для обычных императивных ЯП
    кажется такое невозможно.
    Ответ написан
    Комментировать
  • Как создать базу данных для анализатора?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Короче такая мысль. В этой задаче самое главное - нейронная сеть которая обучается и выдает на выходе некую модель.

    База данных здесь - вторична. Собственно здесь даже хватит текстового (csv) файла. Насколько я помню чтобы
    обучать НС нужно просто разделить выборку на две части. Обучающая 95% и контрольная 5%. И далее последовательно показывать нейросети все образцы. Для этого кейса подходит любая из известных баз. Но если делать экономно - то я-бы предложил использовать БД для измерений. Они называются time-series db. Классификатор здесь https://db-engines.com/en/ranking/time+series+dbms
    Эти БД поддерживают быструю пакетную загрузку (batch) и выборку измерений в диапазоне времени. И по тегам (по виртуальным столбцам как-бы).

    Берите любую бесплатную и которая имеет интерфейс к вашему языку программирования. Например Influx.
    Ответ написан
    Комментировать
  • Насколько процессор Intel Celeron 3867U хуже Intel Core i5-1135G7?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Селероны последний раз выпускались лет 10 назад. Не знаю каков их сейчас статус но в нормальных магазинах они даже не представлены в классификаторе процессоров.

    Селерон всегда был таким жлобским вариантом Intel. Для бедных короче. В серверы его не ставили. Я когда учился в универе у меня был Celeron-300/Tray. Частота 300Мгц. 32х битный.

    Зачем сегодня его покупать - я не знаю. Интерес разве что коллекционера старых вещей.
    Ответ написан
    3 комментария
  • Сколько ядер процессора хватит для программирования?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Имеет смысл взять слабую конфигурацию. На ней автор быстро почувствует узкие места кода и займется
    оптимизацией. И потом в продуктиве этот код станет быстро работать.

    Хороший мотиватор.
    Ответ написан
    5 комментариев
  • Как решить проблему в коде не запускается код, основные операции над бинарным деревом?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Это не бинарное дерево. Ерунда какая-то. Обычно когда объявляют такое дерево -то считают что это
    бинарное дерево поиска. И в нем должны быть функции для расстановки узлов относительно значения Data.

    Здесь что? Непонятно. Рандомным образом раскидали? Зачем?
    Ответ написан
    Комментировать
  • Нормально ли хранить JSON в базе данных?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Был такой нудный дедушка Эдгар Кодд. Он как-то из соображений своей нудности взял и объявил что только он знает как правильно делать реляционные базы.

    Вобщем его первое правило касается атомарности данных которые лежат в ячейках таблицы. И если в рамках решаемой вами задачи JSON атомарен - то все в порядке и никакой проблемы нету. Храните себе JSON.

    Но если внутри JSON будет поле которое способно изменяться независимо от остальной части документа - то старичок Эдгар будет на вас сильно зол. Может даже вас побить.

    В наше время уже созданы специализированне БД (Mongo, CouchDb) которые плевали на нормализацию. Они расширяют и ослабляют понятия нормализации. Not-Only-SQL говорят про себя.
    Ответ написан
    Комментировать
  • Почему на Java не пишут игры под десктоп?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Проблема в реалтайме. Обычно когда речь идет об игре то на сцену выходит именно он.

    Для современных игр при скорости кадров 60 или выше очень важно чтобы основной цикл
    обработки событий приложения работал без задержек. Отклик. Геймеры - народ претензиозный.
    Очень быстро чувствуют дефекты игры. Какой им смысл покупать мышку выдающую импульсы
    управления с частотой 200 гц, когда вся игровая подсистема будет периодически фризится и лагать.

    Java не обеспечивает 60 fps просто в силу своей архитектуры памяти и GC. Это период цикла
    в 16 милисекунд. Хотя современные GC типа G1 имеют управляемый таймаут stop-the-world,
    тем не менее он не гарантируемый а скорее рекомендательный. Тоесть нельзя совсем
    застраховаться от пропусков кадров и продергиваний. Можно скорее говорить о процентиле
    чем о минимуме.

    Java хорошо работает в обычных веб-приложениях и в back-end процессах потому-что одиночный таймаут
    даже в 500 мс никто не заметит. В джобах и фоновых задачах - вообще плевать. Хоть несколько секунд.
    Главное чтоб суммарная средняя скорость обработки бизнес-операций была на высоте. С этим вроде
    все в порядке.

    Вот. Поэтому реал-тайм игры лучше писать на С++/C/Rust. В них есть более-менее гарантируемое понятие отклика приложения. Ну а игру типа квеста или походовой стратегии на Java вполне себе можно написать.

    Я не знаю как написан майнкрафт. Но я думаю что автор приложил огромное количество усилий
    чтобы GC в его серверной и клиентской части почти ничем не был занят. И такой подход
    годится для единичных игр но для майнстрима - скорее всего нет. Геймдев - это тоже бизнес
    и он не любит рисков. Нужно так чтоб рилтайм == рилтайм.
    Ответ написан
    9 комментариев
  • Вася вносит X руб.У него имеются номиналы:1,2,5,10,50,100,500. Сколько РАЗНЫХ купюр он отдаст,если начинает с больших? (как решить с помощью ДЕЛЕНИЯ?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Ну если к примеру сумма - 1531 рубль то для таких номиналов {500, 100, 50, 10, 5, 2, 1}
    нет необходимости вычитать 500-тку три раза. Можно поделить 1531 на 500 и посмотреть
    целочисленное частное. Если оно больше 0 - то 500 тку можно было использовать.
    Далее - остаток от деления на 500 даст 31. И так далее.
    Ответ написан
  • Как учить C++ если будешь знать С?

    mayton2019
    @mayton2019
    Bigdata Engineer
    то с какого аспекта или момента учить C++

    Нет такого момента или аспекта. Просто учишь и все. Языки похожи по синтаксису. Но начиная с каких-то 80х
    годов С++ стал отдельным форком и сегодня это два разных языка которые не должны быть под-множествами
    друг друга. Кроме С++ еще придется изучать и библиотеки STL/Boost и это отдельная тема.
    Ответ написан
    Комментировать
  • Проблема компилятора?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Если нет то можна нормальный гайд на установку этого компилятора?

    Не существует единого гайда на фиксацию проблем С++ разработки. Дело в том что сама профессия С++
    кодера предполагает решение таких проблем самостоятельно и каждый день. Издержки профессии
    так-сказать. Терпи. Учись. Или лучше выбери другую профессию.

    Что-же касается Windows-программирования то наверное не стоит в нем работать на GCC.
    Лучше брать Visual C++ как уже советовали выше.
    Ответ написан
    Комментировать
  • В строке все элементы в десятичной системе счисления заменить в шестнадцатеричной системе?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Это - курс молого бойца. Почти всегда первый урок информатики начинается с систем счисления.
    Десятичные. Двоичные. Хекс. Octal. Позиционные. Римская (непозиционная). Унарную можно
    рассмотреть как экзотику. Но имеюшую теоретически большую значимость.

    Работа со строками. Считай вторая лекция по информатике. Вот. Что еще тут добавить.

    Автор конешно лодырь. Вот. По условию дана строка. И на выход должна пойти строка.
    Такой контракт. У него в коде вообще нет ничего подобного. Написал какой-то ненужный
    огрызок. Надеялся что так помогут.

    Я-бы помогал удочкой рыбу ловить. Но готовую рыбу не давал-бы.
    Ответ написан
    Комментировать
  • Можно ли написать OS на Python?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Вопрос интересный. Из серии дискуссионных.

    Сходу я-бы тоже написал - нельзя. Потому что не делают ОС на питонах обычно. Но
    давайте раздвинем границы и порассуждаем.

    Что такое ОС и вообще из каких частей она состоит? И какие к ней требования?
    Когда говорят о написании ОС - то обычно имеют в виду некий эксперимент или чью-то
    курсовую или дипломную работу в результате которой появляется нечто. И это нечто
    - имеет загрузчик. Загружается с флешки или диска. Содержит базовые средства
    ввода команд (шелл). Управляет хотя-бы сетевым интерфейсом и дисками. И умеет
    запускать хотя-бы 1 экспериментальную программу написанную для ЭТОЙ-же ОС.
    А иначе - какой смысл вообще делать ОС под которую нет программ.
    - обладает небольшими размерами. В самом деле. У вас же не Debian чтоб
    тащить пачку DVD дисков? Какие размеры кода генерит Python. Ну он вообще не генерит
    кода как такового. Хотя возможно с использованием CPython мы сможем собрать
    некий бинарник но здесь надо пообсуждать его недостатки. Размеры. И потенциальные
    уязвимости самой архитектуры. Если в коде существует точка где можно вызвать eval - то
    это уже потенциальное место для хакеров. Тут - требуется обсуждение с людьми которые
    чуть больше знают чем я в инфо-безопасности. Передам им слово.
    - обладает высокой производительностью. Близко стоит к железу и не имеет никаких
    посредников. Тоесть между ОС и железом не должно быть никаких прослоек. Какой длины
    стек технологий стоит между Python и железом? ХЗ. Пускай знающие пояснят. С моей точки
    зрения Python близок к Lisp или к JavaScript по духу и по идеологии. А надо быть близким
    к C++, Rust e.t.c. Мультизадачность опять-же до кучи. Ее эффективно можно реализовать
    только если код-быстрый.

    Из творческих экспериментов о которых я слышал. ОС - Beos. Была написана много лет
    назад на ООП языках как ОС для мультимедиа (?) или для чего-то там подобного. В настоящий
    момент считается мертвой.

    Еще была Singularity OS. Написана на ДотНете. Больше ничего о ней не знаю. Просто
    читал когда-то в журнале. Сильно удивился. Дай бох. Если так можно то хорошо. Кто знающие
    в теме - проясните ее статус на данный момент.

    Еще слышал о том что дедушка Никлаус Вирт в своё время тоже создавал ОС. На базе Оберон.
    Причем у него там были воплощены много его мечт и чаяний. Всякие модули. Динамические
    библиотеки. UI был абсолютной свой. Я смотрел на презентации. Не впечатлило. Хотя уважаю
    такую последовательность и упорство. Кто пользовался или устанавливал - просвятите.

    Любые клоны Линукс. Да они являются осями но их создатели не закладывали никаких
    усилий по разработке их ядра. Можно ли их рассматривать в данном топике? ХЗ. Я-бы не стал.
    Есть известная ОС BolgenOS которая стала мемом. Ее создатель очень много потратил на само-пиар
    и очень мало на разработку. Его усилия заключались во взломе всех текстовых надписей и копирайтов
    а также картинок и обоев в типичном дистрибутиве Линукс. Стоит ли это рассматривать в топике?
    Как по мне - неспортивно как-то. Нетворчески... Сюда-же до кучи Гентушников. Ничем особ значимым
    они не отличились.

    Любая встраиваемая в железо система по определению является ОС. Только пишется обычно
    на Си или Асме или каком-нибудь Форте. Но она обычно очень ограниченная и в ней нет ничего
    что-бы напоминало современные ОС. В них часто даже нет консоли. Поскипаем такие.

    Резюмируя. Свою ОС писать - хорошо. Познавательно. Но лучше не на Python а на Си. И подходить
    к вопросу нужно с глубокой идеей. Должны быть цели. Для чего. Чего мы хотим получить так чтоб
    не тупо копировать Linux. Нужно очень хорошо знать железо. Лучше - нестандартное. Там - больше
    будет пространство для маркетинга. Эльбрус там. Байкал. Или процессор GA144
    который создал Чарли Мур (дада тот самый) в котором куча микро-ядер и которые понимают
    Forth.

    Вобщем надо знать железо.
    Ответ написан
    Комментировать
  • Как реализовать Алгоритм Брезенхэма?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Брезенхем не использует вещественные числа. В этом его суть. Вещественные появляются просто в ходе доказательства его правильности. Но сама реализация - только на целых числах.
    Ответ написан
    4 комментария
  • Как развернуть колонку набок и в массив (Databricks/Spark)?

    mayton2019
    @mayton2019 Автор вопроса
    Bigdata Engineer
    Сам себе отвечаю.

    collect_list() и explode()

    - две функции которые делают нужные преобразования.

    Но практически - моя постановка изменилась и сейчас сводится к работе с JSON-arrays которые лежат
    в ячейках таблицы. Для них collect/explode мне не подошел. А подошли функции transform и cast.
    Часть из них доступны начиная со Spark 3.1.1 и Databricks 9.1.x-LTS Runtime. Поэтому надо модернизироваться срочно.
    Ответ написан
    Комментировать
  • -x^2 - положительно или отрицательно?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Если-бы это был C++ то я-бы выбрал такую форму
    pow(-x, 2.0)
    или
    -pow(x, 2.0)
    А для математика проблемы не существует.
    Ответ написан
    Комментировать