• Как сделать Linux более безопасным?

    @loheb
    SELinux + фильтрация трафика (межсетевой экран) и защита от угроз из сети + отслеживание уявимостей и регулярное обновление. Аудит исходного кода тоже к безопасности относится.
    Ответ написан
    Комментировать
  • Как написать терминал на Assembler?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Ответ написан
    Комментировать
  • Отображение русский текст в консоли?

    LikeMySoul
    @LikeMySoul
    Сис. Админ
    Смени кодировку в консоли, должно помочь.

    С quser я не работал, но в psexec помогает смена на кодировку 1251.
    chcp 1251
    Ответ написан
    Комментировать
  • Torrent клиент. Скачать файлы по "маске"?

    Viktor_T2
    @Viktor_T2
    python developer
    aria2, cli-качалка для разных форматов.
    https://aria2.github.io/manual/ru/html/aria2c.html...

    aria2c --show-files "твой торрент.torrent" - показать файлы и индексы

    aria2c --select-file 41-49 "твой торрент.torrent" загрузить файлы с индексами такими-то
    Ответ написан
    Комментировать
  • Возможно ли выполнить JavaScript код в Rust при помощи NodeJS?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Хоть и вопрос несколько сумбурный и не совсем понятно, что автор хочет на самом деле...
    Но краткий ответ: да, возможно, но есть нюансы...

    Самый простой вариант - запускать node как отдельный процесс. Можно просто запускать на каждый чих, а можно заморочиться и организовать общение между приложением на Rust и приложением на Node.js

    Вариант поинтереснее - Node.js можно собрать как библиотеку (есть даже готовые бинарные сборки такого), линкуем с приложением на Rust. Всё живёт в одном процессе, но node будет запускать свои потоки.

    Есть и обратный последнему вариант. Можно из Rust кода собрать бинарный аддон к Node.js
    Правда тут уже JS код будет запускать код на Rust.
    https://napi.rs
    https://neon-rs.dev

    Можно пойти дальше. Если задача просто исполнять JS код из приложения на Rust, то можно слинковаться с одним из JS движков. Приколюх предоставляемых платформой Node.js здесь не будет (вроде fs или http), хотя никто не мешает реализовать это самостоятельно.
    https://crates.io/crates/v8
    https://crates.io/crates/quickjs_runtime
    Ответ написан
    3 комментария
  • Как устроено окто дерево? Как происходит отсечение видимых грайней?

    wataru
    @wataru Куратор тега Алгоритмы
    Разработчик на С++, экс-олимпиадник.
    Вернуть все данные в узле. это же самое что дальше продолжать обходить все внутренние рекурсией или стеком узлы, и составить список. В чем профит то тогда? Как можно вернуть все данные по щелчку.


    Да, именно так, надо обойти все узлы дальне.
    Но при этом уже не надо проверять на видимость и код там попроще.

    А профит тут в том, что вы вот так вот обходите не все дерево. а только маленькую его часть.

    Окто дерево используется, чтобы отсечь те объекты, которые сзади или сбоку от камеры и точно не видны. Оно не помогает отсекать объекты, закрытые стеной. Тут, действительно, используется z-buffer.
    Ответ написан
    4 комментария
  • Безопасность выбора чисел для генерации RSA?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    e выбирается из условий 1 < e < φ(n) и НОД(e, φ(n)) = 1. Самый тривиальный вариант для удовлетворения этих условий - взять для e простое число, меньшее φ(n). При этом берут значение e, содержащее минимум единиц в двоичном представлении, чтобы ускорить вычисления.

    k искать не надо, надо искать d, такое, что de ≡ 1 (mod φ(n)). Обычно используется расширенный алгоритм Евклида.
    de + kφ(n) = НОД(e, φ(n)) = 1
    При известных e и φ(n) алгоритм позволяет вычислить d и k как коэффициенты Безу.

    К p и q требования только по длине. Чем длиннее число, тем более криптостойкое будет шифрование. Используют числа длиной 1024, 2048 или 4096 бит.
    Ответ написан
    6 комментариев
  • Можно ли запускать на серверах c ARM процессорами, виртуальные машины на х86, amd64?

    @res2001
    Developer, ex-admin
    Это уже не виртуализация, а эмуляция. Как писали выше qemu это умеет, но из-за эмуляции большая потеря производительности. Это можно использовать где-то в тестовой среде или в разработке, но явно не в продакшене.
    Ответ написан
    Комментировать
  • Можно ли запускать на серверах c ARM процессорами, виртуальные машины на х86, amd64?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Да, можно: qemu умеет, но потери производительности ~90%. Для мака есть https://getutm.app/ - вот оно через qemu и работает.
    Ответ написан
    Комментировать
  • Как понять что APK битый без конрольных хэш сумм?

    axifive
    @axifive
    Software Engineer
    В apk (zip архиве) все файлы имеют crc32 хэш суммы, но так же он еще и подписывается.
    Любое изменение как раз повреждает подпись, что и не даст установить. Но изменения в байтах архива в большинстве случаев, все равно позволят его распаковать.
    Если незначительно поврежденный архив переподписать, то установить получится.
    Ответ написан
    Комментировать
  • Как найти количество помеченных связных графов?

    wataru
    @wataru Куратор тега Алгоритмы
    Разработчик на С++, экс-олимпиадник.
    Формула включения-исключения. Берете все графы, где хотя бы одна вершина соединена со всеми (их n*2^(n-2)*(n-1)), вычитаете все графы, где хотя бы две вершины соеденины со всеми (2 раза, ведь они 2 раза подсчитались), прибавляете графы, где хотя бы 3 вершины соеденины со всеми (3 раза)... И т.д.

    Графов, где хотя бы k вершин имеют степень n-1 - C(n, k)*2^{(n-k-1)(n-k)/2}: тут можно выбрать k вершин и для каждого ребра из оставшихся n-k вершин есть 2 варианта - оно или есть, или нет.

    Это будет за O(n log n) решение, если пердподсчитать все факториалы и обратные к им по модулю в задаче. Ну, или O(n^2), если считать сочетания через треугольник паскаля.

    Ражеванное объяснение:

    Сложно подсчитать количество графов где ровно 1 вершина такая полная. Но легко подсчитать те, где k или более таких. Мы их такие зафиксируем и нарисуем от них все ребра. А все оставшиеся ребра в графе могут быть любыми. Во-первых, можно выбрать эти k вершин - поэтому у нас есть множитель C[n,k]. Оставшиеся, незафиксированные ребра идут между любыми двумя оставшимся n-k вершин. Их (n-k)(n-k-1)/2. И каждое может быть или проведено или нет.

    Поэтому всего таких графов, с не менее k вершин: F(k)=C[n,k]*2^{(n-k)(n-k-1)/2}.

    Теперь, как подсчитать графы ровно с 1 вершиной? Можно взять F(1). Но мы насчитали много лишнего, Графы с 2мя такими вершинами мы в F(1) подсчитали 2 раза. Поэтому вычтем 2F(2). Теперь графы ровно с 3 вершинами мы подсчитали 3 раза в F(1) и 3 раза в каждом F(2). Поэтому пока мы их насчитали 3-2*3 = -3 раза. Поэтому прибавим 3F(3). И далее, получится, что графы ровно с 4-мя вершинами мы подсчитали 4 раза (4-2*6+3*4). И т.д.
    Ответ написан
    6 комментариев
  • Возврат собственного типа ошибки из main с печатью сообщения об ошибке?

    bingo347
    @bingo347
    Crazy on performance...
    fn main() -> MainResultWrapper {
        MainResultWrapper(main_inner())
    }
    
    #[inline(always)]
    fn main_inner() -> Result<(), GlobalError> {
        let config = read_config_from_file()?;
        Ok(())
    }
    Ответ написан
    Комментировать
  • Какая будет единая формула для ячейки?

    wataru
    @wataru Куратор тега Математика
    Разработчик на С++, экс-олимпиадник.
    Разница по горизонтали всегда +2. Значит число из строки 2 будет входить с коэффициентом 2.
    По вертикали разница на -1. Значит число из столбца B будет с коэффициентом -1.

    Итак, формула -1*$B3+2*C$2 - 1 . -1 в конце подбираем так, чтобы в самой первой ячейке оказался 0.
    Ответ написан
    Комментировать
  • Возможно ли создать универсальное решение для процесса синхронизации данных от разных поставщиков?

    Slavik_Kenny
    @Slavik_Kenny
    3Д моделлер, и немного всего остального :)
    Такая-же боль на работе имеется: куча приборов химического анализа от кучи разных производителей - практически у каждого свой формат вывода.
    И таки да - под каждый прибор свой метод разбора результатов: у одного можно напрямую к БД подключиться, у другого разбирать файлы с сетевой папки куда несколько однотипных приборов скидывают результаты, у третьего экселевские таблицы ковырять и т.д.
    Итого у меня все это происходит в два этапа-
    1 - получить в промежуточную таблицу данные с прибора (часть уникальная для каждого прибора, или каждого производителя), эта таблица содержит все возможные поля для данных, которые могу вообще поспать с любых приборов.
    2 - универсальная часть, которая уже из промежуточной таблицы, по имеющимся данным раскидает их в рабочую базу ЛИМСа.

    Как и сказал mayton2019 практически написался свой язык для парсинга результатов с приборов, так как никогда не угадаешь, какой прибор купят завтра и какие извраты с экспортом результатов в нем будут использоваться :)
    Ответ написан
    1 комментарий
  • Как "склеить" два файла?

    Vapaamies
    @Vapaamies
    Психанул и снес свои ответы козлам, не отмечающим…
    Речь про инъекцию? Гуглить про инъекцию. Дописывание байтов в конец не поможет, обязательно нужно учитывать структуру ELF или PE, что у вас там? В PE в конце файла будут перемещаемые символы («релоки») или ресурсы. Для правильной склейки файл еще придется перебазировать.
    Ответ написан
    2 комментария
  • Как "склеить" два файла?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Большой и сложный бинарник вы так не встроите. Максимум, отдельные функции.

    Для винды можно ваш второй файл сделать в виде dll и выпоннять код во время ее загрузки. Чуть подправить исполняемый файл или вообще просто положить dll-ку рядом с exe-шником - и библиотека загрузится.

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

    В этом случае, надо изучить устройство PE файла, понимать немного ассемблера.
    Ответ написан
    Комментировать
  • Где умные указатели размещают полученные данные?

    vabka
    @vabka Куратор тега Rust
    Cell<T> has the same memory layout and caveats as UnsafeCell<T>. In particular, this means that Cell<T>has the same in-memory representation as its inner type T.


    У остальных нет никаких обязательств о memory representation, но они тоже ничего в куче не выделяют.

    Ну и всегда можно посмотреть на исходники)
    https://doc.rust-lang.org/src/core/cell.rs.html#293
    https://doc.rust-lang.org/src/core/cell.rs.html#2034
    https://doc.rust-lang.org/src/core/cell.rs.html#700
    https://doc.rust-lang.org/src/core/cell/once.rs.html#33
    Ответ написан
    Комментировать
  • Как отправлять почту Python без использования сторонних SMTP?

    saboteur_kiev
    @saboteur_kiev Куратор тега Python
    software engineer
    Таким образом можно отправлять письма только на свой корпоративный почтовый сервер.
    Любой публичный почтовый сервер получателей сейчас использует дефолтные почтовые фильтры, которые сразу отвергнут ваше письмо. Разве что на сервере получателя договариваться о настройке исключения.

    Чтобы ваш почтовый сервер хоть как-то котировался (это то, что вы хотите сделать - временный свой почтовый сервер, который сразу отправляет письмо на сервер получателя), его нужно зарегать в ДНС, ему нужно зарегать обратный PTR, он должен уметь отвечать на приходящие письма (многие почтовые сервера, когда видят первый раз письмо откуда-то, пытаются туда отправить свое, чтобы проверить вообще что это реальный почтовый сервер, а не очередной спаммер).

    Поэтому следует уточнить задачу - если вы отправляете письмо сами себе для мониторинга, то библиотек полно. Протокол smtp очень простой, хоть напрямую телнетом шли. Главное чтобы ваше письмо там не зарежектили.
    Ответ написан
    1 комментарий
  • MySQL ошибка InnoDB: Attempted to open a previously opened tablespace. Куда копать?

    martin74ua
    @martin74ua Куратор тега MySQL
    Linux administrator
    Что такое "база расшарена по сети" ?
    У вас есть один сервер mysql и к нему коннектится приложение с нескольких компов? Так же, правда?
    Ответ написан
    Комментировать
  • Где можно найти курс по разработке 3д игры на c++ и vulkan?

    @MarkusD Куратор тега C++
    все время мелю чепуху :)
    Низкий порог вхождения для C++ и Vulkan означает продвинутый уровень владения инструментом C++, экспертные навыки обработки графики, работы с шейдерами и управления памятью GPU (да, там все иначе). Для входа в работу с Vulkan нужно быть, как минимум, Middle Graphics Engineer и уже уметь уверенно работать с DirectX11 или OpenGL4.5. Без этих знаний вулкан будет очень сложно понять, а правильно работать с ним получится только через десятки и сотни полностью неудачных итераций написать одно и то же.

    Vulkan является очень низкоуровневым GAPI и требует от пользователя изначально серьезной подготовки. У этого GAPI много точек привязки к системной памяти, содержимое которой трактуется как на GPU, так и на CPU. Поэтому работать с памятью в C++ правильно нужно уметь с самого начала. Поэтому, еще до начала работы с вулканом от пользователя требуются экспертные знания языка. В противном случае вместо обучения работе с довольно сложным GAPI получится блуждание по полю граблей, где ничего не понятно.

    При этом, курсов, статей и книг для обучения вулкану очень много и их очень легко найти.
    Есть очень хороший цикл статей для самостоятельного обучения, есть даже перевод на наш язык.
    Есть множество книг, по которым люди учатся работать с вулканом. Learning Vulkan считается самой лучшей.
    Поисковиком легко ищутся разные мелкие примеры работа с вулканом.
    Есть даже онлайн курсы для обучения под наблюдением инструктора.

    И тем не менее, вулкан легко не дастся. Для его понимания нужна база, нужно знать устройство GPU, принципы коммуникации с ним, принципы его работы и всю теорию обработки графики. Нужно уже уметь быстро писать много стабильного и сложного кода на C++, нужно уметь безошибочно писать на GLSL или SPIR-V. Нужно уметь пользоваться графическими отладчиками, профилировщиками, разбираться в диагностике проблем при работе с графикой.
    Все это приобрести можно в процессе практики с DirectX11 и OpenGL4.5.
    Ответ написан
    6 комментариев