Задать вопрос
  • Как начать писать код?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Это нормально. Просто не хватает практики. Например змейка (и другие игры) в основе своей несут цикл обработки событий. Клавиатурных. Или событий таймера... не важно. Тоесть ты можешь сразу писать

    while(true) {
     event = waitForEvent()
     ...
    }


    И это будет некий каркас для любой игры.
    Ответ написан
    Комментировать
  • Как синхронизировать изменяемую таблицу в 1С с Oracle БД?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Никакой max indexrow вам не поможет. Это же не Excel. Но если вы знаете к примеру что данные имею дату создания и partitioning по этой дате, то тогда запрос может быть улучшен по плану и по логике.
    Ответ написан
    3 комментария
  • Почему иногда практикуется отсутствие связей в БД?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Есть несколько задач когда от реляционности отказываются сознательно.

    - Bigdata
    - Загрузка сырых или неспецифицированных данных для дальнейшей обработки
    - Загрузка документов имеющих нереляционную природу (XML/JSON)
    - Логгирование событий или просто запись данных из внешнего датасорса

    По такой слабо-связной базе нельзя делать JOINS но брать по ключу можно key-value или можно
    делать анализ крашей и аварий.
    Ответ написан
    Комментировать
  • Как сложить словари в которых числа?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Кажется это называется строковая интерполяция в Python. Впрочем не только в Питонах но и вообще во всех других языках.
    x = 38.0
    y = 0o5
    z = 0x02
    print(f'Общий рост моей семьи - {x} попугаев, {y} мартышек, {z} слоненка')
    Ответ написан
    Комментировать
  • Хранение множества мелких и средних файлов, как оптимально: файловая система или база данных?

    mayton2019
    @mayton2019
    Bigdata Engineer
    (файлы будут в zip архиве и архивы размером от 5 КБ до 250кб, изредка 1-2 мб)?


    Да здесь файловая система будет лучше. Zip-архив для БД будет все равно балластом. Движки БД обычно не способны загядывать внутрь сложного архива-блоба. Поэтому фаза вычитывания и распаковки все равно будет. А если такой фазы нет - то тогда и БД выглядит ненужным балластом. Ведь ее суммарная стоимость владения (TCO) всегда выше чем у файловой системы.

    Очень зрелой выглядит идея использования облачных файловых систем (Amazon S3, Azure Blob Storage) но тут надо смотреть просто в цены и в удобство поисковых операций. Например S3 вобщем то является скорее хеш-таблицей на диске чем файловой системой. Поэтому группировать файлы в фолдеры для листинга будет так себе идея. Вообще эти ФС строго расчитаны на знание path. В идеале если ваше приложение изначально знает формулу как path формируется.

    Хранить готовые файлы на сервере хочу из-за скорости. Мне кажется, что гораздо быстрее повторно скачать уже сформированный файл который хранится на сервере, чем каждый раз при скачивании файла 1. отправлять запрос к базе данных с фильтрами 2. на основе отфильтрованных данных сформировать CSV файл(ы)

    Верное направление мысли. Почитай еще как NGinx работает с атрибутами ETag, If-Modified-Since. Это потребует изменения логики клиента, но результат будет более оптимизированный чем просто даже с кешом.
    Ответ написан
    3 комментария
  • Как объединить несколько копий приложения в одну?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Для баз данных существует еще больше способов виртуализации. Кроме docker/kuber можно создавать много баз данных в одном и том-же хосте (pod). Но подумайте будет ли вам удобно бэкапировать такой будерброд. И не будет-ли проблем с безопасностью если кто-то будет создавать в одной базе public объекты.
    Ответ написан
    Комментировать
  • Как однозначно конвертировать цвет из RGB в HSL и обратно, получая один и тот же результат?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Дело в том что HSV - это полярная система коррдинат. Цилиндр по сути. И один из параметров цветового тона (угол вращения) может циклически повторяться неся одинаковый смысл. И может быть любым находясь в центре цилиндра.

    Поэтому такая формула не будет никогда однозначной.
    Ответ написан
    Комментировать
  • Как пропустить аргумент функции при её вызове?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Есть понятие partially defined функция. Это работает в Haskell, Scala. Результатом такого например
    применения будет просто онлайн компилляция новой функции с меньшим числом аргументов.

    plusInt(_, b)

    Но для С++ тем более в данном контексте использования тебе проще сделать просто еще одну функцию.
    Кстати обращаю твоё внимание на то что функции обычно возвращают занчения. А побочный эффект
    такой как cout - лучше просто вызвать отдельно.

    Мотивация станет более ясна когда будешь такой код тестировать. Всегда проще проверить результат чем анализировать потоки вывода.
    Ответ написан
    Комментировать
  • При использовании multiprocessing может ли одновременное считывание из файлов тормозить программу?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Непонятно что ты там переименовываешь. CSV файлы - это файлы последовательного доступа. И чтобы изменить 1 строчку и 1 значение тебе надо создать копию файла с изменением. И оригинал убить. В этом кардинальное отличие от баз данных где файлы имеют блочную структуру и изменнеие касается всегоа 1 db-block (обычно кусочек файла кратный 4-8 килобайт).

    Вот предлагаю обсудить этот вопрос а уже потом подойти к ... муль-ти-про-цессингу или как ты там написал.
    Ответ написан
    2 комментария
  • Каким образом физически устроена модель памяти? И физическая реализация простых логических операций?

    mayton2019
    @mayton2019
    Bigdata Engineer
    (Ответ есть ток, нету. Чет вообще не понятен, к примеру поражает вопрос а как Логический НЕ, инвертор из 0 -> 1 делает то? )
    Что означат 1 при работе, что означает 0? Большинство схем сигналов рисуют синусоиду от (-A,A) или (-1;1)

    Вопрос интересный. Он стоит просто на стыке определений. В системотехнике логическим нулем и единицей просто принято считать уровни напряжения. Один повыше. Другой пониже (хотя не ноль). На диаграммах напряжений (если смотреть осцилографом) прямоугольных импульсов вообще не бывает. Они все - сглаженные. Фронт импульса имеет какую-то гладкость. И это вносит микро-задержки в обработку. Это кстати главная причина почему бесконечно длинные провода не могут передавать цифровой сигнал. Они - имеют емкость. Как конденсатор. Паразитную емкость. И это - проблема.

    Цифровые вентили И-ИЛИ-НЕ это обычные аналоговые схемы которые просто обладают двумя устойчивыми состояниями. Как весы. Или качнутся вправо. Или резко влево. Но по центру не зависают никогда.

    В цифовой передаче данных еще интереснее. Коды типа Манчестерского которые ты каждый день используешь в Ethernet кабелях - двухполярные и еще и обладают свойством нулевого дрейфа постоянного тока. Тоесть это тоже цифровой сигнал где есть единички и нули но сверху над ним огромная электрическая аналоговая теория которая просто оптимизирует его работу в части приема-передачи и защиты от помех.

    Короче цифровой и дискретный - это метафоры. Которые построены поверх обычно аналоговй техники которая лишь иногда (!) ведет себя как цифровая. Нам просто удобно это называть цифровым чтоб программировать. Алан Тюьринг например строил ЭВМ не реле. Это электромеханические электромагниты которые тоже решали задачи вентилей И-ИЛИ-НЕ и обладаи памятью (обычно 1 бит).

    Вобщем если ты хочешь прозреть по настоящему - почитай вообще про "аналоговую" радиотехнику. Ты будешь просто поражен простотой некоторых решений. Например операционный усилитель может умножать числа. Ну... как числа. Напряжения :)
    Ответ написан
    Комментировать
  • В каких отраслях прогеры могут быть заменены на ИИ/Конструкторами?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Мы не можем точно дать определение термину ИИ. А без этого вопрос не имеет смысла.

    Попробуйте сузить вопрос до конкретного применения ИИ. Например ИИ в распознавании лиц это одно. А Co-Pilot это вообще другое.
    Ответ написан
  • Ошибка RuntimeError: can't start new thread на Python (MacBook Pro M1 2020 ОЗУ 8 Гб) как настроить или обойти?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Можно слегка изменить код и скачать сначала четные а потом нечетные тикеры. Может проблема с потоками M1 проскочит мимо. Ну не проскочит - тогда поделить на 4 части. Тикер по модулю 4. Я всегда так делал. Если какая-то инфо-система подавилась данными. Делаем партишенинг.
    Ответ написан
    Комментировать
  • Как сделать чтобы mysql хранил таблицы в ОЗУ?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Тюнинг БД это процесс бесконечный и интересный. Вот еще брат-близнец (или сестра) под названием Мария тоже имеет двигатель для memory https://mariadb.com/kb/en/memory-storage-engine/

    Есть там нюанс связанный с кнопкой Power. Так что будьте готовы к тому что это место - временное. Для кешей подходит разве что. Какую-то ценную информацию о финансовых транзакциях туда кидать нельзя.

    Еще если БД стоит на отдельном хосте - то какую-бы быстроту вы ни выжимали из таблицы - перед ней стоит сетевой стек который вносит свои законные милисекунды. Имейте это в виду.

    Вообще такая задача лучше ложится на структуры данных самого приложения. Поэтому - комменарий Дмитрия выше. Это звоночек о том что вы что-то не то делаете.
    Ответ написан
  • Нужны ли интерфейсы?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Вообщем я решил забить на них в своих проектах и подключать в компонентах не интерфейсы, а сами используемые компоненты. Это по моему мнению упрощает структуру проекта. Но боюсь старшие товарищи меня заругают, скажут так неправильно, не solidно, зависимости, непричесанные интерфейсы, трудно отслеживать single responsibility.


    Вопросы правильные и интересные.

    Spring вообще очень сильно девальвировал ООП. Он превнес туда целый спектр вопросов в части аспектного программирования. Аннотации SpringData, SpringWeb, SpringSecurity. И поэтому само по себе обсуждение ООП стало вторичным. Важнее Bean. Lifecycle бина. Способы его инжекции в другие бины и прочее.

    Кстати предлагаю тебе ради интереса взять какой-то pet-проект и просто переписать его без Spring. Хороший творческий челлендж. Я так делал. Потом можно попробовать Dagger2 / Guice в качестве инжекторного двигателя добавить сбоку. Там правда будет меньше других возможностей но мне кажется что для большинства проектов этого достаточно. А может быть проект даже станет проще.

    Это кстати прямое следованию принципов KISS/Yagni. Так что твои коллеги-теоретики потеряют часть своих аргументов. Будешь бить их простотой. Santa simplicitas.
    Ответ написан
    Комментировать
  • На каком железе лучше всего начать изучении C++ с нуля?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Мне всегда был интересен стационарник с точки зрения того что туда можно было подключить много устройств. Сначала были ISA-слоты. Потом PCI, потом express. Потом дисковые шлейфы менялись IDE/SATA-1-2-3. Короче любил я это дело. Возился со списанным железом. С неработающим. Был рекорд что я неделю сидел с сгоревшим WD в котором половина блоков была битая. Переформатировал его на штук 10 disk partitions так что битые секторы не попадали в пространстово использования. И потом скленил заново через LVM. Тогда я только изучал Linux Redhat.

    Ноутбук в этом смысле как мобильный телефон. Он просто работает но нету такой себе творческой свободы. Разве что USB слоты.

    Почему я речь завел про железо и С++. Ну просто мне кажется что С++ ник должен быть отчасти железячником. Иначе зачем вам С++ ?
    Ответ написан
    1 комментарий
  • Как правильно прописать код в Docker?

    mayton2019
    @mayton2019
    Bigdata Engineer
    У тебя в какой папке лежит app?
    Ответ написан
  • Как удалить дубликатные записи в postgresql?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Tayrus0 почитай еще про оконные функции. Ключевые слова ROW_NUMBER(), PARTITION BY.
    Ответ написан
    Комментировать
  • Допускается ли в коде смешивать парадигмы программирования?

    mayton2019
    @mayton2019
    Bigdata Engineer
    - ООП
    - Функциональное
    - Процедурное
    - Структурное

    Это во первых - устаревшие понятия. Все из 20-го века. Сегодня они почти не актуальны.

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

    В современном программировании практикуется конвенция которая принята в команде. Вот придете на проект и вам покажут как пишушт все. И будете так писать. Никто не будет упарываться по поводу трушности ООП или еще чего-то. А в техническом задании от бизнеса вообще ничего не будет на тему стиля кодирования. Там будут описаны просто требования по бизнес-кейсам.
    Ответ написан
    8 комментариев
  • Как сложить время, которое у меня в переменной форматом 00:00:00?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Во всём виноваты древние Вавилонцы. Это они придумали 60 ричную систему счисления. Вот изза нее у нас и в минуте 60 секунд и в часе 60 минут.

    Переводи каждую строчку время в секунды . Потом складывай. А потом обратно разводи результат в ЧЧ ММ СС.
    Ответ написан
    Комментировать
  • Почему последний множитель в формуле числа размещений = (n-k+1)?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Потому-что произведение может стать равным нулю если хотя-бы один из множителей равен нулю.
    Ответ написан
    Комментировать