LINUX.ORG.RU

Сообщения cdslow

 

Объявлен выход Fedora Linux 38

Новости — Red Hat
Объявлен выход Fedora Linux 38
Группа Red Hat

17.04.2023 объявлено о выходе Fedora Linux 38.

Дистрибутив представлен в виде 5 основных редакций: Workstation, Server, IoT, Cloud и CoreOS.

( читать дальше... )

>>> Подробности

 , ,

cdslow
()

Выпущены в свет Intel oneAPI Toolkits

Новости — Разработка
Выпущены в свет Intel oneAPI Toolkits
Группа Разработка

8 декабря состоялся выпуск набора программных инструментов Intel, предназначенных для разработки программ с использованием единого программного интерфейса (API) для различных вычислительных ускорителей, включая векторные команды процессоров (CPU), графические ускорители (GPU) и программируемые вентильные матрицы (FPGA) — Intel oneAPI Toolkits for XPU Software Development.

Базовый набор инструментов «oneAPI Base Toolkit» содержит компиляторы, библиотеки, средства для анализа и отладки, а также средства обеспечения совместимости, которые помогают перенести программы использующие CUDA на диалект Data Parallel C++ (DPC++).

Дополнительные наборы инструментов предоставляют средства для высокопроизводительных расчётов (HPC Toolkit), для разработки искусственного интеллекта (AI Toolkit), для «интернета вещей» (IoT Toolkit) и для высокопроизводительной визуализации (Rendering Toolkit).

Инструменты Intel oneAPI позволяют исполнять программы, полученные из одного и того же исходного кода на вычислительном оборудовании разной архитектуры.

Наборы инструментов можно скачать бесплатно. Кроме бесплатной версии инструментов есть и платная, которая даёт доступ к технической поддержке от инженеров Intel. Также доступна возможность использовать для разработки и тестирования кода сервис Intel® DevCloud, который предоставляет доступ к различным CPUs, GPU и FPGA. Будущие версии Intel® Parallel Studio XE и Intel® System Studio будут базироваться на Intel oneAPI.

Ссылка для скачивания: https://software.intel.com/content/www/us/en/develop/tools/oneapi/all-toolkits.html

( читать дальше... )

>>> Подробности

 , , , ,

cdslow
()

Lua 5.4

Новости — Разработка
Группа Разработка

После двух лет разработки, 29 июня тихо и незаметно вышла новая версия языка программирования Lua — 5.4.

Lua – это простой интерпретируемый язык программирования, который легко встраивается в приложения. Благодаря этим качествам, Lua широко используется как язык расширения или описания конфигурации программ (в частности, компьютерных игр). Распространяется Lua по лицензии MIT.

Предыдущая версия (5.3.5) выходила 10 июля 2018 года.

Основные изменения в новой версии

  • новый сборщик мусора на основе поколений (generational). В функции collectgarbage параметры setpause и setstepmul объявлены устаревшими, вместо них рекомендуется использовать параметр incremental;

  • новая функция для выдачи предупреждений warn с возможностью отключения их отображения;

  • новая реализация math.random использует алгоритм xoshiro256** вместо предоставляемого libc и инициализирует генератор случайным числом;

  • константы (constant variables);

  • «закрываемые» (to-be-closed) переменные — локальные константы, для которых выполняется метод __close при выходе из области видимости;

( читать дальше... )

>>> Подробности

 

cdslow
()

fictionup 0.2.1

Форум — Development

Выложил у себя на сайте обновлённую версию fictionup, которая должна собираться на Gentoo.

В самой программе изменений нет, только в CMakeLists.txt добавлена проверка на патченную версию ZLib.

 , ,

cdslow
()

Вышла версия 0.2 программы fictionup — конвертера из Markdown в FB2

Новости — Open Source
Группа Open Source

fictionup — конвертер из формата Markdown в формат FB2, который работает из командной строки. Он поддерживает ограниченный набор тэгов, описывающих метаинформацию, необходимую для создания корректных FB2-документов.

