• Как быстро сгруппировать набор точек (2500х2500) по ячейкам Вороного?

    tsarevfs
    @tsarevfs Куратор тега C++
    C++ developer
    Если нужно быстрее чем за линейное время, то есть относительно сложный путь. Диаграмма вороного двойственна с триангуляцией делоне. Если соединить центры смежных ячеек диаграммы - получим триангуляцию. Локализоваться в триангуляции делоне. можно не перебирая все вершины, а переходя к соседним треугольникам в нужном направлении (delaunay triangulation walk).
    Зная в каком мы треугольнике, достаточно проверить расстояние до 3 его вершин которые совпадают с центрами ячеек вороного.
    Что-то такое реализовано тут:
    https://doc.cgal.org/latest/Voronoi_diagram_2/clas...
    И тут:
    https://doc.cgal.org/latest/Triangulation_2/classC...

    Если вы пытаетесь локализовать узлы регулярной сетки, то логично в качестве начального треугольника брать результат соседней вычисленной локализации, так как точки идут подряд. В функции по второй ссылке такая возможность есть.

    Может сработает более простой путь. Можно сначала разбить центры ячеек вороного по ячейкам регулярной(прямоугольной) сетки а затем искать ближайшую точку в соседних регулярных ячейках.
    Ответ написан
    Комментировать
  • Как проще всего перекомпилировать одну из библиотек .NET Framework (System.Net.Mail) отдельно?

    Griboks
    @Griboks Куратор тега C#
    Немного изменить? Тогда используйте методы расширения. Они как раз для таких случаев придуманы.
    Ответ написан
    2 комментария
  • Web сервер на C#, как сделать API для клиента?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Читайте про Restfull сервисы. Статей миллион, все очень просто... Писать за вас api никто не будет, а примеров с реализацией под .NET море.
    Ответ написан
    Комментировать
  • Где используются методы классификации изображений, кроме OCR/распознавания лиц?

    Kotofey
    @Kotofey
    • Автоматический контроль, например, в производственных применениях;
    • Оказание помощи людям в задачах идентификации, например системе идентификации видов;
    • Процессы управления, например, промышленными роботами;
    • Обнаружение событий, например, для визуального наблюдения или подсчета людей;
    • Задачи взаимодействия, например, для устройств взаимодействия человека с компьютером;
    • Моделирование объектов или сред, например, анализ медицинских изображений или топографическое моделирование;
    • Навигация, например, автономным транспортным средством или мобильным роботом; а также
    • Организация информации, например, для индексирования баз данных изображений и последовательностей изображений.
    Ответ написан
    Комментировать
  • Зачем скальпируют процессоры? Почему Intel сразу не ставит хорошую термопасту?

    Melkij
    @Melkij
    PostgreSQL DBA
    Давным-давно, в далёкой галактике...
    Хм, нет, в этой галактике. И не так уж давно, 199х, начало 200х годов процессоры поставлялись вообще без крышки, кулер устанавливался напрямую на кристалл CPU. Но бывало кристалл при неаккуратном воздействии повреждался. К тому же, в эти года был огромный прогресс производительности CPU, но и весьма заметный рост потребления энергии, что вело к увеличению массы кулера и повышению риска повредить кристалл.
    В итоге (не помню, кто первый), начали кристалл прикрывать теплораспределительной (и заодно защитной) крышкой. Одновременно с этим эту крышку начали снимать для разгона. Т.к. лишний посредник, немного ухудшает теплопроводность. К тому же, бывали случаи не совсем брака, кривая (выпуклая или вогнутая) крышка, кулер прижимался неплотно, что ухудшало охлаждение. Бывало, что неравномерно была припаяна сама крышка (а в те времена использовался именно припой) и ядро грелось сильнее, чем одноклассники. Иногда крышку снимали и вообще не ставили обратно. Иногда снимали, меняли термоинтерфейс и ставили крышку обратно. Штука рискованная (припой держится весьма прочно, повредить кристалл просто), давала всего несколько градусов выигрыша, поэтому не слишком популярная.

    Несколько лет назад интел офигел от отсутствия конкуренции и больше не использует припой между крышкой и кристаллом. Сначала в дешёвых CPU, начиная с Ivy Bridge LGA1155 (да, если вы не знали позицию интела: 6700K - это дешёвый процессор. Не дешёвый - это $1000 и выше). Сейчас уже и в младших представителях линейки энтузиастов (LGA 2011-3) используется термопаста вместо припоя. На счёт серверных xeon не уверен, но скорей всего там пока держится припой.

    Почему использует? Термопаста банально дешевле припоя, и значительно дешевле жидкого металла. На одного человека, выразившего недовольство новой политикой - есть армия тех, кто ничего не заметил. Первыми просто пренебрегли.

    Saboteur,
    Ни один производитель в мире не откажется от того, чтобы выпустить свою продукцию лучше, чем у конкурентов, особенно если это экономически оправдано

    Покажите конкурента. AMD Zen - надеемся, ждём. Текущая линейка не конкурент для производительного сегмента.
    А пока нет конкурента - можно снижать затраты на производство. Всё закономерно.
    Ответ написан
    4 комментария
  • Как закрыть сокет (TCP) полностью?

    Устанавливайте setsockopt() опцию SO_LINGER с нулевым или маленьким таймаутом перед закрытием сокета.
    Ответ написан
    6 комментариев
  • Как сделать автоматический деплой PHP приложения?

    Нужно попробовать Docker.

    Идеология:
    - делается Dockerfile, который описывает как с нуля развернуть проект и что делать при каждом запуске контейнера (например, почистить кеш и применить миграции). Там всего пару команд надо знать - ADD (добавить файлы), RUN (запустить команду), CMD/ENTRYPOINT (главное приложение контейнера)
    - на hub.docker.com настраивается Automatic build, который по web hook может пинать сервер, что пора забрать новый image. Можно аналогичное сделать с помощью Jenkins или вообще своего скрипта
    - когда серверу говорят, что появился новый image, он его скачивает, останавливает текущий контейнер и быстро запускает новый. Простой - пару секунд. Если это долго, можно запускать новый контейнер, а старый не удалять, перед ними ставить nginx или другой балансер и в нём переключать на новый контейнер, а потом удалять старый.
    Ответ написан
    Комментировать
  • Как привязать Dictionary к ListView с двусторонней связью?

    @MonkAlex
    C#, SQL, Delphi, C++ etc
    Модель данных выглядит паршиво. Я бы попытался обойтись без Dictionary.
    Ответ написан
    2 комментария
  • Актуален ли сейчас WPF?

    @Taksist410
    Актуален. Ничего лучше я не знаю. Этот инструмент и не должен постоянно разрабатываться т.к. задачу свою решает. Кстати у WinForms не такая уж плохая судьба. Он вполне работоспособен и его многие используют с большим удовольствием.
    Ответ написан
    2 комментария
  • Silverlight умер?

    @dmitryKovalskiy
    программист средней руки
    Он в интенсивной терапии , в критическом состоянии. А в соседней палате лежит Flash
    Ответ написан
    3 комментария