LINUX.ORG.RU

Сообщения LINUX-ORG-RU

 

Бекапилка вашего ПекА

Форум — Talks
- АХТУНГ, ВАХТУНГ, БАХТУНГ, ДРЯХТУНГ, АЛЯРМ, ВНИМАНИЕ
- ЭТОТ СКРИПТ ПРЕДОСТАВЛЯЕТСЯ КАК ЕСТЬ, Я НЕ НЕСУ НИКАКОЙ
- ОТВЕТСТВЕННОСТИ ЯВНОЙ ИЛИ КОСВЕННОЙ, ВАМ ЛИБО КОМУ ТО ЕЩЁ
- ПО ПРИЧИНЕ, ПОРЧИ И/ИЛИ УНИЧТОЖЕНИИ ВАШИХ ДАННЫХ 
- ЕСЛИ ВЫ НЕСОГЛАСНЫ, Я ЗАПРЕЩАЮ ВАМ ЗАПУСКАТЬ ЭТОТ КОД
- ДЕЙСТВУЙТЕ НА СВОЙ СТРАХ И РИСК, ВАШИ ЛЮБЫЕ СОМНЕНИЯ 
- КАСАТЕЛЬНО СКРИПТА ДОЛЖНЫ ВЕСТИ К ОТКАЗУ ОТ ЕГО ИСПОЛЬЗОВАНИЯ

Всё, теперь если у вас что-то пойдёт не так, то я чист.
И меня никто не будет ругать, гы :) Просто будте внимательный с тем,
какой каталог указывается для сохранения бекапов. А то ведь так и затереть чего важного можно случайно.
Вопщем решил поделится прост. Пусть будет.

Простой скрипт ручного бекапа наиболее важных файлов, использует
rsync и zip Настройка производится внутри стрипта. Описание
настройки бекапа тоже распологается внутри скрипта.
Типичное использование это ручной запуск в конце дня или по
завершению какой либо важной работы или перед сном :)
Используйте для бекапа, отдельный диск где нет ничего кроме бекапа!
Просто иначе, в бекапе нет никакого смысла.
Лично я просто на панельку кнопочку сделал, и перед отплытием в люльку тыкаю кнопочку.
Комп я не выключаю обычно, а если выключаю до явно дожидаюсь окончания бекапа, не проверял что будет если увести в сон во время бекапа, так что, лучше дождаться окончания.

Зависимости

mkdir zip rsync notify-send lua

Использование

Настроить скрипт, после чего просто его запускать. Так как вам удобно.

  • Обязательные параметры
    • source каталог или файл источник
    • dest каталог приёмник
  • Дополнительные параметры
    • secure применить пароль (требуется zip=true)
    • zip сжать в архив
    • mirror сделать точную копию и обновить им текущий каталог бекапа( или архив если zip=true)
    • versions сделать точную копию и пометить датой в отдельном каталоге (или архиве если zip=true)

Пример поля конфигурации:

  • {secure=true, zip=true, versions=true, source='~/.ssh/', dest='ssh'};

Значит что нужно сделать рекурсивный бекап каталога с ключами ssh и расположить бекап в каталоге с именем ssh. secure=true означает что данные будут запаролены, а zip что будут сжаты, versions=true означает что каждый новый бекап будет создавать новую копию ~/.ssh помеченную датой. Описание того какие есть ключи и как они работают друг с другом есть внутри скрипта, вместе с примерами уже готовой настройки.

Ключи можно опускать (не указывать) обязательными являются только source и dest Не указанные ключи считаются заданными как false так что вот такая запись валидна

  • {source='~/Изображения/', dest='картинки'}

И означает сделать копию каталога ~/Изображения в каталоге картинки внутри общего каталога бекапа backup_path=... при этом если это второй или последующий бекап и в каталоге ~/Изображения/ была удалена картинка, она не будет удалена в каталоге картинки это сделано специально, дабы максимизировать сохраняемые данные. Если нужна точная копия с удалением того чего уже нет в каталоге источнике то нужно дополнительно явно указать опцию mirror=true это же правило работает если включить флаг zip=true будет всё тоже самое, но уже в виде архива.

На заметку

В каталоге относительно котрого исполняется скрипт будет лог бекапа, на рабочий стол будут приходить уведомление о текущем статусе выполнения, в случае ошибки будет показaн код возврата В лог попадает информация о том какая именно команда потерпела неудачу, пароль присутцвующий в команде заменяется на звёздочки. В зависимости от типа настроенного бекапа(первый бекап будет всегда долгим), а вот последующие при отсуцтвии изменений будут быстрыми исключение это mirror и versions оба создают точную копию с нуля, а не пытаются обновить текущее содержимое бекапа. В случае если любая программа вернёт код возврата отличный от 0 выполнение всего бекапа прерывается, и повторно он не запустится пока не будет удалён lock файл, это сделано специально, чтобы выяснить причину, исправить её и в ручном режиме удалить lock файл название котрого есть в срипте, в логах и уведомлении на рабочий стол.:

Если вы бекапите например ~./vimrc в dest каталог myvimrc то он будет там лежать как есть, с точкой. Так что так же чтобы его увидеть в каталоге бекапа нужно нажимать ctrl+h. Ну, я так. На всякий случай.

Удалять из бекапов лишнее, и вообще контролировать влезет ли всё, это ваша забота =)
Нет опции отключения уведомлений. Предпочитаю явно знать что всё прошло гладко.
Логи бекапа тоже руками удалять.

Дадада, пароль на zip для ssh и gpg ключей хахахаха, но хоть что-то.
Сам внешний накопитель держите шифрованным если туда важное сохраняется.

Сам сриптик. Взял его как есть.

#!/usr/env lua
local backup_rule =
{
    --каталог куда будут размещаться все бекапы
    backup_path = '/media/$USER/STORAGE_SSD/backup';
    --пароль если используется secure=true, лучше использовать файл с паролем
    backup_pass = nil;
    --пароль для важныйх файлов, можно записать в файл дабы не светить
    backup_pass_file = "/home/$USER/Документы/backup_pass";
    ---------------------------------------------------------------------------
    backup_list =
    {
    -- backup critical --
    {secure=true, zip=true, versions=true, source='~/.ssh/',     dest='ssh'    };
    {secure=true, zip=true, versions=true, source='~/.gnupg/',   dest='gpg'    };
    {secure=true, zip=true, mirror=true,   source='~/.config/',  dest='cfg'    };
    {secure=true, zip=true, mirror=true,   source='~/.mozilla/', dest='firefox'};
    {secure=true, zip=true, mirror=true,   source='~/Документы/',dest='doc'    };

    -- diffrerent media --
    {secure=false,zip=true, mirror=true, source='~/Книги/', dest='book'};
    {secure=false,zip=true, mirror=true, source='~/Музыка/',dest='music'};

    -- backup multimedia --
    {secure=false, zip=false, versions=false, source='~/FAMILY_ARCHIVE/', dest='family'};

    -- backup dev stuff  --
    {secure=false, zip=false, versions=true, source='~/.gitconfig',dest='gitconfig'};
    {secure=false, zip=false, versions=true, source='~/.vimrc',    dest='vimrc'};
    {secure=false, zip=false, versions=true, source='~/.bashrc',   dest='bashrc'};
    {secure=false, zip=true,  versions=true, source='~/.vim/',     dest='vim'};

    -- backups source code --
    {secure=false, zip=true, mirror=true, source='/mnt/STORAGE/', dest='code'};

    };
};
-------------------------------------------------------------------------------
-- :secure=true   - шифровать ли сжатый бекап с паролем.
--                  создать архив и запаролить, zip должен быть zip=true
--                  явное указание zip=false или отсуцтвие ключа создаст ошибку
-- ----------------------------------------------------------------------------
-- :secure=false  - тоже самое поведение что и при zip=false
-- ----------------------------------------------------------------------------
-- :zip=true      - создать архив и добавить в него файлы если их нет в архиве
--                  если version=false то обновлять архив, добавляя новые
--                  файлы и обновля существующие, не удаляет отсуцтвующие
-------------------------------------------------------------------------------
-- :zip=false     - создавать бекап в каталоге dest если versions=false
--                  то клонировать source в dest, при повторном бекапе добавлять
--                  новые файлы и обновлять текущие, не удалять отсуцтвующие
--                  если versions=true создавать отдельный бекап в новом
--                  каталоге с датой бекапа, полностью отельный бекап.
-------------------------------------------------------------------------------
-- :versions=true - если zip=false то создать новый каталог с датой бекапа
--                  если zip=true  то создать новый архив с датой бекапа
-------------------------------------------------------------------------------
-- :mirror=true   - если zip=true то создаётся точная сжатая копия источника
--                  если при этом versions=false то текущий архив удаляет из
--                  себя файлы которых больше нет в источнике
--                  если zip=false то вместо архива создаётся точная копия
--                  источника с удалением файлов из каталога бекапа если их
--                  нет в источнике, тоже самое зеркалирование/клонирование
-------------------------------------------------------------------------------
-- :source        - файл или каталог который нужно бекапить, каталоги
--                  обрабатываются рекурсивно бекапя всё что есть
-------------------------------------------------------------------------------
-- :dest          - каталог внутри носителя для бекапа, оно же префикс
--                  добавляющийся к каталогам и/или архивам при versions=true
--                  отражает то бекап чего делается ОБЯЗАН БЫТЬ УНИКАЛЬНЫМ!!!!
-------------------------------------------------------------------------------
--        Если какого либо ключа нет то он считается равным false
-------------------------------------------------------------------------------
-- В случае если zip mkdir или rsync завершаться с кодом отличным от нуля
-- бекап тут же прекращается с уведомлением на рабочий стол и в лог ошибок
-------------------------------------------------------------------------------