Изменения в новой версии:

  • добавлена поддержка мета-тэга «Series:» («Серия:»), который позволяет указывать, к какой серии относится книга;
  • добавлена возможность использовать разметку Markdown в аннотации, а не только в тексте самого документа;
  • добавлена возможность упаковки результирующего документа в формат fb2.zip (ключ командной строки -z).

Лицензия — GPL 3+.

Примеры исходного (Markdown) и конвертированного (FB2) документов.

>>> Сайт программы

 , ,

cdslow
()

Transmission patch

Форум — Development

Я сделал патч для transmission-2.94, который добавляет к анонсам поле «ip=» и дополнительный заголовок «X-Forwarded-For» с адресом шлюза. Это всё нужно для удобной работы через прокси.

Патч: https://yadi.sk/d/4e2Vp7Xh3XqTmD

Исходники transmission лежат на github, а я там не зарегистрирован, и регистрироваться особого желания нет.

Если есть желающие отправить им пул-реквест - милости прошу.

 , , ,

cdslow
()

На базе ВМК МГУ начала работу «Лаборатория электроники „Байкал“» (ЛэБ)

Новости — Hardware and Drivers
Группа Hardware and Drivers

В сотрудничестве с компанией «Байкал Электроникс» на базе центра обработки данных факультета ВМК МГУ имени М.В. Ломоносова начала работу «Лаборатория электроники „Байкал“» (ЛэБ). В лаборатории можно оценить производительность построенной на базе архитектуры MIPS Warrior P-class P5600 SoC Baikal-T1 и отлаживать программы для нее.

Доступ в ЛэБ организован через baik.al и baikal.cs.msu.ru. В первую очередь доступ предоставляется студентам, преподавателям и сотрудникам МГУ, возможна регистрация научных сотрудников и разработчиков ПО из других организаций.

Кроме того, в первом квартале 2018 года начнётся розничная продажа плат БФК 3.1 на основе процессора Baikal. По данным C-News, розничная стоимость платы будет около 50 000 руб. Ранее такие платы продавались только юридическим лицам и стоили около 200 000 руб.

>>> Подробности

 ,

cdslow
()

Установить переменную окружения для всех графических приложений в Fedora

Форум — Desktop

Обновил я у себя Fedora, и испортились у меня после этого шрифты. Поискал в Интернете в чём дело и выяснил, что во Freetype поменялся алгоритм BCI по умолчанию, и вернуть всё обратно можно установив переменную окружения FREETYPE_PROPERTIES со значением truetype:interpreter-version=35.

Хорошо, создаю файл /etc/profile.d/fonts.sh, пишу в нём:

export FREETYPE_PROPERTIES='truetype:interpreter-version=35'

Перезапускаю сеанс — ура, старые шрифты вернулись, глазкам полегчало.

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

Начинаю разбираться в чём дело. Документ с рабочего стола запускается через systemd dbus activation, а оно на profile.d плевать хотело. Ладно, создаю файл /etc/systemd/system.conf.d/env.conf, пишу в нём:

[Manager]
DefaultEnvironment='FREETYPE_PROPERTIES=truetype:interpreter-version=35'

Перезагружаю систему — да, теперь шрифты нормальные и в LibreOffice.

Внимание вопрос: есть в Fedora какое-то одно место, где можно прописать переменную окружения для всех графических (или вообще всех) приложений, не повторяя одно и то же несколько раз?

 , , , ,

cdslow
()

Вышла версия 0.1 программы fictionup — конвертера из Markdown в FB2

Новости — Open Source
Группа Open Source

fictionup — конвертер из формата Markdown в формат FB2, который работает из командной строки. Он поддерживает ограниченный набор тэгов, описывающих метаинформацию, необходимую для создания корректных FB2-документов.

Программа основана на библиотеке Hoedown и поддерживает расширенный вариант разметки Markdown, включающий такие возможности, как таблицы и сноски.

Лицензия — GPL 3+.

