Задать вопрос
  • Как сделать быстрый поиск в шифрованной системе?

    @rPman
    "Быстро" не получится.
    Ваш подход максимально верный - поиск должен осуществляться на клиенте.

    Есть гомоморфное шифрование, позволяет буквально проводить вычисления над зашифрованными данными без их расшифровки. Но это адский треш, вся база данных на каждую операцию должна проходить через вычисления. Помню был аддон для postgres (давно, маловероятно что поддерживается), так же помню была статья про компилятор типа C языка (без циклов)
    Ответ написан
    Комментировать
  • Как правильно записать данные в файл csv, ошибка: memoryerror?

    Steel_Balls
    @Steel_Balls
    0KLRiyDQv9C40LTQvtGALiDQmNC00Lgg0L3QsNGF0YPQuQ==
    a = [(q + w + e + r + t + y + u + i) for q in z for w in z for e in z for r in z for t in z for y in z for u in z for i in z]

    Ты сам-то понимаешь зачем этот изврат сделан?
    Нет?
    Ну я тебе подскажу - чтобы сломать память.
    А ещё учи структуры данных n^8 => O(n^8) - вот вам цена за "короткий и удобочитаемый код". Под капот никто, конечно же, не смотрит.
    Ответ написан
    Комментировать
  • Как сделать быстрый поиск в шифрованной системе?

    @Everything_is_bad
    Например, продолжить твое "сейчас" и на клиенте хранить индекс всех сообщений (если такое возможно). А так гугли "searchable symmetric encryption" и "полностью гомоморфное шифрование"
    Ответ написан
    1 комментарий
  • Грозит ли чем-то копирование сайта?

    Adamos
    @Adamos
    Во-первых, это аморально. "Жнешь там, где не сеял". С какого хрена ты вообще считаешь себя вправе так делать, даже если обойдешься без уголовного преследования?

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

    Ну и в-третьих, это все бред. Никому не всрались эти закрытые CMS-ки, нет в них ни черта уникального и ценного. Их главное преимущество и цель существования - это уменьшить расходы студии на конвейер по клепанию одного и того же да привязка клиента именно к этой студии, потому что больше в их велосипеде никто не разбирается. Оставь тот велосипед на улице - только такой же жадный неуч и подберет.
    Ответ написан
    Комментировать
  • Ноутбук для программирования для php?

    GavriKos
    @GavriKos
    минимально подойдет любой, у которого есть клавиатура, монитор и который может запустить Linux.

    А дальше зависит от степени извращений - нужны ли контейры, нужна ли IDE, размеры проекта, сопутствующие технологии и прочее прочее.
    Ваш подойдет, только оперативы мало
    Ответ написан
    4 комментария
  • Какой хостинг выбрать для web проектов на java?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Придется научиться все делать ручками!
    Поставить томкат и nginx например. В томкате есть админ-панелька, но с ней тоже нужно разобраться. В ней можно war-файлы публиковать...
    Поставить letsencrypt или вместо nginx поставить caddy, или haproxy.
    Ну и я вообще не понимаю, зачем все эти панельки нужны, они все делают из рук вон плохо. Причем, один раз разобравшись, эти панельки нафиг не нужны!
    Да и смысла большого в war-файлах не вижу уже лет 10! Есть и spring, и vertx, и sparkjava, и с десяток всего другого, вместо толстых контейнеров.
    Есть даже OSGI типа apache karaf и eclipse equinox!
    Ответ написан
    5 комментариев
  • Как бесконечное количество трехмерных пространств расположенных на четвертой оси образуют четырехмерное пространство?

    Griboks
    @Griboks
    Человек не может представить четырёхмерное пространство. Но зато вы можете представить его модель, например как пространство + время или как поле четырёхкомпонентных векторов.
    Ответ написан
    Комментировать
  • Зачем именно нужны связи в бд?

    @deliro
    Когда к тебе придёт менеджер и скажет: "эй, hrnsywtfczlh, а почему у нас тут вот заказов отгруженных на 15 миллионов, а получателей даже не в базе?", тогда-то ты и поймёшь, зачем нужны связи в БД. Но сперва поседеешь.
    Ответ написан
    7 комментариев
  • Зачем именно нужны связи в бд?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Нужно поговорить об аномалиях. Например в твоей системе я могу (теоретически) добавить месседж
    который не принадлежит ни одному пользователю системы. Я просто сделаю

    insert into message(9999999, -1, "Mua-haha...");

    И у меня есть пост от анонимоса который не зарегистрирован как пользователь.

    Разумеется можно полагаться на логику твоего приложения и думать что такая ситуация невозможна
    но с точки зрения БД она вполне возможна потому как родственная связь User + Message нигде не объявлена.
    И SQL позволяет это сделать.

    Чтоб поправить ситуацию надо эту связь добавить и тогда я не смогу создать фейковые посты от анонимосов.
    ALTER TABLE Message
    ADD FOREIGN KEY (userid) REFERENCES users(id);

    По умолчанию констрейнт создается с опцией restict (это было в Оракле как в Майскл - не знаю)
    и это гарантирует что невозможно также удалять родительские записи пока есть дочки.
    Для скорости ссылочные ключи всегда - индексированы.

    Рассуждать на тему вреда от аномалий - это просто терять время. Каждый владелец БД сам решает
    какие уровни строгости ему вводить. Вообще любая теория касаемая БД - по сути просто развивает
    идею строгости НФ1,2,3,4,5,6 и ссылочных ограничений.

    Будет ли виден пост от анонимосов - это тоже другой вопрос и он не имеет отношения к обсуждаемой
    теме. Ведь тема касается именно логичности данных в БД а не тем методам которые их отображают.

    По сути вопрос сводится к тому как не создавать мусор в БД.
    Ответ написан
    2 комментария
  • Можно ли запросить в NASA данные?

    Maksim_64
    @Maksim_64
    Data Analyst
    https://svs.gsfc.nasa.gov/cgi-bin/details.cgi?aid=4768 прям под таблицей такой же как у вас есть ссылка json или текстовый файл, со всей инфой как у вас за весь год. Загружайте.
    json - https://svs.gsfc.nasa.gov/vis/a000000/a004700/a004...

    txt - https://svs.gsfc.nasa.gov/vis/a000000/a004700/a004...
    Ответ написан
    1 комментарий
  • Как спарсить информацию с динамического сайта на python/js?

    @rPman
    забрось ты эти попытки симуляции поведения браузера
    потратишь времени вагон, а потом разработчики сайта что то подправят и тебе снова анализировать код

    запускай полноценный браузер, симулируй клики пользователя, способов миллион, от инжекта javascript на страницу нормально запущенного браузера и прередачи информации через http до полноценных библиотек типа selenium
    Ответ написан
    6 комментариев
  • Как научиться React.js и Node.js вместе?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Мой вопрос состоит в том, действительно он так хорош и не устарел ли он?

    hh.ru посмотрите.

    Знакомый посоветовал мне учить React.js по видео с YouTube канала IT-KAMASUTRA

    вы мне посоветуете?

    Для начала, лучше выбирать знакомых, а затем, не учиться по видео.
    Ответ написан
    Комментировать
  • Как многопоточно читать тхт файл Python?

    @dima20155
    you don't choose c++. It chooses you
    задача читателей писателей
    Имейти в виду GIL и, соответственно, эффективность работы вашего кода
    Ответ написан
    Комментировать
  • Ютуб-канал Simple Сode может ли научить яп C#?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Кучу раз говорил. Видосы только для профи. Когда нужно решить конкретный вопрос или вкатить в тему.
    Для начинающих есть бомба ресурс с текстом и исходниками

    https://metanit.com/sharp/
    Ответ написан
    Комментировать
  • Как создать свой каскад для распознавания объектов?

    Vindicar
    @Vindicar
    RTFM!
    Я создавал лабораторную по этой теме, могу привести инструкцию.
    1. Загрузите набор утилит opencv(гугл-диск, но я советую поискать самостоятельно), в частности opencv_createsamples и opencv_traincascade, а также необходимые им DLL-библиотеки. Распакуйте их в рабочий каталог в корне диска, без русских букв и пробелов в названии. Здесь и далее предполагается, что C:\MyDirName - ваш рабочий каталог.
    2. Подготовьте фото вашего объекта. Используйте контрастный объект без движущихся частей, и желательно не дающий бликов. Для этой цели хорошо подходят логотипы.
    3. Подготовьте отрицательные примеры (не менее 100 изображений). Для этого можно снять короткое видео помещения, затем написать программу, которая разделяет это видео на отдельные кадры. Рекомендуется поместить их в отдельный подкаталог negatives.
    4. Подготовьте файлы, содержащие список файлов в этом каталоге. Их можно сгенерировать следующей парой команд в терминале:
      dir C:\MyDirName\negatives\*.jpg /B /S >C:\MyDirName\negatives\negatives_abs.txt

      dir C:\MyDirName\negatives\*.jpg /B >C:\MyDirName\negatives\negatives_rel.txt

    5. Создайте пустые подкаталоги C:\MyDirName\positives и C:\MyDirName\training. Поместите ваше изображение - положительный пример в каталог C:\MyDirName\ и назовите его positive.jpg. В качестве положительного примера желательно разместить ваш объект на светлом фоне, если он тёмный, и наоборот.
    6. Сгенерируйте положительные примеры с помощью утилиты opencv_createsamples. Команда будет выглядеть примерно следующим образом:
      C:\MyDirName\opencv_createsamples.exe -info positives\info.lst -img positive.jpg -bg negatives\negatives_rel.txt -maxxangle 0.1 -maxyangle 0.1 -maxzangle 0.1 -bgcolor 0 -bgthresh 0 -w 50 -h 50 -num 100

      Параметры:
      -info - выходной файл.
      -img - входное изображение - положительный пример
      -bg - фоновые изображения. Положительный пример будет наложен на них (в оттенках серого).
      -max?angle - допустимые углы поворота примера. Утилита выполнит перспективное преобразование примера перед наложением.
      -bgcolor и -bgthresh задают яркость (среднее и диапазон изменения) для "прозрачного цвета". Например, если ваш объект на белом фоне, задайте эти параметры равными 240 и 15 (диапазон яркости 225-255). Задав оба параметра равными 0, вы отключите эту функцию и все цвета будут непрозрачными.
      -w и -h задают минимальный размер для размещаемой копии вашего образца.
      -num - количество примеров, которые стоит генерировать. Не должно превышать количество изображений в каталоге.
      Утилита должна вывести ряд сообщений вида "Open background image", а в конце вывести "Done".
    7. Сгенерируйте vec файл следующей командой:
      C:\MyDirName\opencv_createsamples.exe -info positives\info.lst -num 100 -w 20 -h 20 -vec positives\positives.vec

      где info.lst был сгенерирован в ходе пункта 6.
      -w и -h задают минимальный размер для объекта, распознаваемого в ходе работы каскада.
      -num - количество сгенерированных примеров. Столько же, сколько и в пункте 6.
    8. Проведите обучение каскада с помощью утилиты opencv_traincascade. Команда будет иметь примерно следующий вид:
      C:\MyDirName\opencv_traincascade.exe -data training -vec positives\positives.vec -bg negatives\negatives_abs.txt -numStages 100 -numPos 100 -numNeg 100 -featureType haar -w 20 -h 20 -minHitRate 0.999 -maxFalseAlarmRate 0.4 -precalcValBufSize 4048 -precalcIdxBufSize 4048 -numThreads 24 -acceptanceRatioBreakValue 10e-5

      -data - каталог для рабочих данных, который вы создали в пункте 5.
      -vec - индекс, который был создан в пункте 7.
      -bg - файл со списком отрицательных примеров (используйте абсолютные пути!)
      -numPos и -numNeg - количество положительных примеров (пункт 6) и отрицательных примеров (пункт 3).
      -numStages - максимальное количество этапов каскада. Итоговый каскад может содержать меньшее количество этапов.
      -featureType - определяет тип признаков. Признаки Хаара обучаются медленнее, но зато более точны.
      -w и -h задают минимальный размер для объекта, распознаваемого в ходе работы каскада. Должны строго совпадать с заданными в пункте 7.
      -minHitRate и -maxFalseAlarmRate задают качество работы одного каскада.
      -acceptanceRatioBreakValue определяет момент, когда каскад перестаёт обучаться.
      -precalcValBufSize и -precalcIdxBufSize задают потребление памяти процессом.
      -numThreads определяет число рабочих потоков.
    9. По итогам обучения в каталоге training должен появиться файл cascade.xml, который можно загружать так же, как типовые каскады, поставляемые с opencv. Обратите внимание, что если вы хотите запустить обучение с начала, нужно очистить содержимое каталога training, иначе утилита будет дообучать существующий каскад.
    Ответ написан
    5 комментариев
  • Как правильно прописать отказ от ответственности за контент, размещаемый на сайте?

    CityCat4
    @CityCat4
    //COPY01 EXEC PGM=IEBGENER
    Никак.

    Сайт Ваш.
    Придут и мордасом в пол уложат Вас. А приходят обычно люди простые, в ИТ не подкованные. А про "отказ от ответственности" Вы следаку будете заяснять :) Хотя, если там не политота и не про педрил - могут и просто забить.
    А есть темы, высказываясь на которые, можно круто залететь :)
    Ответ написан
    1 комментарий
  • В каком порядке изучать Java?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    В том же, в каком и в 2022-м.
    Ответ написан
    1 комментарий
  • Как определить самый больший процент разници в if?

    @rPman
    В чем совет то тебе дать?

    Почему не работает код? так скажи что в нем не так.

    Про получение данных, если тебе нужны ОПЕРАТИВНЫЕ данные, забудь про http rest, используй websocket, binance выдает в поток в 4 тысячи событий по всем парам, подписывайся на них и анализируй, это ты сможешь сделать в одном подключении. Если же все же http rest то внимательно прочитай про лимиты на запросы, они указываются в минуту и на практике еще меньше
    IP Limits

    Every request will contain X-MBX-USED-WEIGHT-(intervalNum)(intervalLetter) in the response headers which has the current used weight for the IP for all request rate limiters defined.
    Each route has a weight which determines for the number of requests each endpoint counts for. Heavier endpoints and endpoints that do operations on multiple symbols will have a heavier weight.
    When a 429 is received, it's your obligation as an API to back off and not spam the API.
    Repeatedly violating rate limits and/or failing to back off after receiving 429s will result in an automated IP ban (HTTP status 418).
    IP bans are tracked and scale in duration for repeat offenders, from 2 minutes to 3 days.
    The limits on the API are based on the IPs, not the API keys.

    p.s. Исторические данные по фьючерсам недоступны (только в пределах текущего квартала)
    я пользовался, минуток тут более чем достаточно:
    https://dapi.binance.com/dapi/v1/continuousKlines?pair={$pair}&contractType={$type}&limit=1500&interval=1m&startTime={$startTime}&endTime={$endTime}"

    Где startTime и endTime нужно устанавливать на основе предыдущих полученных и сохраненных данных
    https://dapi.binance.com/dapi/v1/exchangeInfo
    Даст всю информацию о рынке (без стакана), там же видно где какой тип контракта PERPETUAL/CURRENT_QUARTER/NEXT_QUARTER какое наименование инструмента, типа LTCUSD_230630 или ETHUSD_230331 (там же есть все данные по времени начала и окончания периода), PERP фьючерсы повторяют spot рынок, поэтому для удобства можно эти данные брать

    Если тебе нужен совет по выбору стратегии - собирай исторические данные, проводи на их основе анализ или тестирование (напиши подобие симулятора биржи на которой будешь тестировать свою стратегию).
    Ответ написан
    Комментировать
  • Как захостить сайт на NodeJS на Windows сервере?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    https://tatham.blog/2011/03/16/node-js-on-windows/

    как то так. Единственно закройте все порты кроме 443 + 3389
    И поставьте запрет на логин всех кроме одной учетки через рдп и установите https://bite-byte.ru/operatsionnye-sistemy/windows...
    Ответ написан
    Комментировать
  • В чем можно хранить около триллиона значений key=>value?

    @rPman
    ключ 49 бит - log(66^8) - пусть для простоты 8байт, значение 32 байта (у тебя там hex строка)
    только на значения тебе нужно 30 терабайта на каждый триллион - 32*10^12 и даже в идеальном случае еще 16тб на индекс ключа (чем больше оптимизируешь хранение тем больше операций на чтение и запись каждой)

    Недавно была статья на хабре про тесты производительности работы mssql с похожими ключами миллионы записей

    Я бы предложил схему с самописным индексом (мне кажется тут колхозить идеальнее всего).
    * делишь ключ на 2 части (если бы ключ был не такой равномерный, то нужно было бы брать хеш от него), например по 4 байта
    * младшие 4 байта (они наиболее равномерно будут распределены) - это номер блока в общем хранилище (на 1 триллион примерно 9кб, рекомендую. 16кб или 32кб, ssd на таких кластерах идеально работают), с массивом элементов: каждый из которых это вторые 4 байта ключа (старшие байты) + 32 байта искомое значение
    для 16кб блока итоговое хранилище будет 70 тб - 2^32*16кб, можно прямо в дисковое устройство писать без файловой системы, по дискам пусть какой-нибудь рейд 0 раскидывает
    * последняя запись в 16кб блоке - ссылка на дополнительное хранилище переполнений неравномерного распределения, его можно организовать как хочешь, на отдельном носителе

    Итого на каждый запрос ты делаешь ровно одно чтение 16кб блока с диска, в полученном массиве ищешь нужный ключ и получаешь значение (если нет значит переполнения из-за неравномерного заполнения индекса, топать в дополнительное хранилище), кстати можно читать по секторно в процессе поиска, тогда если диск сумеет это оптимизировать будет 2х профит. Запись то точно так же - 1 чтение 16кб и запись 1 сектора диска, дозапись в массив. Кстати, если контролировать порядоковый номер ключевого значения (а что то мне говорит там будет простой перебор всех паролей) то будет последовательная запись блоков на диск, для hdd это идеальная ситуация. Иначе всю оперативную память используешь как самодельный lazy write буфер, при переполнении записываешь его на диск, отсортировав согласно дисковым устройствам и отсортировав порядок номеров секторов (тогда либо понимать как работает рейд либо самому раскидывать по дискам), операционные системы и контроллер диска это умеют но у них кеш маленький.

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

    Добавь еще один уровень, будет 2 чтения по 8-16кб (когда ты не на 2 части делишь ключевое значение а на 3, первая часть ссылается на список ссылок на вторую часть, которые уже ссылаются на блоки с третьей частью), можно уменьшить этот оверхед но мне кажется скорость в твоей задаче важнее, ведь она упадет в два раза.
    Универсальные базы данных делают многоуровневые древовидные индексы (это настраивается) и ради удобства и универсальности ты теряешь в скорости.
    Ответ написан
    3 комментария