-------------------------------------------------------------------------------
---- исполняет все команды, в случае ошибки прерывает всю работу
-------------------------------------------------------------------------------
local function execute(rule,command,exit_if_fail)
    local success, meta, code = os.execute(command..' >> backup-info.log');
    if (not success) then
       -- hide pass from output
       -- info log and messages
       if rule.backup_pass then
          command = command:gsub(rule.backup_pass,"********");
       end
       local msg = string.format('BACKUP ERROR %s %s %s',command,meta,code);
       io.stderr:write(msg..'\n');
       io.open('backup-error.log','a+'):write(msg);
       execute({},'notify-send  "'..msg..'" -u critical',false);
       if (exit_if_fail == true) then
          os.exit(127);
       end
       return success;
    end
    return success;
end
-------------------------------------------------------------------------------
--- информирует об ошибке и прерывает всю работу
-------------------------------------------------------------------------------
local function backup_fail(msg)
      io.stderr:write(msg..'\n');
      io.open('backup-error.log','a+'):write('\n'..msg..'\n');
      execute({},'notify-send -u critical "'..msg..'"',false);
      os.exit(127);
end
-------------------------------------------------------------------------------
--- просто информирует
-------------------------------------------------------------------------------
local function backup_info(msg)
      io.stdout:write(msg..'\n');
      local log = io.open('backup-info.log','a+');
      log:write('\n'..msg..'\n');
      log:close();
      execute({},'notify-send -u normal "'..msg..'"',false);
end
-------------------------------------------------------------------------------
--- проверяет используется ли в конфигурации пароль
-------------------------------------------------------------------------------
function check_need_pass(rule)
    for name,val in pairs(rule.backup_list) do
        if val.secure and val.secure == true then
           return true;
        end
    end
    return false;