Примеры исходного (Markdown) и конвертированного (FB2) документов.

>>> Сайт программы

 , , hoedown,

cdslow
()

Новая версия программы для слайдшоу c эффектами переходов — sleid0r 0.3

Форум — Multimedia

Готова новая версия программы sleid0r. Добавлен новый режим сортировки изображений — перемешивать каталоги, а также управляющие клавиши: пауза, вперёд и назад.

Сайт

Исходники

Пакеты

 , ,

cdslow
()

Что повесить на пробел — паузу или листание?

Форум — Development

Решил я добавить в свою программу для слайдшоу (sleid0r) управляющие клавиши для листания вперёд/назад и для установки паузы. И теперь в раздумьях — какую из этих функций повесить на клавишу пробел?

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

А какое поведение вы интуитивно ожидаете от пробела при показе слайдшоу?

 ,

cdslow
()

LinuxFormat объявляет кампанию сбора средств для публикации архива журнала на Wiki

Новости — Linux в России
Группа Linux в России

На ресурсе wiki.linuxformat.ru были опубликованы материалы из выпусков LinuxFormat — технологические статьи, приемы программирования, разработки с открытым кодом и многое другое. Для дополнения и развития библиотеки необходима поддержка сообщества. С этой целью запущена краудсорсинговая кампания, которая продлится до 2 июня 2014 года.

Кампания Linux Format на Indiegogo

«Linux Format» — журнал на русском языке, посвящённый операционной системе GNU/Linux и свободному ПО.

>>> Подробности

 , ,

cdslow
()

Состоялся выпуск Software Collections (SCL) для CentOS-6 x86_64

Новости — Red Hat
Группа Red Hat

Software Collections - это репозиторий, который является аналогом «Red Hat Software Collections», и предоставляет более новые версии некоторых приложений (в основном, это средства web-разработки), чем входящие в базовый дистрибутив.

Программы из этого репозитория не заменяют базовые, а устанавливаются параллельно в каталог /opt.

Репозиторий включает в себя:

  • MariaDB 5.5
  • MySQL 5.5
  • Node.js 0.10
  • Perl 5.16.3
  • PHP 5.4.16
  • PostgreSQL 9.2
  • Python 2.7
  • Python 3.3
  • Ruby 1.9.3

Для подключения репозитория используйте команду:

yum install centos-release-SCL

Документация (RedHat).

Репозиторий поддерживается только для CentOS x86_64 6.4 и 6.5.

>>> Подробности

 centos rhel scl

cdslow
()

PgcDemux для Linux

Форум — Multimedia

Я собрал консольную версию PgcDemux. Может, кому-нибудь пригодится.

Исходники: http://cdslow.org.ru/files/cpgcdemux/cpgcdemux-0.1.tar.gz

Пакеты: http://download.opensuse.org/repositories/home:/cdslow:/cpgcdemux/

 , ifo, m2v,

cdslow
()

Состоялся выпуск CentOS 6.5

Новости — Red Hat
Группа Red Hat

1-го декабря вышло в свет очередное обновление поддерживаемого сообществом клона RHEL — CentOS 6.5.

Основные изменения:

  • Полная поддержка Precision Time Protocol. Драйверы, поддерживающие сетевые отметки времени (network time stamping): bnx2x, tg3, e1000e, igb, ixgbe и sfc.
  • OpenSSL обновлён до версии 1.0.1.
  • OpenSSL и NSS поддерживают TLS версий 1.1 и 1.2.
  • В KVM внесены различные улучшения. В том числе: улучшена поддержка чтения файлов в форматах VMDK и VHDX, «горячее» подключение процессоров, обновлены утилиты для преобразованиях образов виртуальных и физических машин.
  • Обновлены драйверы Hyper-V и VMware.
  • Обновлены версии Evolution (до 2.32) и Libre Office (до 4.0.4).

( читать дальше... )

>>> Подробности

 ,

cdslow
()

