• Какие есть программы на Линукс со встроенным Cryptomator?

    leahch
    @leahch Куратор тега Linux
    Я мастер на все руки, я козлик Элек Мэк :-)
    В линуксе все проще (относительно конечно).
    Все, что может быть подмонтировано, как блочное устройство, может быть зашифровано стандартными средствами, например, через dm-crypt, luks и вспомогательную утилиту cryptsetup.
    Все, что может быть подмонтировано, но не как блочное устройство, может содержать в себе файл, который можно подмонтировать как блочное устройство через loop device. А уж потом защифровано через cryptsetup :)

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

    leahch
    @leahch
    Я мастер на все руки, я козлик Элек Мэк :-)
    1) Как уже написали RDMA, он есть поверх 10Gb эзернета, и по Infiniband
    2) Есть еще такая унылая и очень экзотическая вещь - Reflective Memory, но ее вытеснили в первом пункте
    3) Сами пишете что нибудь на основе протокола MPI
    4) Но пункт 3 вытесняется простыми решениями на обычных TCP/IP сокетах.

    Отдельно, что касается RDMA, это обычно прямые вызовы в операционной системе с соответствующими драйверами. Как в виндах - не знаю, но под линуксом все встоено в стек протоколов MPI - в него и смотрите.
    Ответ написан
    Комментировать
  • Влияет ли количество CPU на показания нагрузки в top'е?

    leahch
    @leahch Куратор тега Linux
    Я мастер на все руки, я козлик Элек Мэк :-)
    Дело обстоит следующим образом.

    Load AVG показывает суммарную загрузку по всем ядрам процессоров (или ядерным потокам). Другими словами - это суммарный показатель загрузки всей системы.

    Но, в утилите top/htop можно посмотреть загрузку по каждому ядру (потоку ядра) в отдельности - нажмите кливишу 1, увидите загрузку каждого ядра в отдельности.

    Возвращаясь к Load AVG:
    - если у вас в системе 1 процессор, и AVG равно единице, то у вас система загружена полностью;
    - если у вас в системе 16 процессоров, и AVG равно единице, то у вас система загружена на 1/16 часть;
    - если у вас в системе 16 процессоров, и AVG равно 16, то у вас система загружена полностью;
    - если у вас в системе 1 процессор, и AVG равно 16, то у вас система полностью перегружена, и я бы добавил 15 ядер.
    Другими словами, что либо сказать только по значению AVG нечего, без знания о количестве ядер (ну как минимум).
    В общем, как-то так...
    Ответ написан
    4 комментария
  • Unifi dream machine PRO load balancing?

    leahch
    @leahch
    Я мастер на все руки, я козлик Элек Мэк :-)
    В контроллере unufi можно настроить количетво клиентов на точку доступа, и в зависимтсти от типа точки доступа можно сделать "бесшовную" сеть с некоторой натяжкой... Все же wifi не сильно подходит для балансировки клиентов, увы, как заметил shell_guy
    Ответ написан
    Комментировать
  • Что за деталь на фото?

    leahch
    @leahch
    Я мастер на все руки, я козлик Элек Мэк :-)
    Керамический конденсатор, если не ошибаюсь на 22 нанофарад на 250 вольт. n - обозначение нанофарад, Z - допуск по величине или точность.
    https://go-radio.ru/marking-capacitor.html

    Доп. ответ - деталь с обмоткой называется дроссель.
    Ответ написан
    6 комментариев
  • JDBC, почему нельзя использовать один Connection для нескольких методов в разрезе многопоточности?

    leahch
    @leahch
    Я мастер на все руки, я козлик Элек Мэк :-)
    Можно использовать, но нужно делать синхронизацию между разными потлками.
    Проблема в том, что один поток будет ждать ответа на свой запрос, в то время, как другой поток захочет выполнить свой запрос.
    Так что, если добавите синхронизацию, то можно.
    Но вообще-то не нужно изобретать велосипеды, пользуйтесь пулами соединений, их есть много разных.
    Например hikaricp https://habr.com/ru/post/269023/
    Ответ написан
    Комментировать
  • Какой СPU выбрать для самосборного NAS?

    leahch
    @leahch
    Я мастер на все руки, я козлик Элек Мэк :-)
    Можно брать любо процессор. Все, из вашей выборки, справляются с отдачей на 1Gb эзернет на скорости соединения.
    Если хотите использовать VPN, то выбирайте CPU с большим числом потоков/ядер. Если будете в торренты - с большей частотой.
    И да, не пользуйте аппаратный рейд, только программный!
    Ответ написан
    Комментировать
  • Как реализовать мультиплексирование двух потоков данных между двумя микроконтроллерами?

    leahch
    @leahch
    Я мастер на все руки, я козлик Элек Мэк :-)
    Вариант первый:
    Сделайте один из сигналов CS (Chip Select).
    Взводите его для одного контроллера, опускайте - для второго.
    Взвели - передачу принимает первый. Опущен - второй.
    В теории, CS сигналы могут коммутировать друг-друга или выбирать конкретного приемника.

    Вариант второй:
    Чисто программный. Использовать сигнал CD (Carier Detect), его поднимает передающая сторона, все остальные слушают посылку. Никто не может отправлять, пока поднят CD. В посылке первый байт - номер приемника. Чтобы не было коллизий, желательно определить длительность или максимальный размер передачи.
    В этом верианте еще можно использовать дополнительную сигнальную линию INT (Interrupt). Ее поднимает, тот, кто хочет сделать срочную передачу, при поднятом CD.
    Никто не поднимает CD, Пока не снят INT.
    CD поднят, идет посылка
    Кто-то поднял INT, Прошла предыдущая посылка, но никто не захватывает линию через CD.
    Тот, кто поднял INT, ждет освобождения CD, сам поднимает CD, снимает INT, н7ачинает передачу.
    Если линии INT и CD свободны, любой может поднять CD и начать передачу.

    Литература: сети I2C, CAN, RS-485 + modbus, SPI, FrameRelay....
    Ответ написан
    Комментировать
  • Как собрать сервер на устаревшем ПО?

    leahch
    @leahch Куратор тега Linux
    Я мастер на все руки, я козлик Элек Мэк :-)
    Поддержу всех за виртуальную машину.
    Копируете целиком разделы в образ диска формата qcow2 и запускаете в виртуалке на новом железе.
    Куча старых систем у меня так в виртуалках и работает.
    Ответ написан
    Комментировать
  • Как подключиться к хосту в локальной сети извне этой локальной сети?

    leahch
    @leahch
    Я мастер на все руки, я козлик Элек Мэк :-)
    Посмотрите на wstunnel - https://github.com/erebe/wstunnel
    Но наверное нужно будет что-то доработать.
    Или вот еще, но опять же нужно доработать наверное https://www.section.io/engineering-education/ssh-i...
    А вот вообще законченный вариант! https://github.com/elisescu/tty-share
    Ответ написан
    Комментировать
  • Windows и Linux на внешнем SSD, возможно ли это?

    leahch
    @leahch Куратор тега Linux
    Я мастер на все руки, я козлик Элек Мэк :-)
    С линуксом можно точно! С уиндоуз не уверен...
    Ответ написан
    3 комментария
  • Какая это кодировка для фото?

    leahch
    @leahch
    Я мастер на все руки, я козлик Элек Мэк :-)
    Это просто бинарное представление данных. Можно записать в файл, ну а потом посмотреть, что за тип изображения.
    Спойлер: формат не опознан!
    leah@leah-pc ~> python3
    Python 3.8.10 (default, Nov 26 2021, 20:14:08) 
    [GCC 9.3.0] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> imgsrc = b'\xd9\x01\x10\x02TZH\x00(\x00\xa2\x8b\x80Q@\x05\x14\x00QJ\xe0\x14P\x01E0\n(\x00\xa2\x80\n(\x00\xa2\x90\x05\x14\xc0(\xa0\x02\x8aL\x02\x8a\x00(\xa6\x01E\x00\x19\xa2\x90\x05\x14\x00QL\x02\x8aL\x02\x8aw\x00\xa2\x80?\xff\xff\xff\xff\xd9\x00\x0bV\x00\x00'
    >>> file = open('myimage','wb')
    >>> file.write(imgsrc)
    80
    >>> 
    leah@leah-pc ~> file myimage 
    myimage: data
    leah@leah-pc ~> hexdump myimage 
    0000000 01d9 0210 5a54 0048 0028 8ba2 5180 0540
    0000010 0014 4a51 14e0 0150 3045 280a a200 0a80
    0000020 0028 90a2 1405 28c0 02a0 4c8a 8a02 2800
    0000030 01a6 0045 a219 0590 0014 4c51 8a02 024c
    0000040 778a a200 3f80 ffff ffff 00d9 560b 0000
    0000050
    Ответ написан
    Комментировать
  • Возможно появились новые удобные способы работы на нескольких местах?

    leahch
    @leahch
    Я мастер на все руки, я козлик Элек Мэк :-)
    Ноут ультрабук 13 и по дополнительному монитору 24-32 дюйма 2-4к в местах присутствия полностью решают мои проблемы. Да, дополнительно ношу блютуз мышку.
    Был макбук, задушил жаба, купил асус зенбук на треть дешевле - работаю в линуксе с юбунту и bspwm (тайловый менеджер окон). Удобнее макбука оказалось!
    Ответ написан
  • Как лайкнуть музыкальный трек, сидя в редакторе кода?

    leahch
    @leahch Куратор тега Linux
    Я мастер на все руки, я козлик Элек Мэк :-)
    Тачпадом смахиваете четырьмя пальцами на экран с музыкой и лайкаете, смахиваете обратно. Да, на макоси. И в линухе. Секундное дело.
    Ответ написан
    5 комментариев
  • [Java] Отправка задачи в другой поток, который был запущен ранее. Возможно ли?

    leahch
    @leahch
    Я мастер на все руки, я козлик Элек Мэк :-)
    Смотрим классы в java.concurent.util
    Ответ написан
    Комментировать
  • Возможно ли заглушить локальную сеть?

    leahch
    @leahch
    Я мастер на все руки, я козлик Элек Мэк :-)
    Если эта штука стоит порядка 10000 рублей, то теоретически да, может. Но это никак не кусок кабеля. В нормальной сети и на нормальных кпромышленных, настроенных коммутатора - НЕТ!
    Ответ написан
    Комментировать
  • Существует ли облачное/серверное решение для хранения конфигураций проекта?

    leahch
    @leahch
    Я мастер на все руки, я козлик Элек Мэк :-)
    Любая распределенная база типа consul.io, etcd, zookeeper..
    Ответ написан
    Комментировать
  • Как шифровать пароль и логин в txt файле?

    leahch
    @leahch
    Я мастер на все руки, я козлик Элек Мэк :-)
    Пароли не нужно шифровать! Нужно хранить соль + хеш пароля.
    При сравнении отделяете соль, хпшируете пароль пользователя с этой солью и сравнивает полученный хеш с существующим.
    import hashlib, uuid
    salt = uuid.uuid4().hex
    hashed_password = hashlib.sha512(password + salt).hexdigest()


    #!/usr/bin/python3
    import hashlib, uuid
    
    SEPARATOR = "&"
    # generate hash string with salt
    def gen_hash(pwd, salt):
        return hashlib.sha512(pwd + salt).hexdigest()
    
    # generage hash password string (for safe to file)
    def gen_pw_string(pwd):
        salt = uuid.uuid4().hex
        return salt + SEPARATOR + gen_hash(pwd, salt)
    
    # parse hash password string, split it by salt and password hash
    def parse_pw_string(pwstring):
        return pwstring.split(SEPARATOR)
    
    # check password by its password hash string
    def check_pwd(pwd, pwstring):
        salt, _pwhash = parse_pw_string(pwstring)
        pwhash = gen_hash(pwd, salt)
        return pwhash == _pwhash
    
    
    ### test time!
    
    pwd1 = "123456"
    pwd2 = "qwerty"
    
    # genetate hash strings (may be saved to file or DB)
    pwstring1 = gen_pw_string(pwd1)
    pwstring2 = gen_pw_string(pwd2)
    print(pwd1, pwstring1)
    print(pwd2, pwstring2)
    
    # check passwords
    # must be True
    print(check_pwd(pwd1, pwstring1))
    print(check_pwd(pwd2, pwstring2))
    # must be False
    print(check_pwd(pwd1, pwstring2))
    print(check_pwd(pwd2, pwstring1))


    ('123456', 'f2b56ad9006a475e8c4f9b64446c3f5b&46c2d252a2667cc4b5a754ef5816e981570fd4bd9ced3ed1a6f6aaeae8ae83b795d6ffb66b3fe34650469b1c0d537785c2611157d41ebee6e54dc09527600a0c')
    ('qwerty', 'f2b56ad9006a475e8c4f9b64446c3f5b&3da9c4223c9fa2c66f5d70432401db14a89ddfe6feb99423083d152f98ef199d484b95b09a6535c766f28223c422cd1d862250867c12c7077144564b5c3fbc79')
    True
    True
    False
    False
    Ответ написан
  • Какая само мало требовательная ос кроме Chrome OS?

    leahch
    @leahch
    Я мастер на все руки, я козлик Элек Мэк :-)
    Alpine Linux наверное
    Ответ написан
    Комментировать
  • Как найти максимально похожий цвет?

    leahch
    @leahch
    Я мастер на все руки, я козлик Элек Мэк :-)
    Переведите каналы из строк в числа, вычисляйте абсолютную разницу по всем каналам отдельно. Разницу всех плюсуйте в общую разницу, Цвет с наимейшей разницей и будет искомым.
    abs(00 - 00) + abs(00 - 00) + abs(DD -. C8) = разница
    Ответ написан
    Комментировать