Задать вопрос
  • Перед выполнением в цикле exec.Command желательно "разогреть"?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Скорее всего ничего тут поделать нельзя. Под windows процессы стартуют медленнее чем под Linux.

    Попробуй ради интереса замени PING на DIR и посмотри как изменится время.
    Ответ написан
  • Как метод len заменить функцией?

    mayton2019
    @mayton2019
    Bigdata Engineer
    def len2(s, cnt = 0) : 
      if (not s) :
        return cnt
      else :
        return len2(s[1:], cnt + 1)
    Ответ написан
    Комментировать
  • Возможно ли использовать SMTP gmail сегодня?

    mayton2019
    @mayton2019
    Bigdata Engineer
    В перспективе - нет. Сейчас MS продвигает идею безпарольной аутентификации в ПК. И они ее добьют 100%. Верю в железную хватку синего гиганта. Google несколько лет назад сдал продвигать MFA для почты. Пока - в рекомендательном режиме. Но скоро, когда они протестируют на 80% юзеров - то остальные перейдут туда едином порядке. Просто у вас больше не будет опции пароля как единого способа логина. Поэтому SMTP или другой протокол - здесь не суть важно. Будут важны сеансовые токены и многофакторка.
    Ответ написан
    Комментировать
  • Работа C++ Junior в 2022?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Ты пишешь
    Я изучаю C++ лет этак 12 (с 6 класса, получается).

    что с этого можно понять? Что ты настолько крут что тебе сам чорт не брат?

    Я немного дурак и в кресты откровенно влюбился.

    Вот тут - вообще непонятно! Сам себя взял и так низко уронил. Почему - дурак? Может ты и на собесах так о себе отзываешся? Так - нельзя. Тебя оценивают не только по скилам но и по уверенному тону голоса. В США это еще важнее. На тебя смотрят с прищуром. Каков наглец а? Думают. Но ладно. Дадим ему лидерскую позицию.

    Всё же остальное - сплошь и рядом QT и анрил

    По поводу Unreal Engine. Мой знакомый лид игровой индустрии (не в РФ) говорит что при прочих равных условиях он сразу возьмет начинающего человека имеющего опыт Unreal быстрее чем среднего по С++ но без знаний оного. Таков рынок.
    Ответ написан
    2 комментария
  • Возможно ли поставить 2 сервера NGINX для одновременной обработки запросов?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Не вижу причин чтобы запускать N nginx-ов при таком-же количестве серверов приложений.

    Но мне вот интереснее само приложение. Оно должно обеспечивать трансфер сессии между узлами так чтобы было всё равно где обрабатывать реквест.

    Вы пишете
    Оба сервера имеют прямое подключение к
    друг к другу.

    Это как? Какого рода информацию они гоняют? Что будет если один падает? Что будет если поднимается? Как быстро состоится кворум? Вот это реально интересно.

    А синхронизация конфигов... ну такое. 100 способов есть и все некритично.
    Ответ написан
  • Возможно ли сгенерировать из OpenAPI/SWAGGER документации еще одну документацию?

    mayton2019
    @mayton2019
    Bigdata Engineer
    По сути вопрос звучит так. На вход приходит json и надо, цитирую:

    вытащить из json только те роуты, которые нужны


    Я думаю задача не сложная. Лет 10 назад я наловчился транформировать XML через язык типа XPath и я думаю что для json тоже такое существует.
    Ответ написан
  • Как сделать размытие по гауссу изображения. Что на вход то поступает?

    mayton2019
    @mayton2019
    Bigdata Engineer
    На хабре есть статья посмотри https://habr.com/ru/post/142818/

    Ты всё в кучу смешал. При чем тут Фурье? Это совсем другое преобразование и смысл его другой.

    Где в этом уравнение передается информация про цвет или яркость, пикселя?

    Никакая яркость пикселя тебе не нужна. Фильтр применяется последовательно к каждому цветовому каналу отдельно. RGB, CMY рассматриваются как 3д поверхности где высота поверхности равна значению канала.
    Все вычисления лучше нормировать к диапазону вещественных чисел от 0 до 1 а когда все расчеты закончены - обратно приводить к RGB(8:8:8) например.

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

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

    2) Матрица применяется к каждому цветовому каналу изображения по принципу перемножисть каждое на каждое и сложить. Пиксели перемножаются на матрицу. Результат всего записывается в центральный пиксель. И так далее.

    3) На краях изображения будет баг. Потому что матрица вылезает за края. Картинки. Ты должен придумать как красить несуществующие пиксели. Можно красить в какой-то средний близкий цвет по расстоянию.

    4) Обычно матричный фильтр работает медленно. Есть оптимизации на низком уровне. В основном - перписывание на длинных командах типа SSE/AVX. И разбиение картинки на полоски с предварительным расчетом умножений. Но это работет для малых матриц. И надо учитывать влияние и размер кешей. Тоесть цифры которые будут получены на 1 конфигурации железа могут сильно отличатсья от другой.
    Ответ написан
    2 комментария
  • Почему не используют NoSql решения на каждого пользователя?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Я думаю что твоя идея не лишена смысла. Можно на каждого пользователя поднимать экземпляр БД.
    Что здесь хорошо изоляция и безопасность. Что здесь плохо обилие linux-процессов на каждого пользователя. Например если у тебя чат на 10 000 человек - то поднять столько-же процессов на одном хосте сложнее. Любые операционки имеют какой-то минимальный футпринт памяти и ресурсов ОС на процесс. И переключение. Планировщик будет бегать между 10 тыщ процессов обслуживая их события. Что еще может быть плохо. Администрирование этого грида приложений. Бэкап проще делать имея 1 сущность процесса и 1 лог ошибок. А что делать с 10 тыщами логов. Отвественый девопс должен как-то просмотреть все логи? Или уже начать писать автоматизацию бэкапов. Кажется пустяк - но ты сядь и просто попробуй сам это сделать. Или мониторинг. Как проверить что все 10 тыщ не содержат в логах ошибок?

    Вообще маппинг между приложениями и БД всегда идет сложным образом. Обычно m : n. И очень редко удается сделать 1:1 или как-то по другому.
    Ответ написан
  • Как установить curl с помощью vcpkg?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Тебе шашки или ехать? Скачай curl отсюда https://curl.se/windows/ и работай себе спокойно.
    Ответ написан
  • Как поступить с заказчиком?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Я думаю - ситуация нередкая. Заказчик - как типичный бизнес может всего тоже не знать. Он может не знать деталей которые сам получает чуть позже. Так наш мир устроен. Scrum/Agile и никакого ватерфола.

    Если проанализировать историю то было 2 события.

    Первое
    Я с проектом ознакомился в общем, глянул макеты, оценил сервисную часть в общих чертах с слов заказчика


    Второе
    По итогу сервисная часть оказалась жутко сложной и объемной


    Вот что случилось между 1 и 2 событием? Почему так получилось что не было понято с самого начала? Я вобщем-то автора понимаю. Я - тоже интраверт и тоже люблю начинать код писать без лишних разговоров. А в этом как раз и ошибка.

    Что делать? Во первых не нужно врать заказчику. Бизнес любит честность в отношениях. Скажи что твой косяк. Недооценил. Недооценка сложности - частая ситуация. Как выйти из этого.

    1) Поговорить об упрощении задания. Выдай предложение при котором ты смог бы просто закончить работающий прототип.

    2) Предложить альтернативный план который потребует больше денег и времени. Поищи сам себе консультантов которые помогут.

    Бросать эту разработку я считаю не надо. Это малодушие. Если выгораешь и работаешь по 12 часов - тоже сообщай заказчику. Это тоже честная и понятная позиция.
    Ответ написан
    3 комментария
  • Какие существуют бесплатные базы данных?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Для заметок база данных не нужна.

    Я использую git для заметок и когда надо синхронизировать десктоп и ноутбук - делаю соотв pull/push.

    Всё что бесплатное - либо действует 30-60 дней пробного периода. Кроме того никак не помогает вам в решение технических issues. Бесплатный пользователь облаков - это бета-тестер. Не обижайтесь если внезапно версия обновиться без вашего ведома. Чтоб не было сюрпризов вобщем.
    Ответ написан
    1 комментарий
  • Соответсвует ли код принципам солид?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Есть такой анекдот что на 100 строк разработки Java приходится 10 строк Clojure с точно таким-же
    алгоримическим смыслом. Так вот мне кажется что в данном исходнике этот коэффицент еще худе.

    Код - по большей части ничего не делает. Он настолько формален и общ, что мне кажется что 50% callbacks можно заинлайнить и кода станет меньше а читаемость пострадает не сильно. Вобщем - редкий случай когда SOLID вместо помощи разработчику - создаёт ненужные абстракции.

    У кода - очень неравномерная плотность информации. Например в Weapons/Bow.cs есть метод BallisticVel который резко контрастирует с другим кодом. Тут - как будто клавиатуру взял другой человек и написал в Haskell-style формулу. У меня возникает вопрос. Почему автор так старался декомпозировать всякий формализм а сложную функцию не декомпозировал? Вобщем такая резкая смена плотности информации на квадратный метр исходников - очень настораживает.

    В качестве метрики "полезности" - я-бы спросил автора

    - Ты бы сам себе заплатил-бы за такой код?
    Ответ написан
    2 комментария
  • Как понимать математику?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Про Курта Гёделя уже можно начинать?
    Ответ написан
  • При удалении из массива, удаленный элемент дублируется и остается в массиве?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Работает другая ветка "if"
    Ответ написан
    Комментировать
  • Как лучше организовать многопоточное добавление данных в словарь (Dictionary)?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Несколько мыслей.

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

    2. Я не знаю ни одной структуры данных которая-бы себя хорошо вела при конкуретнтной вставке. Concurrent - коллекции нужно только в том случае когда результат вставки в ту-же милисекунду нужен вам на чтение как результат из другого потока. Это очень строгое требование и реально очень мало систем им обладают. Я-бы предложил следующее. Если 5 потоков пишут независимо без обратной связи - то пускай пишут в буферы в несколько килобайт. И пускай 6 поток периодически собирает эти буферы. Так можно уменьшить конкуренцию. Лаг можно регулировать. Сколько хотим? 10 мс? 100мс?

    Еще вариант - потоки пишут каждый в свой Dictionary. И периодически происходит merge. Пакетом. Тут надо померять performance. Вообще в конкурирующих работах с key-value ищут возможность сделать partitioning. Если удасться то будут конкурировать максимум 2 потока а не 5.
    Ответ написан
    Комментировать
  • FTP не загружает файл на сервер, что делать?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Есть такая легаси штука как transfer mode. По умолчанию он может быть ascii и для бинарных файлов может быть какая-то фигня после передачи. Лучше сразу после подключения к серверу включить binary mode. На всякий случай.

    Вообще подключись консолью и посмотри размер файла.
    Ответ написан
    1 комментарий
  • Почему программа «шифрования» не работает с русским алфавитом?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Плох тот учитель что не видит простой шифр Цезаря. И какая разница Питон или не питон когда
    просто надо спросить ученика как он вообще сам понимает свою разработку?

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    У домашних проектов одна беда. Их никогда не заканчивают. Бросают где-то посередине потому-что кроме автора - никому не нужно. По поводу вопроса - бери просто 1-й вариант и делай как проще. Потому-что упрощать на данном этапе - гораздо важнее чем усложнять. Усложнить любой джун сможет. Ведь требований нет.
    Ответ написан
    1 комментарий
  • Как открыть .exe через сайт?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Самое близкое по технологии что подходит - это Windows Terminal Server.

    https://docs.microsoft.com/en-us/troubleshoot/wind...
    Ответ написан
    Комментировать