CentOS начинает тестирование репозитория «Software Collections»

Новости — Red Hat
Группа Red Hat

Новый репозиторий является аналогом «Red Hat Software Collections», и предоставляет более новые версии некоторых приложений (в основном, это средства web-разработки), чем входящие в базовый дистрибутив.

( читать дальше... )

Репозиторий поддерживается только для CentOS-6.4 x86_64.

>>> Подробности

 ,

cdslow
()

День тестирования CentOS

Новости — Red Hat
Группа Red Hat

В пятницу, 9 ноября 2012 года пройдёт день тестирования CentOS (CentOS Test Day), желающие принять участие приглашаются на IRC-канал #centos-devel сервера irc.freenode.net. Мероприятие проводится с целью ознакомить более широкий круг людей с тестами, которые уже поддерживаются проектом, произвести запуск тестов с использованием их инфраструктуры и в конце концов заполучить в проект новых постоянных участников.

День тестирования будет проходить с 05:00 до 23:00 UTC, и там будет присутствовать пара людей из группы контроля качества CentOS и те люди, которые уже приняли участие в подготовке тестов. Они помогут вам включиться в процесс.

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

Информация о проведении дня тестирования будет доступна на странице CentOS Wiki.

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

>>> Подробности

 ,

cdslow
()

[vala][srt2tmx] Покритикуйте код

Форум — Development

Осваиваю vala. Без практической задачи мне программировать не интересно, поэтому реализовал то, в чём у меня сейчас была потребность.

Программа читает два набора .srt файлов на двух языках, и на основе сопоставления временных меток создаёт файл памяти перевода (translation memory) в формате tmx.

Программа работает, своё дело сделала, но мне интересно, что можно было написать проще/эффективнее/понятнее (например, мне не нравится, как организован двумерный динамический массив для имён файлов).

Много кода:

struct TextEvent
    {
    double begin;
    double end;
    string text;
    }

struct TextPair
    {
    string orig;
    string trans;
    }

struct StringArray
    {
    string[] sa;
    }

int main(string[] args)
    {
    string[] lang_codes={}; /* Languages */
    StringArray[] lang_data={}; /* Source file names */
    string out_file=null; /* Output file name */

    int file_i=0; /* Source file number */

    /* Process command line arguments */
    for(int i=1; i < args.length; ++i)
        {
        if(args[i].has_prefix("-"))
            {
            /* It's an option */
            string opt=args[i].substring(1);
            if("o" == opt)
                {
                /* Output file name */
                ++i;
                if(i < args.length)
                    out_file=args[i];
                }
            else if(2 == opt.length)
                {
                /* Language code */
                lang_codes+=opt.up();
                file_i=0;
                }
            else
                {
                /* Some shit */
                stderr.printf("Invalid option: %s\n", args[i]);
                return 1;
                }
            }
        else
            {
            /* It's a file name */
            if(0 == lang_codes.length)
                {
                /* Language code must go first */
                stderr.printf("Language undefined!\n");
                return 1;
                }

            if(lang_data.length <= file_i)
                {
                /* Allocate new set of files */
                lang_data.resize(file_i + 1);
                lang_data[file_i].sa={};
                }

            if(lang_data[file_i].sa.length < lang_codes.length)
                /* Allocate space for file name */
                lang_data[file_i].sa.resize(lang_codes.length);

            /* Store file name */
            lang_data[file_i].sa[lang_codes.length-1]=args[i];
            ++file_i;
            }
        }

    /* Print source file names */
    for(int lang_i=0; lang_i < lang_codes.length; ++lang_i)
        {
        stdout.printf("%s files:\n", lang_codes[lang_i]);
        foreach(var ld in lang_data)
            {
            if(null == ld.sa[lang_i])
                {
                stderr.printf("File lists mismatch!\n");
                return 1;
                }
            stdout.printf("  %s\n", ld.sa[lang_i]);
            }
        }

    if(lang_codes.length != 2)
        {
        stderr.printf("There must be 2 input languages!\n");
        return 1;
        }

    if(null == out_file)
        {
        stderr.printf("Missing output file name!\n");
        return 1;
        }

    TextPair[] pairs={}; /* Translations */

    /* Process file sets */
    foreach(var ld in lang_data)
        {
        if(null == ld.sa[0] || null == ld.sa[1])
            {
            stderr.printf("File lists mismatch!\n");
            return 1;
            }

        stdout.printf("Processing:\n  %s\n  %s\n", ld.sa[0], ld.sa[1]);

        try
            {
            /* Read, parse and match */
            match_events(ref pairs, ld.sa);
            }
        catch(FileError e)
            {
            stderr.printf("%s\n", e.message);
            return 1;
            }

        }

    /* Write XML */
    stdout.printf("Writing: %s\n", out_file);
    write_pairs(out_file, pairs, lang_codes);

    return 0;
    }