end
-------------------------------------------------------------------------------
--- делает бекап K.O. :)
-------------------------------------------------------------------------------
local function make_backup(rule)
    if (rule.backup_path) then
       -- replaice $USER in path if we have ite
       rule.backup_path = rule.backup_path:gsub('$USER',os.getenv('USER'));
    else
       backup_fail('BACKUP ERROR backup_path not set, no place to save backup',true);
    end
    -- we use password?
    if (check_need_pass(rule) == true) then
        -- check pass contained in configuration
        if not rule.backup_pass and not rule.backup_pass_file then
           backup_fail('BACKUP ERROR you use secure option but backup_pass or backup_pass_file no set!',true);
        end
        -- if pass_file set read the password
        -- and override/write rule.backup_pass
        if (rule.backup_pass_file) then
           -- replaice $USER in path if we have ite
           rule.backup_pass_file = rule.backup_pass_file:gsub('$USER',os.getenv('USER'));
           local pass_file = io.open(rule.backup_pass_file);
           if (pass_file) then
              if rule.backup_pass then
                 backup_info('BACKUP WARNING rewrite backup_pass from backup_pass_file');
              end
              rule.backup_pass = pass_file:read('*l');
           else
              backup_fail('BACKUP ERROR '..rule.backup_pass_file..' no readable!',true);
           end
           pass_file:close();
        end
        -- maybe pass use only numbers force to string
        rule.backup_pass = tostring(rule.backup_pass);
        -- check small pass, no need but jut be
        if not rule.backup_pass or #rule.backup_pass <= 4 then -- kek cheburek 
           backup_info('BACKUP WARNING you backup_pass small, less or equal 4 symbols');
        end
    end
    -- info about starting
    backup_info("BACKUP START "..os.date());
    --first check, we have storage and access?
    execute(rule,'mkdir -p '..rule.backup_path, true);
    -- lockfile + uuid for exclude collisions
    local lockfile = '.lock-938448fc-1742-43e9-bff8-e2acf6d29710';
    -- check/create lock file
    -- if backup failed you self
    -- delete lock file your hands
    if not io.open(rule.backup_path..'/'..lockfile,'r') then
       io.open(rule.backup_path..'/'..lockfile,'w'):write('lock');
    else
       backup_fail("OTHER BACKUP PROCESS IS WORKING, SKIPPING THIS PROCESS\n"..
                   "IF YOU SURE DELETE LOCK FILE "..rule.backup_path..'/'..lockfile..'\n',true);
       ----------------------------------------------------------------------
       -- uncomment if after backup error no need locked backup for fix error
       ----------------------------------------------------------------------
       -- os.remove(rule.backup_path..'/'..lockfile);
    end
    for id,item in pairs(rule.backup_list) do
        local date = os.date("%Y-%m-%d_%X");
        local path = rule.backup_path;
        local pass = rule.backup_pass;
        local dest = item.dest;
        local source = item.source;

        if (not source) then
           backup_fail('BACKUP ERROR source path not set, what files backup?',true)
        end

        if (not dest) then
           backup_fail('BACKUP ERROR dest path not set, wheare dir name to save?',true)
        end

        execute(rule,'mkdir -p '..path..'/'..dest,true);
        backup_info('BACKUP: '..source);

        ------------------- secure: versionize backup data ---------------------
        ------------------------------------------------------------------------
        if (item.secure and item.zip and item.versions) then
            local target = string.format('%s/%s/%s-%s.zip',path,dest,dest,date);
            execute(rule,'zip -r9P '..pass..' '..target..' '..source,true);
            goto next_item;
        end
        ---------------- secure: update and append backup data -----------------
        ------------------------------------------------------------------------
        if (item.secure and item.zip and not item.versions) then
            local target = string.format('%s/%s/%s.zip',path,dest,dest);
            local opts = item.mirror and ' -rFS9P ' or ' -ru9P ';
            execute(rule,'zip '..opts..' '..pass..' '..target..' '..source,true);
            goto next_item;
        end
        ----------- no secure: zipped update and append backup data ------------
        ------------------------------------------------------------------------
        if (not item.secure and item.zip and not item.versions) then
           local target = string.format('%s/%s/%s.zip',path,dest,dest);
           local opts = item.mirror and ' -rFS9 ' or ' -ru9 ';
           execute(rule,'zip '..opts..' '..target..' '..source,true);
           goto next_item;
        end
        ----- no secure: zipped, versionize update and append backup data ------
        ------------------------------------------------------------------------
        if (not item.secure and item.zip and item.versions ) then
           local target = string.format('%s/%s/%s-%s.zip',path,dest,dest,date);
           execute(rule,'zip -r9 '..target..' '..source,true);
           goto next_item;
        end
        --------- no secure: versionize update and append, no delete -----------
        ------------------------------------------------------------------------
        if (not item.secure and not item.zip and item.versions ) then
           local target = string.format('%s/%s/%s-%s/',path,dest,dest,date);
           execute(rule,'mkdir -p '..target);
           execute(rule,'rsync -arv '..source..' '..target,true);
           goto next_item;
        end
        ----------------- no secure: update and append, no delete --------------
        ------------------------------------------------------------------------
        if (not item.secure and not item.zip and not item.versions) then
           local target = string.format('%s/%s/',path,dest);
           execute(rule,'mkdir -p '..target);
           local opts = item.mirror and ' -arv --delete ' or ' -arv ';
           execute(rule,'rsync '..opts..' '..source..' '..target,true);
           goto next_item;
        end
        ------------------------------------------------------------------------
        if (item.secure and not item.zip) then
            backup_fail('BACKUP ERROR UNSUPPORT SECURE WITCHOUT ZIP ARCHIVE :(');
        end
        ::next_item::
    end
    backup_info("BACKUP END "..os.date());
    os.remove(rule.backup_path..'/'..lockfile);
end

-- check depends
execute({},"zip --version",true);
execute({},"rsync --version",true);
--execute({},"mkdir --version",true);
execute({},"notify-send --version",true);
-- start backup now
make_backup(backup_rule)

Всё. Досвиданья.

 , , , ,

LINUX-ORG-RU
()

Вопрос по пул-реквестам

Форум — Development

Допустим есть репа, в ней два файла po я перевёл первый и сделал пул-реквест. Я перевёл второй и хотел сделать пул-реквест, но он будет уже включать два коммита изменений, предыдущий и текущий.

Это значит что для отдельных пул-реквестов нужно делать отдельные бранчи/ветки, ну типа «transtale A to B», «translate C to B» и делать пул-реквесты от них? Дожил, никогда подряд пулл-реквесты не присылал, а если и присылал то после того как предыдущий примут, поэтому с таким не сталкивался =)

Только так можно разделять коммиты по отдельным пул-реквестам? Типа «ФичаА», «ФичаБ».

Не бейте сильна :)

Ответ: Да

 , pull-request, запрос на слиятние, ,

