Задать вопрос
  • Какие характеристики для VPN?

    @Drno
    смотря что за ВПН, смотря какое шифрование, смотря какой поток траффика...
    смотря какой Фэбрик, смотря соклько Дитейлс

    мне например и 1 ядра в 5Ггц хватает на 100 рыл.. правда сеть нагружена на 250мб\с только...

    начинай с 1\2 ядер и 2гб оперативки
    Ответ написан
    Комментировать
  • Какой ноутбук брать для разработки игр в 3D?

    @tukreb
    Если хотите, чтобы не умер через пару лет, то вам нужно искать переносимую станцию. Обычно их выпускает тайваньская фирма Clevo, но в Китае её маркируют как Hasee, в Европе Dream Machines, Saiger, XMG, а в Америке EUROCOM.
    Msi так же выпускает рабочие станции, линейка Titan называется (только не тонкая серия).
    Acer вроде раньше выпускал такие в линейке Predator, но вроде потом скатились в тонкий шлак с дохлым охлаждением.
    Такие машины стоят от 400к рублей минимум, весят до 5 кг, (вместе с блоками питания которые до 1-2 кг).
    Это единственный вариант, если вы хотите "ноутбук" и который не сгорит через пару лет из-за плохо охлаждения.
    В противном случае только ПК.

    P.S Так как Clevo - это OEM, то каждый маркирует их ноутбуки по своему, поэтому я не могу вам назвать что смотреть в Clevo. Смотрите по цене, премиальная линейка начинает от 350-400к, и чтобы были толстые.
    P.S2 Я тут глянул современные MSI Titan и все они тонкие, тогда вам остаётся искать только Clevo либо какие то очень лимитированные ноутбуки с крутым охлождением.
    Ответ написан
    1 комментарий
  • Как найти самый большой подмассив отрицалильных чисел в 2Д массиве?

    adugin
    @adugin Куратор тега Python
    Написал довольно производительное решение на свёртках. Для вычисления свёртки conv матрицы mask с ядром kernel используется filter2d из OpenCV, но эта функция может быть заменена на аналогичную из любой другой математической библиотеки - надо смотреть, какая быстрее. Также принципиально, что вычисления производятся во float32, а не в целых числах - так на порядки (!) быстрее.

    import cv2
    import numpy as np
    
    data = """1 -9 -2 8 6 1
    8 -1 -11 -7 6 4
    10 12 -1 -9 -12 14
    8 10 -3 -5 17 8
    6 4 10 -13 -16 19"""
    
    # matrix = np.random.randint(-128, 128, (1000, 1000), dtype=np.int32)
    matrix = np.int32([line.split() for line in data.splitlines()])
    
    def find_max_kernel(matrix, border=cv2.BORDER_ISOLATED):
        max_area = 0
        mask = np.float32(matrix < 0)
        ones = np.ones_like(mask)
        conv_x = np.zeros_like(mask)
        conv_y = np.zeros_like(mask)
        max_h, max_w = mask.shape
        for h in range(1, max_h + 1):
            cv2.filter2D(mask, -1, ones[:h, None, 0], conv_y, (0, 0), 0, border)
            for w in range(1, max_w + 1):
                area = h * w
                if area > max_area:
                    cv2.filter2D(conv_y, -1, ones[None, 0, :w], conv_x, (0, 0), 0, border)
                    if conv_x.max() == area:
                        max_area, shape = area, (h, w)
                    else:
                        if w == 1:
                            max_h = h - 1
                        if h == 1:
                            max_w = w - 1
                        break
            if h >= max_h:
                break
        cv2.filter2D(mask, -1, np.ones(shape, np.float32), conv_x, (0, 0), 0, border)
        p1 = np.array(np.unravel_index(conv_x.argmax(), conv_x.shape))
        p2 = p1 + shape - 1            
        return p1, p2
    
    print(*find_max_kernel(matrix), sep='\n')

    Матрица 1000 х 1000 на моих 2 ядрах обрабатывается в среднем за 82 мс:
    5de1dfa69874f249734492.png
    Пример применения алгоритма: найдена самая большая субматрица - вписанный квадрат
    5ddedb4405be8854388006.png
    Ответ написан
    Комментировать
  • Что нужно сделать во втоорой части задания?

    adugin
    @adugin Куратор тега Python
    Подозреваю, речь о том, чтобы взять из матрицы случайную строку или столбец в виде слова:
    5dd8e6a0e9166100858750.png

    Ответ написан
    2 комментария
  • Как ускорить перемножение матриц в numpy?

    adugin
    @adugin Куратор тега Python
    Не нужно этого делать.

    Во-первых, следует учитывать важность row-major и column-major order в этой операции:
    5da1a98421c64984085602.png

    Во-вторых, переход от int32 к float32 (или float64) даёт радикальное ускорение за счёт BLAS:
    5da1c7d110982244427246.png

    BLAS уже используется в numpy "под капотом" (по крайней мере, в дистрибутиве Anaconda), поэтому не следует явным образом вызывать эти функции вручную - как показано выше, это будет медленее.

    5da1bf09df2f7466403215.png
    P.S. Теория вкратце:
    Performance Tips of NumPy ndarray
    Understanding the internals of NumPy to avoid unne...
    Ответ написан
    Комментировать
  • Задача на декомпрессию строки. Почему код проходит не все тесты?

    adugin
    @adugin Куратор тега Python
    К чему такие сложности
    import re
    
    def decode(encoded):
        def repl(m): return m.group(2) * int(m.group(1))
        reg = re.compile('\((\d+)(\w+)\)')
        while True:
            decoded = reg.sub(repl, encoded)
            if decoded == encoded:
                return decoded
            encoded = decoded 
            
    assert decode('(2(3ac)a)') == 'acacacaacacaca'
    assert decode('(3(2aba))') == 'abaabaabaabaabaaba'
    assert decode('(3a)') == 'aaa'  # уменьшение длины
    Ответ написан
    7 комментариев
  • Как найти арифметическую прогрессию в списке?

    adugin
    @adugin Куратор тега Python
    import numpy as np
    from collections import deque
    from itertools import combinations
    
    # data = np.array([1487, 1847, 4817, 4871, 7481, 7841, 8147, 8741])
    
    np.random.seed(42)
    data = np.random.randint(0, 100000, 1000)
    data.sort()
    
    # Интуитивный подход (baseline), O(n^3)
    def find_evenly_spaced_v1(data):
        for a, b, c in combinations(data, 3):
            if b - a == c - b:
                yield a, b, c
                
    # Эмпирическая оптимизация, O(n^2)
    def find_evenly_spaced_v2(data):
        dataset = set(data)
        for a, c in combinations(data, 2):
            b, mod = divmod(a + c, 2)
            if (mod == 0) and (b in dataset):
                yield a, b, c
    
    # Векторный вариант
    def find_evenly_spaced_v3(data):
        grid = data.reshape(-1, 1) + data.reshape(1, -1)
        divs, mods = np.divmod(grid, 2)
        mask = np.tri(*grid.shape, -1, dtype='bool') & np.isin(divs, data) & ~ mods.astype('bool')
        for c, a in zip(*np.where(mask)):
            b = divs[a, c]
            a, c = data[[a, c]]
            yield a, b, c

    Измерения скорости для 1000 элементов:

    5d95912c852ea517827440.png
    Ответ написан
    6 комментариев
  • За сколько можно продать этот компьютер?

    xez
    @xez Куратор тега Железо
    TL Junior Roo
    За тыщу можно
    Ответ написан
    Комментировать
  • Критерии поиска грамотного специалиста для кроссплатформенного проекта?

    fenrir1121
    @fenrir1121
    Начни с документации
    Есть база данных 5 мб, с учетом коэффициентов 100 мб (150 столбцов и 100 000 строк).
    Это маленькая база, даже не думайте об оптимизациях, пока нет рабочего прототипа.

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

    Неделю назад Сбер анонсировали GigaStudio, можете немного подождать его запуска и попробовать.

    Привлекать сразу разработчиков, без подтверждения ценности продукта и минимального MVP, будет на мой взгляд не оправданной тратой.
    Ответ написан
    1 комментарий
  • С чего начать электронику как хобби в 2025?

    Для начала прочитать хотя бы одну книгу
    685cec3829b2b471193211.jpeg
    Ответ написан
    3 комментария
  • Стоит ли покупать MacBook Pro, если я только начинаю программировать?

    @knigaman
    "Начинал с Mac" - это очень странный запрос, таких единицы среди тех кто юзает mac. Большинство пересели с винды и линуха.

    Сейчас минимум по железу это неплохой 6 ядерник, 16 гб ОЗУ (а уже лучше 32 гб ОЗУ) и желательно 512 gb nvme, если мы говорим про винду или линух. Если ноут у тебя хотя бы такой то уже стоит вопрос смысла покупки мака.

    Мак нужен либо если ты конкретно хочешь пересесть на него или он тебе позарез нужен в работе (как например разработка мобильных приложений под iOS). Хотеть пересесть на мак можно даже если он тебе не нужен, например, хочется хорошее по автономности и мощное устройство.

    Если деньги позволяют и есть сильное желание (не так что ты загорелся резко, а прям мечтаешь о маке уже длительное время) - тогда покупай. Получишь и удовольствие и отличную машинку с запасом производительности на несколько лет. Только на твоем месте я бы взял все-таки на 16 дюймов экран, 14 дюймов хоть и близко к 16 дюймам, но в 16 дюймах и охлад лучше и автономность и глаза болеть не будут.
    Ответ написан
    3 комментария
  • Компьютер для постаматов/банкоматов/КСО и т.д.?

    @Drno
    там обычный неттоп, возрастом до 10 лет
    Ответ написан
    Комментировать
  • Компьютер для постаматов/банкоматов/КСО и т.д.?

    anthtml
    @anthtml
    Системный администратор программист радиолюбитель
    Что производитель вкорячил то и стоит, а это зависит от 100500 требований и заморочек
    - если штучный экземпляр собранный стартапом из соседнего гаража, то все что угодно от orange-pi до supermicro atx
    - если заводское промышленное исполнение (банкомат, касса, вендинг) с серией >10 000 шт. то скорее всего будет стоять какое заказное решение одноплатника с нужными интерфейсам
    Ответ написан
    Комментировать
  • Как работать с минифицированным JS?

    VoidVolker
    @VoidVolker Куратор тега JavaScript
    Dark side eye. А у нас печеньки! А у вас?
    Никак. С кодом после минификации не надо никак работать. Минифицированный код предназначен для доставки его по сети максимально быстро на клиент. Для изменения кода вам следует вносить изменения в исходный код и уже только потом его минифицировать, а не наоборот. Если исходного кода нет - то пропускаете через любой деобфускатор и вручную восстанавливаете исходный код. Ну или пишете сами с нуля то же самое.
    Ответ написан
    2 комментария
  • Какой лучше выбрать мини пк под сервер?

    @alexalexes
    Как медиа станции эти коробочки хороши.
    Но если вам действительно нужен сервер, то физический размер реально решает, а мини-ПК под это дело не подходит.
    Вы будете ограничены во всем.
    1. Процессор не сменить - он распаян.
    2. Слотов под ОЗУ мало, а те что есть не дадут вам поставить планки с макс. емкостью - ограничение арх. процессора.
    3. Процессор - всегда используется ноутбучный энергоэффективный вариант - как ресурс сервера так себе.
    4. Нельзя нормально организовать RAID. Вам же нужна будет надежность хранения и наращивание скорости в x-раз от кол-ва накопителей?
    5. Нельзя нормально подключить полноценные видеокарты. А БП на внешней видеокарте куда поставите - рядом с мини-ПК?
    6. Нельзя нормально охладить систему в маленьком объеме, если вам нужно включить на пиковую производительность вычисления на 24/7.
    И так далее, все преимущества мини-ПК - это недостатки для сервера.
    Ответ написан
    4 комментария
  • Парсинг с помощью библиотеки requests для Python. Как указать параметр из API если в нем заключается недопустимое значение с точками?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Дык написано же, что это за параметр:
    Request that only some attributes are returned

    И пример приведён: "name,ip,port"
    А вы там передаёте совсем другое: "185.207.214.232:27200"
    Кроме того, вы не то и не туда отправляете - вот оно и говорит, что лишнее поле. Там выше приведён пример правильного запроса - сначала научитесь отправлять правильный запрос, а потом уже используйте фильтры и опции, которые вам нужны. RTFM.
    Ответ написан
    1 комментарий
  • Как работают переводы на другие языки в играх?

    @Mercury13
    Программист на «си с крестами» и не только
    А теперь расскажу как человек, который давно и плотно интересуется локализацией, но в глаза Unity не видел.
    Локализация ДОЛЖНА храниться в простенькой базе «ключ-значение», это может быть INI, CSV, XML или что-то ещё. А то часто бывают половинчатые решения, когда общие строки локализуются, а прописанные где-то в скриптах — через зад (StarCraft первый). Или одна и та же строка служит и ключом чего-то, и выводимой локализованной строкой (Atreides/Ordos/Harkonnen в Dune II).

    Существуют два основных подхода к локализации.

    1. Есть так называемый «основной» язык, прописанный ПРЯМО в EXE-файле, ПРЯМО в скриптах игры и так далее. Локализация имеет вид
    «Open»,cmd → «Открыть»
    «The door is locked.»,level1 → «Дверь закрыта.»

    Как вы видите, ключ состоит из двух частей: строки-оригинала и уточнения. Если ключ совпадает, а уточнение — нет, берём строку без уточнения, а если и таковой нет — то что угодно. А если и ключ не совпадает — берём непереведённую.

    Адепты этого подхода — Gettext и Qt.

    2. Даже первый язык наравне с остальными.
    Cmd.Open → «Открыть»
    Level1.Locked → «Дверь закрыта.»

    Вариант 2.1: первый язык (обычно английский) используется как резервный, если локализации не нашлось.

    Сам я в пользу второго подхода, но он сложнее.

    САМАЯ простая база ключ-значение, чаще всего использовавшаяся на Java ME, где с памятью швах,— это простой линейный массив.
    [0] Открыть
    [1] Дверь закрыта.
    Всё преобразование из человекочитаемых идентификаторов S_CMD_OPEN в номера происходит на машине разработчика, генерацией файла
    constexpr unsigned S_CMD_OPEN = 0;

    Какой из методов брать?
    1. Насколько много локализации?
    2. Есть ли скрипты, GUI-формы и прочие ресурсы, способные содержать строки локализации?
    3. Насколько много больших текстов?
    4. Если программа параллельно разрабатывается и переводится: насколько тексты стабильны? Первый подход совершенно не выдерживает ситуации, когда исходные тексты меняются.
    5. Возможны ли неофициальные локализации? Метод 2 без уточнения 2.1, если программа «живая», исключает их.
    6. Что поддерживается вашим движком из коробки?
    7. Локализация встроена изначально, или приходится переводить неготовую к этому прогу?
    8. Насколько много интерфейса? У интерфейса есть противная фишка: нужно расщеплять строки, то есть давать одинаковым строкам разный ID (Open=«Открыть», «Открыто» и т.д.), и первый поход по умолчанию объединяет, второй по умолчанию расщепляет.

    И ма-ахонький апдейт. Есть ещё такое понятие, как сегмент — кусок МЕНЬШЕ локализуемого текста. То есть сегменты есть только на уровне комплекта локализации, в экспортированных текстах они склеиваются в единый текст. Обычно предложение или абзац. Сегментация используется в переводе больших текстов, особенно в интерфейсах, с такими целями.
    • Существуют тексты-«козы», которые могут найтись в памяти переводов. Например: «Серп и молот символизирует крестьян и рабочих. Осторожно, в вашем законодательстве эта символика может быть запрещена.»
    • Из-за недостатков интерфейса проги перевода можно пропустить целое предложение. Да, бывает!
    • В «живых» программах — можно помечать плохо переведённым кусок меньший, чем целый текст.
    (Живой я называю программу, которая параллельно разрабатывается и переводится. Благо методика «аджайл» предполагает частые небольшие выпуски.)
    Ответ написан
    Комментировать
  • Как работают переводы на другие языки в играх?

    VoidVolker
    @VoidVolker Куратор тега C#
    Dark side eye. А у нас печеньки! А у вас?
    перевод игры лежит в отдельном файле(например json и хранит в себе каждую строчку текста, которая применяется в игре), и потом в коде запрашивать нужную строку из файла и брать от туда значение текста для последующего применения на сцене

    Да, так оно и работает.

    или есть способы попроще

    Проще уже некуда.
    Ответ написан
    4 комментария
  • В какой контейнер ставить сертификат Lent`Encrypt в NGINX-front или NGINX-backend?

    SignFinder
    @SignFinder
    Wintel\Unix Engineer\DevOps
    Во первых для вашего определения того, что вы называете "фронт" есть официальный термин - реверс прокси.
    И конечно же сертификаты должны быть на нем.
    Ответ написан
    Комментировать