/* Process file set */
void match_events(ref TextPair[] pairs, string[] file_set) throws FileError
    {
    TextEvent[] orig, trans; /* Parsed srt data */
    int i_trans=0, i_orig=0; /* String numbers */
    double o_begin, o_end, o_mid; /* Original time interval */
    double t_begin, t_end, t_mid; /* Translated time interval */

    /* Read and parse files */
    orig=parse_srt(file_set[0]);
    trans=parse_srt(file_set[1]);

    /* Process text events */
    while(i_orig < orig.length && i_trans < trans.length)
        {
        /* Calculate original time interval */
        o_begin=orig[i_orig].begin;
        o_end=orig[i_orig].end;
        o_mid=(o_begin + o_end) / 2.0;
        /* Calculate transalted time interval */
        t_begin=trans[i_trans].begin;
        t_end=trans[i_trans].end;
        t_mid=(t_begin + t_end) / 2.0;
        /* Test for interval match */
        if(t_mid > o_begin && t_mid < o_end || o_mid > t_begin && o_mid < t_end)
            {
            /* Store matched text */
            push_pair(ref pairs, orig[i_orig].text, trans[i_trans].text);
            ++i_trans;
            ++i_orig;
            /* Concatenate overlapping events */
            do
                {
                while(i_trans < trans.length)
                    {
                    t_mid=(trans[i_trans].begin + trans[i_trans].end) / 2.0;
                    if(t_mid < o_begin || t_mid > o_end)
                        break;
                    pairs[pairs.length-1].trans+=" " + trans[i_trans].text;
                    t_end=trans[i_trans].end;
                    ++i_trans;
                    }
                while(i_orig < orig.length)
                    {
                    o_mid=(orig[i_orig].begin + orig[i_orig].end) / 2.0;
                    if(o_mid < t_begin || o_mid > t_end)
                        break;
                    pairs[pairs.length-1].orig+=" " + orig[i_orig].text;
                    o_end=orig[i_orig].end;
                    ++i_orig;
                    }
                }
            while(t_mid > o_begin && t_mid < o_end && i_trans < trans.length);
            }
        else
            {
            /* No matching event */
            if(o_mid < t_mid)
                {
                /* Skip original */
                /*push_pair(ref pairs, orig[i_orig].text, "");*/
                ++i_orig;
                }
            else
                {
                /* Skip translated */
                /*push_pair(ref pairs, "", trans[i_trans].text);*/
                ++i_trans;
                }
            }
        }
    }

/* Append text pair to array */
void push_pair(ref TextPair[] pairs, string t1, string t2)
    {
    pairs.resize(pairs.length+1);
    pairs[pairs.length-1].orig=t1;
    pairs[pairs.length-1].trans=t2;
    }