LINUX-ORG-RU
()

Эталонные наборы данных для оценки сжатия

Форум — Development

Есть ли такие? Краткий поиск через поиск ничего не показал или я не знаю как искать. Суть проста, очередной дурак (я) играется с очередным своим (а на деле велосипедным наверное) «алгоритмом» сжатия, без цели, а просто за интерес. Ну, понятно что вся суть итоговая с какими данными то или иное работает лучше, универсальных алгоритмов сжатия не существует. Но чисто для своего удобства хотелось бы иметь некий набор, например данные состоящие только из уникальных значений, данные с последовательным повторением, оно же но с разной частотой повторений или размерами этих самых повторений, смешанные данные в разных пропорциях и так далее и так далее, как набор искусственных данных для синтетической оценки коэффициентов сжатия так и реальных наборов и их комбинаций так сказать типичных в повседневной практике.

Ну типа взять разные архиваторы плюс свой вариант и просто глядеть на разницу оценивая где и в каких случаях выигрыш, проигрыш. Да, можно всё рассчитать просто на бумаге, вообще без запуска и реализации, но так скучно, я же играюсь просто, а когда играешь веселее когда есть таблица лидеров кто фрагов больше набил =)

Можно самому напридумывать конечно, но лень и возможно будет некорректно, может есть что? А то просто совать что под руку попадётся в целом прикидывая что внутри такое себе.

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

В целом не критично, но просто если такое есть было бы удобно.
Как-то так. Может кто знает? Где и куда копать.
Если такого не существует, то надо будет заняться.

Перемещено hobbit из general

 , , датасет, палата мер и весов, сжатие данных

LINUX-ORG-RU
()

Просто домашний ПК 11 (cinnamon)

Галерея — Скриншоты

Что-то надоела однотонность, на время разукрасил рабочий стол папоротником, люблю их, они красивые.
И сделал панельки прозрачными, прозрачность убирается когда например окно развёрнуто и я играю в Colobot :).

Система всё та же Debian GNU/Linux trixie/sid, Cinnamon, tilix, GVim и прочее.

Tilix тоже разукрасил двойным логотипом Debian. Если что, вот мои игры с расцветками логотипа в krita.

Источник производных работ и лицензия на распространение вот тут располагается

На скрине помимо прочего можно лицезреть как я решил добавить в программку на Love2D цветовые схемы.
Бесполезное занятие учитывая что программа забагована и вместо исправления шашечек я вешаю рюшечки :)

Программка для приёма звука с ПК на телефоне или другом ПК, который используется в качестве звуковой карты.
Так как на ПК звук сломался, так уже много месяцев наушники подключены к телефону который 24/7 передаёт звук.
На панельке кнопочка, «колонка» это скрипт по нажатию которого включается и выключается передача звука по сети.
Использую пока module-simple-protocol-tcp через Pipewire-pulse.

Далее кнопочка запуска бекапа и rss уведомлялка для LORa и несколько аплетов типичного десктопа.
Где-то невидимо для глаз работают сприптики на Lua, на нём очень удобно писать для домашнего ПК.
И конечно же Сишечка, но сишечка взрослая дядя поэтому занимается серьёзными делами.
Cinnamon всё так же шикарен, просто работает и не дурит мозг. Ну наверное и всё.
Сижу просто, втыкаю в папоротник, думаю, красиво же, надо поделиться.

🌿 Милые папоротниковые обои 🌿

Сегодня магнитную бурю обещают сильную, всем надёжной связи и голова не бобо ::)
Коооодики кодики, пролетают годики, ээээхъ. Всё, всем бобра. Досвиданья.

>>> Просмотр (1920x1080, 965 Kb)

 , , , ,

LINUX-ORG-RU
()

Клавиатуры — ISO vs ANSI

Форум — Linux-hardware

Всё было хорошо, пока я не ушатал свой HDD для бекапов, уронив его появилась возможность и пошёл за накопителем, ну отвлекаясь от темы поздравьте меня я теперь хипстер ибо взял SSD на 120 гигов, просто потому что небольших HDD не было, лишь терабайтники за 4+тыщ денег. Ну да ладно, но так же на остатки роскоши подумал что стоит взять клаву, любую дешёвку за 500 рублей мне пофигу чем печатать, лишь бы одинаково было, так как моя текущая на ладан дышит и тут моя легкомысленность меня подвела, ой как больно, так уж получилось что за всю жизнь у меня было 2 клавиатуры старая мир её праху искупалась и утонула и текущая разваливающаяся буквально на глазах. Обе они были полноразмерные с расположением ENTER как в ANSI (длинненький), а эту чёрт меня попутал новую я взял с ISO раскладкой, обожемой какаяболь. Текст печатать разницы нет, но вот код это жесть. Вроде мелочь, теперь ENTER не длинный, а с загогулькой и | уехала, была над ENTER, а стала перед. В остальном ISO и ANSI клавиатуры не различаются. Новая даже не ISO, а подобие на неё, нет слеша у левого шифта и славабогу!!

