LINUX.ORG.RU

Сообщения czan

 

Про преобразования сокетов

Форум — Development

Копаюсь в ядре Linux и частенько натыкаюсь, например, на такое:

struct inet_connection_sock *icsk = build_icsk(test);
KUNIT_ASSERT_EQ(test, 0,
                       mptcp_token_new_connect((struct sock *)icsk));

Вопрос: как работает вот это выражение:

(struct sock *)

Это, я так понимаю, преобразование из одной структуры в другую? Но как это происходит? Где посмотреть?

 , ,

czan
()

KUnit тестирование

Форум — Development

Экспериментирую с KUnit. Скачал ядро отсюда. Пытаюсь сделать тестирование с помощью KUnit по этой инструкции. Пункт с выполнением ./tools/testing/kunit/kunit.py run отрабатывает, вроде бы, хорошо. Выхлоп:

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

Теперь пытаюсь сделать пункт «Creating a .kunitconfig». Создаю .kunitconfig:

charlzk@Scarlett ~/Projects/linux-5.16 $ cp tools/testing/kunit/configs/default.config .kunitconfig
charlzk@Scarlett ~/Projects/linux-5.16 $ cat .kunitconfig
CONFIG_KUNIT=y
CONFIG_KUNIT_EXAMPLE_TEST=y
CONFIG_KUNIT_ALL_TESTS=y

Добавляю CONFIG_LIST_KUNIT_TEST=y в .kunitconfig:

charlzk@Scarlett ~/Projects/linux-5.16 $ cat .kunitconfig
CONFIG_KUNIT=y
CONFIG_KUNIT_EXAMPLE_TEST=y
CONFIG_KUNIT_ALL_TESTS=y
CONFIG_LIST_KUNIT_TEST=y

Теперь запускаю тестирование:

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

Согласно инструкции, сперва должен сгенерироваться .config, но конфиг не генерируется. Я подозреваю, что .kunitconfig вообще не играет никакой роли. Я даже попробовал закомментировать всё содержимое .kunitconfig:

charlzk@Scarlett ~/Projects/linux-5.16 $ cat .kunitconfig
#CONFIG_KUNIT=y
#CONFIG_KUNIT_EXAMPLE_TEST=y
#CONFIG_KUNIT_ALL_TESTS=y
#CONFIG_LIST_KUNIT_TEST=y

И запустить тестирование, но результат неизменный:

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

Прошу подсказать как работать с KUnit.

 , ,

czan
()

Jednakost - олимпиадное программирование

Форум — Development

Есть задача. Коротенько о том, что надо сделать: на вход даётся строчка A и строчка B. Пример для А: «143175», для В: «120». Нужно между символами в строчке А вставить минимальное количество знаков «+» чтобы получить В. В данном случае: 14 + 31 + 75 = 120. На выходе программа должна возвращать минимальное количество плюсов. Количество символов в А не больше 1000, значение В не больше 5000. Время работы программы должно быть меньше 1 секунды.

Пример 2: А=«5025», В=«30». 5 + 25 = 30. Минимальное количество плюсов: 1.

Пример 3: А=«999899», В=«125». 9 + 9 + 9 + 89 + 9 = 125. Минимальное количество плюсов: 4.

Я написал такую программу:

checkPluses :: Int -> Int -> Int -> String -> String -> Bool
checkPluses result pVal 0 "" xs = pVal + (read xs :: Int) == result
checkPluses result pVal plusCount "" xs =
  checkPluses result pVal plusCount [head xs] (tail xs)
