Профиль пользователя заблокирован сроком с 20 сентября 2021 г. и навсегда по причине: систематические нарушения правил сервиса
  • Как синхронизировать базу данных между сервером (PostgreSQL) и клиентом (SQLite)?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Это довольно сложная тема.
    Обычно делают так, чтобы первый раз брать всю базу, а потом только изменения, чтобы не скачивать огромную базу каждый раз.
    Ответ написан
    4 комментария
  • Как определяют номер телефона у посетителей сайта?

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

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Конечно можно встроить внутрь приложения любой свой файл.
    В чём проблема-то?
    Ответ написан
  • Как сделать большой объем текста уникальным?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Пользуйся синонимайзерами. Будет тебе уроком.
    Ответ написан
    Комментировать
  • Почему Python не видит tensorflow?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Мало данных.
    Система.
    Версия.
    Окружение.
    Видеокарта.
    Драйвера
    И прочее...

    Я несколько дней мучался когда ставил TF на свой ноут
    Ответ написан
    Комментировать
  • Как реализовать выдачу рандомного элемента из массива с учетом рейтинта?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Если я правильно понял задачу, то я решал бы её так.
    1. Отсортировать масси по убыванию значения оценки. P.S. На самом деле оказалось, что не обязательно.
    2. Далее исходим из таких соображений. Пусть сумма всех оценок sum(M(i)) будет равна S и примем это за 100% вероятность. То есть, со 00% вероятностью один из элементов нашего массива будет выбран.
    Тогда вероятность выпадания i-го элемента будет пропорциональна его оценке: P(i) = M(i)/S
    3. Будем проходить по каждому элементу отсортированного массива и будем вычислять вероятность P(i). Выбираем случайное число P = random()*N, где N - оставшееся число непройденных элементов. Если P < P(i), то показываем этот рандомный элемент i и завершаем цикл.
    4. Пересчитываем S = sum(M(i)) для всех оставшихся элементов.
    Сложность алгоритма получается O(N^2)
    Это так, сходу решение.
    Но его можно улучшить ка минимум до О(N), а, возможно, и до O(1). Но тогда придётся ввести дополнительное поле вероятности.

    UPD: Вынесу пример из комментариев:

    Пусть у нас массив из оценок [5, 5, 3, 2]
    Сумма всех оценок S = 5+5+3+2 = 15
    Вероятности выбора каждого элемента:
    [5/15, 5/15, 3/15, 2/15] = [0.33333, 0.33333, 0.2, 0.133333], в сумме они дадут 1, как и должно быть.
    1. Берём первый элемент с оценкой 5 и с вероятностью 0.3333 выбираем его: P = random()*1.0
    Если P<0.333, то выбираем 1-й элемент и заканчиваем работу. Иначе идём дальше
    2. Берём 2-й элемент с оценкой 5. Теперь у нас вероятность изменилась и мы её пересчитываем, чтобы в сумме была 1:
    S = 5 + 3+ 2 = 10
    Пересчитываем вероятности:
    [5/10, 3/10, 2/10] = [0.5 ,0.3, 0.2] - в сумме опять 1, как и должно быть.
    Теперь с вероятностью 0.5 определяем, берём ли мы 2-й элемент в качестве результата или нет: P = random()*1.0
    Если P< 0.5, то заканчиваем работу. Иначе, идём дальше.
    3. Пересчитываем общую сумму оценок: S = 3 + 2 = 5
    Новые вероятности для оставшихся оценок: [3/5, 2/5] = [0.6, 0.4], в сумме опять 1
    С вероятностью 0.6 определяем, оставляем ли 3-й элемент в качестве результата или нет.
    Если нет, то дальше
    4. Пересчитываем сумму оставшихся оценок: S = 2.
    Новые вероятности для оставшихся оценок: [2/2] = [1].
    То есть, со 100% вероятностью забираем последний элемент.
    Но вот чтобы добраться до последнего элемента надо продраться через тернии более высоких оценок. Сложно, маловероятно, но в принципе это возможно.

    UPD: Для оптимизации расчёта новой суммы S просто вычитаем из предыдущей S значение оценки i-го элемента. Сводим алгоритм к O(N)

    UPD2: Если надо инвертировать и сделать так, чтобы элементы с минимальными оценками показывались чаще, то надо инвертировать вероятность: 1-P

    UPD3, решение за время O(1) Я тут ещё раз подумал и решение оказалось ещё более простым.
    Пусть у нас массив из оценок [5, 5, 3, 2]
    Сумма всех оценок S = 5+5+3+2 = 15
    Вероятности выбора каждого элемента:
    [5/15, 5/15, 3/15, 2/15] = [0.33333, 0.33333, 0.2, 0.133333]
    Строим отрезок, откладывая на нём эти четыре значения.
    Берём случайное число от 0 до 1 и смотрим, в какой из этих четырёх отрезков он попадает. Вот и решение.
    Если надо, чтобы маловероятные оценки выпадали, то строим инвертированные вероятности:
    [0.6666, 0.6666, 0.8, 0.8666666]
    Ответ написан
  • Установил python kivy. Почему не работает первая программа?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    У тебя ругается на отсутствие либы PIL. Установи её черезpip install PIL

    И ещё. У тебя в путях есть кириллица (юзер "Ира"). Это очень часто является проблемой для разного рода внутренних библиотек и не только в питоне. Ну не дружат они с кириллицей.
    Ответ написан
    5 комментариев
  • Как найти почтовый индекс?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Можно вводить любой. Это формальность
    Ответ написан
    Комментировать
  • Как защитить код?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Open Source - наше всё
    Ответ написан
    5 комментариев
  • Как пандемия коронавируса и кризис повлияли на рынок джуниоров и стажеров?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Мы пока не набирали джуниоров в последнее время.
    Т.к. я уже насмотрелся на джунов, то могу только предположить, что с этим стало тяжелее. Джуниору нужен наставник, который всегда рядом. На удалёнке джуна натаскивать очень сложно.
    Поднимаются требования к джуниору, он должен владеть нужными инструментами уже сразу. Гит, хорошее владение основными командами, настройка VPN, поднять IDE, настроить окружение... Всё это он должен сделать сам. А в офисе ему дадут уже готовую машину, а коллеги помогли бы сразу. И при этом дома джун должен иметь достаточно мощную рабочую машину, необходимое оборудование. Тестировщикам и разработчикам мобильных приложений не позавидуешь - нужно иметь парк доступных мобильных устройств...
    И не каждый Джун владеет средствами, чтобы купить мощную машину для работы. На работе её просто выдадут.
    Добавлю ещё, что в неформальном общении в курилке, на обеде, у кофе-автомата, у кулера происходит обмен зачастую ценнейшей информацией, которую не только джун, но и любой другой сотрудник больше нигде не получит.
    Ответ написан
    2 комментария
  • Как реализовать вращение вокруг сферы?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Это просто. Находим координаты X, Y, Z, зная радиус сферы, координаты её центра и два угла: широту и долготу
    Ответ написан
    Комментировать
  • Как отображать изменения файла, который постоянно обновляется?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Никак. Если работа с файлами, то файл надо открывать/закрывать для актуализации данных.
    Если нужна актуальная информация в каждый момент времени, то тут надо использовать другие средства. Базы данных, сокеты, очереди и прочее
    Ответ написан
    Комментировать
  • Можно ли выгрузить результаты поиска Google?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Напрямую нельзя, только через парсинг. Причём, не прямой парсинг, а хитрый. Гугл это не приветствует и всячески этому сопротивляется: заставляет проходить капчи при частых запросах с одного IP-адреса, обфусцирует JS, следит за куками и вообще использует много всяких скрытых механизмов.
    Поэтому на рынке софта появляются специальные инструменты для этой цели. Часто это платные программы.
    Ответ написан
    Комментировать
  • Как отправить многомерный массив в XMLHttpRequest?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Засунуть многомерный массив в JSON и отправить POST-запросом
    Ответ написан
    2 комментария
  • Как читать журналы Windows?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Есть отличный инструмент - LogParser https://www.microsoft.com/en-us/download/details.a...
    Древняя инструкция на хабре: https://habr.com/ru/post/85758/
    Ответ написан
  • Как делают ботов?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Только не ботов, а чат-ботов в твоём случае.
    Вариантов сделать ботов - триллионы.
    Начиная от if ... then, затем ИИ и прочие технологии.
    Я даже здесь могу простого чат-бота написать:
    public String getAnswer(String text){
       if(text.startsWith("Привет")) return "Здравствуй!";
       if(text.startsWith("как тебя зовут")) return "Меня зовут Евлампия";
       if(text.startsWith("Пока")) return "До свидания";
    ...
       return "Я тебя не понимаю";
    }
    Ответ написан
    Комментировать
  • Как защитить JS код?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Защитить JS нельзя, т.к. он выполняется на клиенте, а не на сервере.
    Можно усложнить чтение с помощью обфускации. Это отсеет 90% любителей, но особо упорных это не остановит и они прочтут твой код. Тем более, что есть инструменты, помогающие в деобфускации: деобфускаторы, бьютифайеры и пр.
    Хочешь скрыть код - уходи из фронтенда и добро пожаловать в бэкенд, на сервер.
    Ответ написан
    Комментировать
  • Задача для собеседования?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Это уровень от миддла и выше.
    И вообще, это слишком затратное по времени задание. Поэтому, если и делать, то только за деньги
    Ответ написан
    Комментировать
  • Скорость циклов в c#?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Что мешает сделать тесты?
    Теоретически разницы нет. Но, естественно, всё зависит от условий.
    Поэтому делай тесты для твоей ситуации и сравнивай.
    Ответ написан
    Комментировать