Как это выглядит (кратко в ISO ENTER загогулька в ANSI ENTER длинный )

Кто с какими ISO клавами живёт? Программируете с на ISO или ANSI подобной? Покупая новую с небольшими отличиями вы страдаете? =) Ладно ещё ноутбуки там частично можно понять и то… Я чисто поныть пришёл у меня бомбит от моей невнимательности, а высказать куда то надо :) Попробую посидеть может привыкну…, но у меня настолько руки в виме привыкли пируэты делать как на пиянине Рахманинова настукиваю, а тут бац и у тебя вместо ФАдиез стоит ЛЯминор и белиберда получается.

Фух, вроде такая мелочь, но блиииин :)

 , , , клавиатуры,

LINUX-ORG-RU
()

Я выиграл!

Форум — Talks

Score: 777

Число попытоккомментариев: 13016

Курс скора по ЦентроЛОРБанку 0,059695759 за сообщение.


13016 - минимум столько же раз вы просрёте все свои деньги в лотереях, казино, одноруких бандитах и прочих ставки на… если будете соваться в это болото.
Поэтому не играйте в азартные игры и пусть всё будет хорошо =)

 

LINUX-ORG-RU
()

Добро пожаловать домой, Анонимус

Форум — General

@anonymous, только не балуй.

 , , , он вернулся

LINUX-ORG-RU
()

Инструкция BLENDPD в SSE4.1 Чё за...?

Форум — Development

Здрасти здрасти люди добрые… ой не то :D

Короче есть такая инструкция blendpd два SRC и DEST 128 битных регистра содержащие каждый по два double float значения и 8битная какашечка imm с флагами в младших битах 0 и 1 в зависимости от флагов данные тасуются туда сюда копированием. Ну так вот, вот ссылка на подробное объяснение

Всё ладно, (хотя мне и так тяжело и тяжко), но там есть псевдокод. Приведу тут его для удобства.

IF (IMM8[0] = 0)THEN DEST[63:0]←DEST[63:0] # <<< это 
    ELSE DEST [63:0]←SRC[63:0] FI
IF (IMM8[1] = 0) THEN DEST[127:64]←DEST[127:64]
    ELSE DEST [127:64]←SRC[127:64] FI
DEST[MAXVL-1:128] (Unmodified)

Самая первая строчка, если самый младший бит равен 0 то мы копируем из регистра DEST биты с 0 по 63 включительно в DEST в 0 по 63 включительно эмммммм, чё? Я вот тут нипонял…

Грубо говоря в сишке этот кусочек будет выглядеть так

double x[2] = { 0.1, 0.2 }; /*просто для наглядности*/
x[0] = x[0];  /* какой в этом смысл?*/

Я дебилушка опять или куда? Объясните юродивому как эта инструкция работает, всё расписано вроде, но вот не верю я что тупо идёт копирование бесполезное.
Штирлиц начал что-то подозревать, но не понимал что именно… -_-

 , , , ,

LINUX-ORG-RU
()

Сервисы разовой ойти подработки для жопоруков

Форум — Talks

Я вааааааще не в курсе что сейчас актуально, адекватно, живо и всё такое. Короче кто чем пользуется?

Хочется:

  • Кучки мелких разовых подработок, аля
    • «сбацать скриптик на коленке за пясот рублей» :D
    • «исправить багу»
    • «доработать/переработать/добавить/выкинуть»
    • и прочие такие вот точечные штучки дрючки
  • Нет обязательной оплаты аккаунта к доступу отзываться на подработки, сразу в сраку такое.
  • Нет проблем с оплатой на обычные карточки и железобетонная работа в РФ.
  • Нет запросов аля «подтвердите аккаунт фотой с разворотом паспорта» и прочего дебилизма.

Для общего так сказать интереса и развития, кто чего использует и какие у вашего варианта минусы и плюсы для вас? Я конечно погуглить могу и фейковые отзывы на отзывиках почитать и проплаченые статьи на сайтах аля «10 лучших фриланс бирж!» и даже делаю это, но и тут думаю спросить будет не лишним.

Заранее спасиба 😊

 жопорук, , , ,

LINUX-ORG-RU
()

Гитхаб лагает :3

Форум — Talks