checkPluses result pVal plusCount xs xs'
  | pVal > result = False
  | (length xs' < plusCount) = False
  | (checkPluses result (pVal + (read xs :: Int)) (plusCount - 1) "" xs') ==
    False = checkPluses result pVal plusCount (xs ++ [head xs']) (tail xs')
  | otherwise = True

checkPlus :: String -> String -> Int -> Bool
checkPlus xs res pluses =
  checkPluses (read res :: Int) 0 pluses "" xs

searchPlusesIter :: Int -> String -> String -> Int
searchPlusesIter pluses xs res
  | checkPlus xs res pluses == True = pluses
  | otherwise = searchPlusesIter (pluses + 1) xs res

searchPluses :: String -> String -> Int
searchPluses = searchPlusesIter 0
Пример работы программы:
λ> searchPluses "143175" "120"
2
Моя программа по сути наивно перебирает количество плюсов и смотрит на выход. Для первого примера она проверяет 1 + 43175 != 120, потом проверяет 14 + 3175 != 120, и т.д. Потом проверяет два плюса: 1 + 4 + 3175 != 120, 1+ 43 + 175 != 120, ..., 14 + 3 + 175 != 120, 14 + 31 + 75 == 120. И возвращает количество плюсов. Программа работает, но очень медленно.

Прошу идей по алгоритму.

 ,

czan
()

Китайская Народная Республика запустила спутник Shiyan-6

Форум — Talks

Почему то народ на этом ресурсе любит обсуждать Илона Маска и его ракеты и в то же время не замечают других людей работающих в сфере космоса. Тут, буквально вчера, Китайская Народная Республика запустила ещё один искусственный спутник земли Shiyan-6.

За неделю Китай успешно вывел на орбиту 2 спутника

Shiyan-6 был запущен на орбиту для изучения околоземного пространства и тестирования космического оборудования. Этот аппарат является вторым спутником этой серии. Предыдущий запуск серии Shiyan (Xinjishu Shiyan-G и Xinjishu Shiyan-H) прошел в конце мая. Цель данных аппаратов — это испытание новых технологий передачи данных и наблюдение за Землей.

Стоит отметить, что в последнее время Китай активно запускает на орбиту свои аппараты. Так, несколько дней назад, 3 июля, страна вывела на орбиту Земли спутник серии спутник Gaofen. Эти космические аппараты предназначены для сбора специальных данных, которые в будущем используются в сельском и лесном хозяйстве, а также для мониторинга окружающей среды.

Cсылка.

 , ,

czan
()

Texlive 2020. No hyphenation patterns were preloaded for `Russian`.

Форум — General

Тут случилось мне обновиться с texlive 2019 до texlive 2020 на gentoo. И приключилось вот это:

Package babel Warning: No hyphenation patterns were preloaded for
(babel)                the language `Russian' into the format.
(babel)                Please, configure your TeX system to add them and
(babel)                rebuild the format. Now I will use the patterns
(babel)                preloaded for english instead on input line 28.
Полный вывод здесь. Но пакет с поддержкой русского языка установлен:
*  dev-texlive/texlive-langcyrillic
      Latest version available: 2020
      Latest version installed: 2020
      Size of files: 3 110 KiB
      Homepage:      http://www.tug.org/texlive/
      Description:   TeXLive Cyrillic
      License:       GPL-1 GPL-2 LPPL-1.3 LPPL-1.3c MIT public-domain TeX-other-free
Пробовал снести texlive и установил заново. Ничего не поменялось. Как можно прикрутить поддержку переносов? Текст tex-файла здесь.

 , ,

czan
()

ГОСТ Р 34.11-94

Форум — Security

Пытаюсь понять алгоритм хеш-функции из ГОСТ Р 34.11-94. Текст можно посмотреть здесь: http://docs.cntd.ru/document/1200004857 . Пытаюсь разобрать пример А.3.1. Разобрался до генерации ключа К1, а вот сгенерировать ключ К2 не получается. Согласно тексту ГОСТ-а нужно XOR-ить Х1 и Х2. Мой вопрос: Что тут есть Х1 и Х2? Насколько я понимаю Х1 здесь 6E 65 6C 20 73 69 68 54, а Х2 это 3D 68 74 67 20 73 69 20. Так это или нет?

 

czan
()

Создать Rpm пакет из готовых путей

Форум — General

На учёбе дали задание сделать rpm пакет для CentOS 8 из пути. Пример: есть /usr/bin/some_app - это готовая программа. Нужно сделать из этого пути rpm пакет так, чтобы можно было установить эту программу по тому же пути. Я почитал, но везде пишут про делание rpm-ов из исходников. Прошу помощи как это сделать.

 , ,

czan
()

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