Задать вопрос
  • Перспективно ли изучения GO для начинающих?

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


    Письмо, полное сомнений и множества вопросов. Я не совсем понял что требуется от нас. Если отвечать на главный вопрос - то да. Перспективно. Go драйвит Google как основной язык для микросервисов. Но учитывая возраст кандидата я-бы спросил следующее.
    - как с английским?
    - как быстро обучаешся чему-то новому?
    - согласен ли на релокацию?

    Какие перспективы в РФ - понятия не имею но перспективы в зарубежных конторах - есть.

    Хочу предупредить автора об ошибках которые я сам совершал. Я думал что дело в языках и технологиях. Но это не так. Дело в коммуникациях. Я работал минимум с 5 зарубежными компаниями и я своими глазами видел что мои знания просто нивелировались на фоне например моего не очень сильного английского. А другие teammates в силу широких коммуникатиционных скилов могли очень быстро найти контакт с нужными людьми и обходили
    меня в карьере достаточно быстро.

    По сути когда тебе за 40 - вообще не имеет значения какой язык ты знаешь. У тебя за плечами должен быть уже
    такой багаж что тебя можно просто брать как опытного советника в технических вопросах. Язык можно подучить но если речь идет просто о распределенных системах и микро-сервисах то больше знаний требуется в части например анализа узких мест системы. Кеширования. Грамотного дизайна безопасности и репликаций и бекапов и восстановления от сбоев. Этот пласт знаний вообще лежит вне языка. И поэтому джун даже очень хорошо выучивший Go или Python не может решать такие вопросы. А автор - скорее всего может. Барьером может быть
    какая-то банальность. Например язык. Поэтому я и спрашиваю.
    Ответ написан
    4 комментария
  • Как можно вычислить тип?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Ну ты почти все правильно написал. Только лишний кастинг не нужен.

    if isinstance(message.text, int):
    Ответ написан
  • Как выполнять SOAP запросы в нескольких параллельных потоках?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Давайте оценим время для 1 потока. 47К позиций - это надо полагать 47 тыщ SOAP-requests надо сделать. Берем среднее время 400 ms до 3s это будет допустим 1700 ms.

    47000 * 1700 ms = 79900s = 1331min = 22hours.

    22 часа на 1-поточную загрузку товаров.

    Из личного впечатления. SOAP - это не очень быстрый протокол. Хрен его закешируешь на н-жинкс. И я думаю что если его запускать в 2-4-8 потоков то ситуация может усугубиться. Если время прыгает в диапазоне от 400 мс до нескольких секунд то это значит что нагрузка в базе плавает сильно. И владелец этого SOAP-сервиса будет ой как не в востороге от ваших экспериментов. Вряд-ли он предполагал что кто-то будет делать массовые выгрузки.

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

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    В задаче есть 2 смысла. Первое это собственно алгоритмизация. Показать преподавателю как вы умеете декомпозировать задачу на примитивные шаги. И показать оптимизации. StringBuilder к примеру. И второй смысл - просто решить задачу например используя JavaStreams. Это будет красивее. Компактнее. Но показать алгоритмизацию будет неудобно.
    Ответ написан
    3 комментария
  • Стоит ли использовать Object как тип возвращаемого значение метода в java?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Что с этим Object будет делать вызывающий? Непонятно.

    Я-бы обсудил контракт этого метода. Если он должен вернуть заглушку которая просто символизирует пустой результат вызова - то можно использовать Optional и указать опциональный тип. Если пустой список - то Collection.emptyList().

    Я не вижу никакого смысла в бизнес-приложении использовать тип Object. Он - технический. А не прикладной.
    Ответ написан
    5 комментариев
  • Более быстрый способ нахождения всех делителей числа?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Суть вопроса - алгоритм факторизации.

    Чтобы ускорить факторизацию есть много путей. Во первых - отказаться от языка Python в пользу C++ или Rust.

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

    И step надо делать не по 1 элементу а по нечётным начиная с 3.

    Есть ещё алгоритм Эратосфена. Обрати внимание.

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

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Что за вертикальная палочка? Зачем она?

    ALTER TABLE sl.lesson {
        DROP CONSTRAINT lesson_timetable_id_fkey |
        DROP COLUMN timetable_id
    }


    А это что?
    liquibase.exception.ValidationFailedException: Validation Failed:


    Изменял change-sets грязными руками? Этого нельзя делать. То что установлено в репо - маркируется контрольной суммой и нельзя фиксить задним числом. Создаёшь новый changeset который исправляет.
    Ответ написан
    Комментировать
  • Какой самый легкий путь для создания модели с помощью машинного обучения?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Дело в том что рынок "машинного обучения" сильно перегрет. Каждый newcomer решает любую задачу маш-обучем даже если ему надо сложить 2 + 2. Я не шучу это действительно так. Доходит до смешного. Там где нужен фильтр низкой частоты или расчет арифметического среднего все пытаются втащить методы которые на два порядка сложнее и энергозатратнее.

    По поводу вопроса. Допустим ты играешь в PacMan (желтый колобок который кушает белые точки на черном фоне) и ты хочешь просто найти пакмана - то тебе достаточно к примеру уменьшить размер экрана в 32 раза и тогда колобок станет размером в 1 пиксел (я предполагаю что он был размером 32 на 32). При усреднении цвета - брать max. Между черным и желтым - всегда выбирать желтый. Далее после того как колобок найден на мелком поле - и известны его координаты - можно двигаться в обратную сторону увеличивая масштаб. И за 5 итераций найти точные координаты ПакМана. В моём алгоритме вобщем-то нет никакого opencv. И я утверждаю что мой алгоритм менее ресурсоёмок чем все прочие подходы.

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

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

    В случае с билибердой написанной как

    fffjjj ....

    второй уровень даёт сбой. Он не видит знакомых слов.

    На самом деле я не знаю как работает тессеракт. Надо читать его настройки. Но если-бы я распознавал билиберду из символов - то я-бы искал именно эти языковые семантические настройки.
    Ответ написан
    Комментировать
  • На каком ЯП стоит писать программу для управления компьютерным клубом (десктоп)?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Тут наверное главный вопрос не язык а ОС и платформа. Подозреваю что клуб работает на Windows десктопах. И нужно искать тот инструмент который ближе (нативнее) по отношению к этой ОС. Разумеется глупо выбирать Java/Python. Надо брать технологии которые опираются на .Net. VB/C#/F#. Да много их.
    Ответ написан
    Комментировать
  • Бот не отправляет переменные?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Это не будет работать. Последнее несколько чисел в номере карты - контрольные. Они страхуют ввод номера карты от опечаток. Посмотри что такое алгоритм Луна.

    И первые несколько цифр показывают обычно код банка и код платежной системы (Viza, Maestro). Нагуглишь сам.
    Ответ написан
    Комментировать
  • Какие книги по машинному обучению стоит изучить?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Я бы очень хотел чтобы в книге разбирались конкретные библиотеки (tensorflow например), а не просто голая теория.

    Тут что-то не то. Вопрос не так поставлен. Ведь ТензорФлоу это чертов API и по сути тоже теория. Твой вопрос наверное звучит так что нужны какие-то практические задачи с решениями. Верно?
    Ответ написан
    1 комментарий
  • Кто знате в чем проблема с SQLite3?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Обычно на пустоту (None) проверяют так.

    if USERDATA is None:
    Ответ написан
    Комментировать
  • Словарь для брута rar архива возможно сделать через Блокнот?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Я-бы предложил сначала придумать выражение типа регулярки, которая просто обобщит все варианты которые возможны. Из частного случая

    *!Tomsk2018*Oksana!  
    *06Tomsk08*Oksana18!*


    Можно предположить что есть два произвольных ASCII-NUM-CTRL символа. Потом Tomsk. Потом календарная дата от 2008 до 2018 года в двух форматах YYYY, YY. Потом женское имя. И потом опционально еще раз календарная дата и 2 ASCII-NUM-CTRL символа.

    Давайте посчитаем количество. Пускай для простоты ASCII-NUM-CTRL = 128 символов.
    Даты - 10 лет и еще 2 формата итого 20 штук.

    Итого. 128 * 20 * 20 * 128. Но у нас еще есть пустая комбинация NULL (опция). Для простоты просто добавим +1 к каждому множителю и таким образом закроем эти опциоанльные строки. Получается

    129 * 21 * 21 * 129 = 7338681

    Семь мильонов. Словарь - детского размера. Вобщем подбор вполне осуществим.

    P.S. Я надеюсь что мы не нарушаем правил qna обсуждая такие вещи. И я надеюсь что автор честен и спрашивает это только для личного пользования.
    Ответ написан
    7 комментариев
  • Каким образом посчитать большое кол-во чисел после запятой?

    mayton2019
    @mayton2019
    Bigdata Engineer
    У Python 2.x, 3,x были разные формы представления числа типа int.

    Поэтому я бы выбирал тот тип данных который даёт arbitrary precision.

    Разумеется плавающая точка здесь не помощник.
    Ответ написан
    Комментировать
  • Как узнать место пересечения луча со сферой?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Мне нужна функция которая возвращает координаты столкновения луча со сферой

    Сразу замечание. Давайте перечислим ситуации которые могут быть.

    1) Луч пересекает сферу в 1 точке (касательная). Или луч испускается изнутри сферы.
    2) Луч пронизывает сферу в 2 точках (наиболе общий кейс)
    3) Луч не попал в сферу.

    Наша функция (какая-бы она не была) должна возвращать 3 типа этих результатов. Или просто список от 0 до 2х векторов в пространстве (x,y,z). Я-бы предпочел перечисление из 3х типов результатов. Мне кажется что это достаточно важно.
    Ответ написан
    Комментировать
  • Как гарантировать отправку в кафку некоего события?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Нет никакого смысла страховать Кафку. Она совершенно самодостаточна. Есть настройка message delivery semantics. Почитай про нее. Вобщем идея такава что - каждый сам себе в зависимости от бизнес требований выставляет такие параноидальные настройки producer/consumer, чтобы было и быстро и надёжно одновременно.
    Ответ написан
    Комментировать
  • Можно ли обучить бота повторять действия в игре?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Если речь идет о computer vision - то да. Скорее всего можно. Но мне жаль ваш талант. Если вы действительно создатите такого бота который обучается по картинке то вас можно нанимать на работу и платить столько денег что дешевая прокачка Эльфа в какой нибудь MMORGPG вам станет просто не нужна. Сможете купить все.
    Ответ написан
    Комментировать
  • Нужно нагрузить сеть?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Есть много способов устроить нагрузочное тестирование. Как вариант - приложение JMeter https://jmeter.apache.org/

    При чем здесь Wifi - непонятно. Обычно тестируют приложение а не частные куски сетей.
    Ответ написан
    Комментировать
  • Как мониторить Spring Boot процесс (вылетает)?

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

    Для начала тебе надо посмотреть чем заняты потоки в обычно (стационарном режиме) и в тот момент времени когда системе стало плохо. Когда именно - ты сам определишь. Пишешь дескыть "оно останавливается" - значит есть какой-то субъективный способ понять что беда уже случилась.

    Значит тебе надо дважды вызвать вот эту утилиту

    $ jstack --help
    Usage:
        jstack [-l][-e] <pid>
            (to connect to running process)
    
    Options:
        -l  long listing. Prints additional information about locks
        -e  extended listing. Prints additional information about threads
        -? -h --help -help to print this help message

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

    И еще понаблюдай глазами за памятью через JVisualVM. Может что-то раньше увидишь.
    Ответ написан
    Комментировать