И такое ощущение что с каждым днём всё сильнее и сильнее, интерфейс по полгода раздупляется, всё прогружается как во времена usb модемов с тарифом нищук 64кбит/с так далее. Это так сказать региональная проблема или у всех так? И даже push в мастер ветку стартует только после паузы.

Скажите ему чтобы не лагал.

 , ,

LINUX-ORG-RU
()

Добавить фичу в /proc/cpuinfo для работоспособности эмуляции SSE4.2

Форум — Development

Суть такова, программа определяет что у меня мой Phenomчик не умеет в sse4.2 говорит про это и всё дальше не работает.
А мне надо чтобы она валилась на traps illegal instruction.

Чуть расширенная суть csgo обновилась до cs2 и теперь на моём Phenom2 X6 не работает.

Завёл issue

И там человек посоветовал попробовать модуль ядра opemu-linux для эмуляции недостающих инструкций и попутно он его подправил для сборки на свежих ядрах.
Им (удобно) я определил что валится игра на инструкциях: Типа

OPEMU:  pmaxud xmm0, xmm1
traps: cs2[blabla] trap invalid opcode
...
OPEMU:  pminud xmm0, xmm1
traps: cs2[blabla] trap invalid opcode

Как видно нужные инструкции в этом модуле не реализованы и я кое как добавил в ядромодуль эмуляцию этих инструкций, благо они простые, найти в двух 128 битных регистрах максимальные 32 битные значения и вернуть их, а теперь ксДва грит

Launcher Error: A CPU that supports the `SSE4.2` instruction set is required.

А мне надо чтобы именно что программа бы падала на invalid opcode/illegal instruction а для этого программе надо соврать что процессор умеет SSE4.2 =) Вроде можно было фичи процессора подменять не, ну в смысле без правки ядра? В голове усердно торчит мысль что можно, но как не вспомню, гуглить не получается, сырцы сейчас рыть лень просто хочется ответа, голёва болит, носъ пихтит, горьло как сарделька, болякаю ой нимагу, пожалейте, подскажити болезному боляке йуууууу.

Да знаю я что можно просто через objdump получить все инструкции и вычислить те что не хватает дело не в этом.

Ну /proc/cpuinfo это для примера, нужно чтобы программы не думали что нужные им фичи есть и их проверки обламывались.

 cpu feachures, , , sse4.2,

LINUX-ORG-RU
()

Автор топика

Форум — Talks

Автор топика

 , , автор топика, новое на сайте

LINUX-ORG-RU
()

Сейчас идёт стрим про СПО OSSDEVCONF Live

Форум — Talks

Местами интересно

Докладчиков не стесняются ругать (вежливо но всё же).

 , ,

LINUX-ORG-RU
()

HP блокирует сканер и факс если у тебя мало чернил или они не те :D

Форум — Talks

Вот представьте сидит такой совет и решает что делать.

- Мы продаём копеечные расходники дороже аппаратуры, но наши пользователи используют не оригинальные или 
не хотят менять нашу краску когда она ещё не закончилась, но по нашему мнению они должны купить ещё, что будет делать?
- Давайте блокировать печать!
- Нас за это нагрели в суде, мы не могли убедить суд что пользователь не имеет права использовать картридж ко конца
- Хм, а давайте будет отключать в МФУ другие функции сканер там, факс.
- А причём тут они?
- Непричём =)
- Гениально, срочно в работу!

В который раз производители печатающих машинок показывают свою неадекватность. Ох

 , , , ,

LINUX-ORG-RU
()

Электронный LCD планшет для заметок посоветуйте

Форум — Talks

Тот который для рисования и для записей, кто использует вместо разовых зарисовок, записей и всего такого? Норм? Какие посоветуете, а какие не посоветуете? Часто от руки делаю временные записи, наброски, блок схемы алгоритма или просто записи промежуточных например вычислений, уходит много бумаги. Узнал про такую штуку которая плюс ещё пости пассивная батарейка нужна только чтобы стирать, а писать можно вроде как любым тупым предметом например головой. Моделей тьма от 250 рублей до 2500 и более. Не знаю есть ли между ними шибкая разница, насколько понял только «цветные» брать не нужно ибо там просто подложка градиентом идёт цветным.

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

Только я не понял, там можно делать записи как ручкой 1~2 миллиметра? Или только жирно рисовать? Короче если есть опыт отпишитесь, спасиба =)

Перемещено hobbit из general

 , , , ,

LINUX-ORG-RU
()

С днём энтуазиаста быдлокодера домохозяйки!

Форум — Talks

День ЭнБыДоКи — непрофессиональный праздник в РФ и не только, отмечаемый в 257-й день года. Число 257 выбрано потому, что это количество различных значений, которые можно выразить с помощью восьмиразрядного байта плюс один в честь его переполнения.