/* Read and parse srt file */
TextEvent[] parse_srt(string file_name) throws FileError 
    {
    TextEvent[] parsed={};
    string file_text;

    /* Read file */
    FileUtils.get_contents(file_name, out file_text, null);

    /* Parse text */
    foreach(var srt_group in file_text.replace("\r", "").split("\n\n"))
        {
        var srt_part=srt_group.strip().split("\n", 3);
        if(srt_part.length<3)
            break;
        var time_text=srt_part[1].split("-->", 2);
        parsed.resize(parsed.length+1);
        parsed[parsed.length-1].begin=parse_time_value(time_text[0]);
        parsed[parsed.length-1].end=parse_time_value(time_text[1]);
        parsed[parsed.length-1].text=srt_part[2].replace("\n", " ");
        }

    return parsed;
    }

/* Convert srt time to double */
double parse_time_value(string time_text)
    {
    double time_value;

    var time_parts=time_text.strip().replace(",", ".").split(":", 3);
    time_value=double.parse(time_parts[2]);
    time_value+=double.parse(time_parts[1])*60.0;
    time_value+=double.parse(time_parts[0])*3600.0;

    return time_value;
    }

/* Write XML file */
void write_pairs(string file_name, TextPair[] pairs, string[] lang_codes)
    {
    var xml=new Xml.TextWriter.filename(file_name);

    xml.set_indent(true);
    xml.start_document();
    xml.start_element("tmx");
        xml.write_attribute("version", "1.4");
        xml.write_attribute("xmlns", "http://www.localization.org/tmx14");
        xml.start_element("header");
            xml.write_attribute("creationtool", "srt2tmx");
            xml.write_attribute("creationtoolversion", "0.1");
            xml.write_attribute("datatype", "PlainText");
            xml.write_attribute("segtype", "sentence");
            xml.write_attribute("adminlang", "en-us");
            xml.write_attribute("srclang", lang_codes[0]);
            xml.write_attribute("o-tmf", "srt2tmx");
        xml.end_element();
        xml.start_element("body");
    foreach(var p in pairs)
        {
            xml.start_element("tu");
                xml.start_element("tuv");
                    xml.write_attribute("xml:lang", lang_codes[0]);
                    xml.write_element("seg", p.orig);
                xml.end_element();
                xml.start_element("tuv");
                    xml.write_attribute("xml:lang", lang_codes[1]);
                    xml.write_element("seg", p.trans);
                xml.end_element();
            xml.end_element();
        }
        xml.end_element();
    xml.end_element();
    xml.end_document();
    xml.flush();
    }

 ,

cdslow
()

Видеофильтры

Форум — Development

Придумал я несколько алгоритмов для фильтрации видео. И начал я их реализовывать для программы transcode. Но transcode скоропостижно скончалась. Тогда я решил переписать их под mencoder. Но API у mencoder мало того, что запутанный, так как завязан на mplayer с его оптимизациями, так ещё и не позволяет свободно манипулировать удалением/добавлением/перестановкой кадров. В общем, написал я собственный вариант API для видеофильтрации. И реализовал фильтры на нём.

Основная идея в том, что вся внутренняя обработка ведётся строго в одном формате цветности - yuv444 и фильтры могут буферизировать у себя любое количество кадров и выдавать их в любой последовательности.

Исходный код: video3x-0.1.tar.gz

Исполняемые файлы для Linux: video3x-0.1-linux.tar.gz

Исполняемые файлы для Windows: video3x-0.1-windows.zip

Опции командной строки (по английски): video3x-0.1-help.txt

Лицензия - LGPL 3+.

cdslow
()

[ffmpeg] Замена ключа -s на -video_size в ffplay

Форум — Multimedia

API в ffmpeg ломают постоянно, к этому все давно привыкли.

А теперь сломали командную строку очень оригинальным образом. Итак, в fedora-16 ffplay не проигрывает raw-видео с ключём -s для указания размера кадра, вместо него теперь нужно использовать ключ -video_size. Всё бы ничего, только про этот ключ в справке ffplay ни слова.

Собственно вопрос: как в скрипте определить, какой ключ использовать для проигрывания raw-видео?

Может быть, кто-нибудь знает, с какой именно версии ffplay изменился ключ, чтобы сделать проверку по версии?

 

cdslow
()

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