В невисокосный год данный праздник выпадает после 13 сентября, в високосный — после 12 сентября. 14 сентября 2023 года Президент России Пользователь сайта linux.org.ru брякнул в шутку Указ № 0, подготовленный только что, который устанавливает в России и всём остальном мире новый неофициальный праздник — « энтуазиаста быдлокодера домохозяйки!» всё мировое сообщество с воодушевлением приняло указ как приказ и начало его поскорее исполнять!

Мы те кто горит своим делом, мы лезем в самую гущу самого сложного в мире кода и меняем и улучшаем его не понимая что творим и что получится. Мы авторитетно отвечаем на вопросы в которых мало что понимаем. Мы берёмся за начинание десятков проектов не доведя ни одного до конца породив сотни демок и запутавшись в из названиях. Мы всегда начинаем поздно не успев и заканчиваем рано не доделав. Мы готовы сутками писать код который потом не понимаем никем кроме никого. Мы любим своё дело, мы его обожаем, но не всегда до конца понимаем что и главное зачем мы это делаем, но нас это не останавливает. Мы радуемся мелочам, мы стараемся и даже когда ничего не получается не обращая внимания на насмешки идём вперёд годами и десятилетиями искренне взращивая в наших кривых ручках красоту полузаконченного творения. Мы те кто превозмогая, мы те кто вопреки. И если хоть один из нас прозреет и поумнеет мы все будем искренне рады и с добрым словом пошлём нафиг так как очередное ЧСВ чудило нам не нужно. Во имя добра.

Всех причастных поздравляю!

 , , , энбыдоки, энтузиазм

LINUX-ORG-RU
()

Кто что кодит, патчит, чинит, ломает, переводит, иллюстрирует, озвучивает?

Форум — Development

Пятница развратница, многие из тутава здешних сидят и втихую пока никто не видит натыкивают на клавиатуре и/или/и не только мышкой всякое разное, от мегапроектов размером с жизнь за неделю до попытки завести write only однострочник не поломав всю систему. Кто по работе, но может сказать про то что делает, а кто просто так или ещё как по своему желанию или не очень.

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

Всем интересно знать чем вы занимаетесь, вам интересно знать чем занимаются другие, ведь сегодня день знаний!


Для тех кто в танках в загончиках разработчиков игр например, форумах, сайтах, чатиках иногда проходят субботники «скриншотиков», где все подряд от программистов до музыкантов просто делятся процессом своей работы, просто куском, кто показывает крутой эффект, а кто гордо синий кубик на белом фоне. Кто показывает график сравнений скорости работы нового своего алгоритма или просто скриншот программы порой даже CLI программы, вааащее пофигу. А кто-то делится тем что узнал некую фигнуюшку/фичу/алгоритм/программу и его штырит и он творит. Суть проста как палка «Я сделяль» ни взять ни отнять.

Гы ^.^ И не стесняемся!

 , , , ,

LINUX-ORG-RU
()

кордицепс

Форум — Talks

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

Пруф

Не знал про такую пасхалку раньше, ну собственно всё, досвиданья.

 , , , страшна,

LINUX-ORG-RU
()

Ну чё пацаны, треугольное ядро на плоскости?

Форум — Science & Engineering

Заявление от Тимофея Янвинтина из Красноярска.

Интервью в паре с Борисом Бояршиным

Суть, нуклоны в составе образуют фиксированные пространственные модели в орбитальной плоскости такие что количество ядерных связей меньше или равно числу нуклонов. Изотопная модель такова что соударения нейтронов которые всегда находятся на периферии пространственной модели порождают протон и так далее включая нестабильные радиоактивные тяжёлые элементы по тому же принципу. Итого описанная из этого всего и построенная на плоскости модель являясь с виду схематической по заявлению является физической или однозначно изображает реальный вид ядра если бы его можно было бы увидеть.

Нескрываемая цель Тимофея продать 300 книг =) Ну это ладно. Давайте попробуем на это внимания не обращать из 58 минутного видива основная суть ясна, но очень всё растянуто можно прыгнуть на https://youtu.be/-DzhWyIXU1c?feature=shared&t=1637 например.

На малых моделях, ну, ничего нового, выглядит естественно и стройно (по части логики построения) все уже видели подобное, но при масштабировании на всё более тяжёлые элементы выглядит диковинно.

Я ничё спецом грить не буду по сабжу =) Дискас.

 навука, , , , ядро атома

LINUX-ORG-RU
()

Индийская лунная программа - прямой эфир

Форум — Talks

 , ,

LINUX-ORG-RU
()

RSS подписка на новые темы