The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Создать новую тему
 - Свернуть нити
Пометить прочитанным
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | Архив | Избранное | Мое | Новое | | |  
Форум Программирование под UNIX
ошибка в команде wget, !*! Chainikk, (Shell скрипты) 04-Мрт-24, 01:32  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Граждане дорогие. Не первый раз обращаюсь на Ваш спасительный форум)
Нынче бьюсь над командой получить научные данные.
Если просто запустить из адресной строки броузера, то данные мне выдаются:

https://lgdc.uml.edu/common/DIDBGetValues?ursiCode=AT138&cha... fromDate=2024%2F03%2F01+00%3A00%3A00&toDate=2024%2F03%2F02+05%3A00%3A00

Но нужен скрипт на shell, чтобы запускать автоматически.
Вставляю я во wget, но увы, в результате создается папка AT138202403f.txt с файлом "DIDBGetValues?ursiCode=AT138"

и файл этот вместо данных содержит назидательное содержимое:

To access this servlet use format: DIDBGetValues?ursiCode=CODE&charName=NAME&fromDate=yyyy.mm.dd%20(...)%20hh:mm:ss&toDate=yyyy.mm.dd%20(...)%20hh:mm:ss
For example: DIDBGetValues?ursiCode=DB049&charName=foF2&fromDate=2007.06.25%20(...)%2000:00:00&toDate=2007.06.26%20(...)%2000:00:00
or: DIDBGetValues?ursiCode=DB049&charName=foF2&fromDate=2007.06.25&toDate=2007.06.26

Пробовала как написано в файле, - результат такой же((

То есть что-то в грамматике запроса не то.

Может кто знает в чем дело??

(Мой запрос: wget -N -P /var/папка такая-то/AT138202403f.txt https://lgdc.uml.edu/common/DIDBGetValues?ursiCode=AT138&cha...)

Как предложить функциональность в ядро Linux, !*! Аноним, (Средства разработки) 27-Фев-24, 17:08  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Подскажите пожалуйста, куда писать с предложением функциональности в ядро Linux. Конкретно хочется добавить функционал в vfs fs/open.c. Сам наколеночный патч у меня есть и вроде всё работает, но его такой не примут в mainline и стыдно слать, сами они сделают круче - стеково или ещё как. Поэтому не берусь сам программировать, но идея интересная и хочется чтоб её реализовали.
Спасибо.
Подскажите, как в git такую разработку вести?, !*! КриоМух, (Контроль версий, Git, SVN, Bazaar, Mercurial) 26-Фев-24, 15:37  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Добрый день, Уважаемые!

Скажите пожалуйста, есть проект в git. В нём такое дерево файлов:

- index.html
- INSTANCE/
         - INST_1/
               - inst1.html
               .......
         - INST_2/
               - inst2.html
               .......

Как вести разработку условно общей части этого проекта в который не должны входить все директории в INSTANCE/, а эти директории были бы как отдельные подпроекты? Чтобы при клонировании общего проекта, не переносились бы данные всех подпроектов из INSTANCE/*, а их бы уже отдельно разворачивал что-то типа:
cd INSTANCE/
развернуть INST_1 # и в INSTANCE/ появилась бы вся поддиректория INST_1

Извините, что коряво, но как сумел объяснил :)

Сборка vhci_hcd для ядра 6.6, !*! Анон70, (C/C++) 03-Янв-24, 17:19  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Здравствуйте. Есть такой проект virtual usb dirver https://github.com/linuxbuh/vhci_hcd.
Он без проблем собирается на ядрах от 5.х до 6.1. Однако на 6.6 завершается ошибкой:
/home/arch/abs/testing/vhci-hcd/src/build/vhci-hcd/1.15/build/usb-vhci-iocifc.c:1072:10: error: ‘struct class’ has no member named ‘owner’
1072 |         .owner = THIS_MODULE,
      |          ^~~~~
In file included from ./include/linux/linkage.h:7,
                 from ./arch/x86/include/asm/cache.h:5,
                 from ./include/linux/cache.h:6,
                 from ./include/linux/time.h:5,
                 from ./include/linux/stat.h:19,
                 from ./include/linux/module.h:13:
./include/linux/export.h:29:21: error: initialization of ‘const char *’ from incompatible pointer type ‘struct module *’ [-Werror=incompatible-pointer-types]
   29 | #define THIS_MODULE (&__this_module)
      |                     ^
/home/arch/abs/testing/vhci-hcd/src/build/vhci-hcd/1.15/build/usb-vhci-iocifc.c:1072:18: note: in expansion of macro ‘THIS_MODULE’
1072 |         .owner = THIS_MODULE,
      |                  ^~~~~~~~~~~
./include/linux/export.h:29:21: note: (near initialization for ‘vhci_iocifc_class.name’)
   29 | #define THIS_MODULE (&__this_module)
      |                     ^
/home/arch/abs/testing/vhci-hcd/src/build/vhci-hcd/1.15/build/usb-vhci-iocifc.c:1072:18: note: in expansion of macro ‘THIS_MODULE’
1072 |         .owner = THIS_MODULE,
      |                  ^~~~~~~~~~~
cc1: some warnings being treated as errors
make[3]: *** [scripts/Makefile.build:243: /home/arch/abs/testing/vhci-hcd/src/build/vhci-hcd/1.15/build/usb-vhci-iocifc.o] Error 1

Вот кусок кода
static struct class vhci_iocifc_class = {
    .owner = THIS_MODULE,
    .name = driver_name
};

#define CHARDEV_NAME "usb-vhci"

static struct device vhci_iocifc_device = {
    .class = &vhci_iocifc_class,
    .release = vhci_iocifc_device_release,
#ifndef NO_DEV_INIT_NAME
    .init_name = CHARDEV_NAME,
#endif
    .driver = &vhci_iocifc_driver.driver
};

Как это исправить ?

Новогодний bash, !*! pavlinux, (Shell скрипты) 22-Дек-23, 17:47  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Дано:  Текстовая строка TEXT="Happy New Year";

Вывести на консоль используя только bash:  

1. Текст в верхнем регистре  (HAPPY NEW YEAR)
2. Текст в нижнем регистре   (happy new year)
3. Текст с инвертированным регистром (hAPPY nEW yEAR)


P.S.
Примитивная долбёжка каждого символа конечно засчитается,
но это скучно и уже есть в коде самого bash.
if  ( 0x61 < с || с < 0x7A ) ля-ля-ля...  if  ( 0x41 < с || с < 0x5A ) ля-ля-ля...  

Нужно записать видео/аудио Telegram-трансляции , !*! strannik7j, (Разное) 04-Дек-23, 02:33  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Нужно написать скрипт (желательно на python) для записи видео/аудио из telegram-трансляции.
Я пытался найти ответ в документации таких библиотек, как tgcalls, pytgcalls, ntgcalls, но то ли это пока невозможно, то ли я плохо искал. А может есть другие подходящие библиотеки.
Задача Java-кодирования: особенности манипулирования датами, !*! Программирование, (Java) 28-Ноя-23, 11:16  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
В настоящее время я работаю над проектом Java, включающим манипулирование датами, и наткнулся на неожиданную проблему в своем коде. Вот упрощенная версия проблемы:


import java.text.SimpleDateFormat;
import java.util.Date;

public class DateManipulation {

    public static void main(String[] args) {
        // Attempting date manipulation
        Date currentDate = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        String formattedDate = sdf.format(currentDate);

        // Output the formatted date
        System.out.println("Formatted Date: " + formattedDate);
    }
}

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

сборка meson 0.59 из исходников, !*! executor, (Языки программирования) 04-Окт-23, 17:22  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Кто-нибудь подскажите пожалуйста в чем у меня ошибка пытаюсь собрать meson 0.59 из исходников согласно

https://linuxfromscratch.org/lfs/view/11.0/chapter08/meson.html однако в конце система пишет что мезона нет что делать?
meson


WARNING:root:could not open file '/etc/apt/sources.list'

The program 'meson' is currently not installed. You can install it by typing:
apt install meson
/usr/share/bash-completion/completions/meson
bash: /usr/share/bash-completion/completions/meson: Permission denied

Ниже привожу листинг сборки  

sed -i "s/return 'lib32'/return 'lib'/g" /tmp/meson\-0\.59\.0/mesonbuild/mesonlib/universal.py

python3.6 /tmp/meson\-0\.59\.0/setup.py build

running build

python3.6 /tmp/meson\-0\.59\.0/setup.py install --root=dest

running install
running build
running install_data
creating dest
creating dest/usr
creating dest/usr/local
creating dest/usr/local/share
creating dest/usr/local/share/man
creating dest/usr/local/share/man/man1
copying man/meson.1 -> dest/usr/local/share/man/man1
creating dest/usr/local/share/polkit-1
creating dest/usr/local/share/polkit-1/actions
copying data/com.mesonbuild.install.policy -> dest/usr/local/share/polkit-1/actions
running install_egg_info
running egg_info
creating UNKNOWN.egg-info
writing UNKNOWN.egg-info/PKG-INFO
writing dependency_links to UNKNOWN.egg-info/dependency_links.txt
writing top-level names to UNKNOWN.egg-info/top_level.txt
writing manifest file 'UNKNOWN.egg-info/SOURCES.txt'
reading manifest file 'UNKNOWN.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no directories found matching 'test?cases'
warning: no directories found matching 'manual?tests'
warning: no files found matching '__main__.py'
writing manifest file 'UNKNOWN.egg-info/SOURCES.txt'
Copying UNKNOWN.egg-info to dest/usr/local/lib/python3.6/site-packages/UNKNOWN-0.0.0-py3.6.egg-info
running install_scripts

cd /tmp/meson\-0\.59\.0

cp -rv dest/* /


'dest/usr/local/share/man/man1/meson.1' -> '/usr/local/share/man/man1/meson.1'
'dest/usr/local/share/polkit-1' -> '/usr/local/share/polkit-1'
'dest/usr/local/share/polkit-1/actions' -> '/usr/local/share/polkit-1/actions'
'dest/usr/local/share/polkit-1/actions/com.mesonbuild.install.policy' -> '/usr/local/share/polkit-1/actions/com.mesonbuild.install.policy'
'dest/usr/local/lib/python3.6/site-packages/UNKNOWN-0.0.0-py3.6.egg-info' -> '/usr/local/lib/python3.6/site-packages/UNKNOWN-0.0.0-py3.6.egg-info'
'dest/usr/local/lib/python3.6/site-packages/UNKNOWN-0.0.0-py3.6.egg-info/SOURCES.txt' -> '/usr/local/lib/python3.6/site-packages/UNKNOWN-0.0.0-py3.6.egg-info/SOURCES.txt'
'dest/usr/local/lib/python3.6/site-packages/UNKNOWN-0.0.0-py3.6.egg-info/top_level.txt' -> '/usr/local/lib/python3.6/site-packages/UNKNOWN-0.0.0-py3.6.egg-info/top_level.txt'
'dest/usr/local/lib/python3.6/site-packages/UNKNOWN-0.0.0-py3.6.egg-info/dependency_links.txt' -> '/usr/local/lib/python3.6/site-packages/UNKNOWN-0.0.0-py3.6.egg-info/dependency_links.txt'
'dest/usr/local/lib/python3.6/site-packages/UNKNOWN-0.0.0-py3.6.egg-info/PKG-INFO' -> '/usr/local/lib/python3.6/site-packages/UNKNOWN-0.0.0-py3.6.egg-info/PKG-INFO'
install -vDm644 data/shell-completions/bash/meson /usr/share/bash-completion/completions/meson
'data/shell-completions/bash/meson' -> '/usr/share/bash-completion/completions/meson'
install -vDm644 data/shell-completions/zsh/_meson /usr/share/zsh/site-functions/_meson
install: creating directory '/usr/share/zsh/site-functions'
'data/shell-completions/zsh/_meson' -> '/usr/share/zsh/site-functions/_meson'

meson


WARNING:root:could not open file '/etc/apt/sources.list'

The program 'meson' is currently not installed. You can install it by typing:
apt install meson
/usr/share/bash-completion/completions/meson
bash: /usr/share/bash-completion/completions/meson: Permission denied

Что тут не так?

nasm, деление, !*! ivan, (Разное) 24-Сен-23, 08:42  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Добрый день.
Потребовалось выполнить деление на 1 со знаком.
mov eax, 0
mov ebx, 0
mov, ax, 0xc9
mov bl, 1
idiv bl
Получил исключение. Если вместо 8 битного операнда использовать 16 битовый
idiv bx
то все хорошо.
В чем причина? 0xc9 / 1 = 0xc9 и должно поместиться в al
Проблема при сборке Linux From Scratch, пакет Gettext-0.22, !*! vvm13, (Компиляция) 14-Сен-23, 13:35  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
/Надо отметить, что с C/C++ не работаю и с Linux'ом не очень дружен/

Итак, развлекаюсь со сборкой LFS в виртуалке с Fedora 32.
Всё шло более-менее хорошо, прошёл довольно далеко. И вдруг неожиданно и с размаху налетел на проблему.
Итак, https://www.linuxfromscratch.org/lfs/view/stable-systemd/cha...
Глава 8.32. Gettext-0.22.

Я получаю ошибку в
libtool: link:  gcc -shared  -fPIC -DPIC  -Wl,--whole-archive ./.libs/libgnu.a -Wl,--no-whole-archive  -lc  -g -O2   -Wl,-soname -Wl,libgettextpo.so.0 -Wl,-version-script -Wl,.libs/libgettextpo.ver -o .libs/libgettextpo.so.0.5.9
/usr/bin/ld:.libs/libgettextpo.ver:2: syntax error in VERSION script

Внутри libgettextpo.ver фигня:
[root@fedora .libs]# cat libgettextpo.ver
{ global:
local: *; };

Претензия, видимо, к тому, что после global: должен быть список external-зависимостей a la
{ global:
libgettextpo_version;
local: *; };
, но он пустой.

Формируется он на основе файла .libs/libgettextpo.exp:

libtool: link: /usr/bin/nm -B   ./.libs/libgnu.a | /usr/bin/sed -n -e 's/^.*[    ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[         ][      ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p' | /usr/bin/sed '/ __gnu_lto/d' | /usr/bin/sed 's/.* //' | sort | uniq > .libs/libgettextpo.exp
libtool: link: /usr/bin/grep -E -e "^([^l]|l[^i]|li[^b]|lib[^g]|libg[^e]|libge[^t]|libget[^t]|libgett[^e]|libgette[^x]|libgettex[^t]|libgettext[^p]|libgettextp[^o]|libgettextpo[^_]|libgettextpo_version).*" ".libs/libgettextpo.exp" > ".libs/libgettextpo.expT"


Первая команда даёт непустой список:

(lfs chroot) root:/sources/src/gettext-0.22/gettext-tools/libgettextpo# /usr/bin/nm -B   ./.libs/libgnu.a | /usr/bin/sed -n -e 's/^.*[    ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[         ][      ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p' | /usr/bin/sed '/ __gnu_lto/d' | /usr/bin/sed 's/.* //' | sort | uniq
libgettextpo_asnprintf
libgettextpo_printf_fetchargs
libgettextpo_printf_parse
libgettextpo_rpl_fopen
libgettextpo_vasnprintf

Но вторая его обнуляет!
libtool: link: /usr/bin/grep -E -e "^([^l]|l[^i]|li[^b]|lib[^g]|libg[^e]|libge[^t]|libget[^t]|libgett[^e]|libgette[^x]|libgettex[^t]|libgettext[^p]|libgettextp[^o]|libgettextpo[^_]|libgettextpo_version).*" ".libs/libgettextpo.exp"
даёт пустой список.

Предполагаю, что на самом деле имеется в виду вырезать всё, кроме "libgettextpo_version". Но этой строки почему-то нет.

Вот то, что я понял из происходящего. И что libgettextpo_version - это какая-то переменная в одном из C-файлов. Но что с ней не так? И ведь не сам же я писал все эти скрипты. И gcc три раза перекомпилён.

Linux + java + firebird embedded, !*! 111, (Firebird, Interbase) 13-Сен-23, 11:40  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Доброго дня, коллеги. Не знаю в какую тему писать. Уж простите.
Помогите с решением. Есть связка приложение написанное под openjdk-8 + firebird 3 embedded.
Вопрос. Это чудо совершенно спокойно работает под astra (alce-2.12.46.6-17.04.2023_15.09.iso) и под RedOS (redos-MUROM-7.3.3-20230815.0-Everything-x86_64-DVD1.iso), и вылетает с ошибкой "Unable to load library 'fbclient': Native library (linux-x86-64/libfbclient.so) not found in resource path" под ubuntu, debian, rocky. Т.е. архив с приложением и всеми конфигурациями в части firebird с "рабочей" системы переносим на "нарабочую" и получаем эту ошибку. Эксперимента ради сносилась через apt purge openjdk с астры, скачивался через apt download сам пакет openjdk, распаковывался без установки и запускалось приложение - полет нормальный. По lsof видно, что в "рабочем" варианте идет обращение к каталогу где находится libfbclient.so, в "нерабочем" - нет. Перед запуском приложения определяются переменные окружения, согласно документации на firebird
export PATH=$PATH:`pwd`/fbembed
export LD_LIBRARY_PATH=`pwd`/fbembed
export FIREBIRD=`pwd`/fbembed
Где проблема закопалась?
Чтоб не телепатить, выводы каких команд предоставить?
Заранее спасибо.

Ошибка понимания списка Python: неожиданный вывод, !*! Jeevan11, (Языки программирования) 01-Сен-23, 13:47  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Я столкнулся с неожиданным результатом при использовании понимания списка в Python. Я пытаюсь создать список квадратов значений четных чисел в заданном диапазоне, но результат не тот, который я ожидал. Вот код, который я использую:

even_numbers = [x for x in range(10) if x % 2 == 0]
squared_values = [x**2 for x in even_numbers]

print(squared_values)

Я ожидал, что результат будет [0, 4, 16, 36, 64], но вместо этого я получаю [0, 4, 16]. Кажется, что последнее четное число (8) и соответствующее ему квадратное значение (64) отсутствуют.

Может ли кто-нибудь помочь мне понять, почему это происходит и как исправить мой код понимания списка, чтобы получить желаемый результат? Есть ли что-то, что я упускаю из виду в своем подходе? Ваши идеи будут очень признательны. Спасибо!

Правка header в fasta, !*! labradorka2112, (Shell скрипты) 12-Авг-23, 12:22  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Добрый день! Вероятно, совсем простая задачка, решается многими способами, но я что-то пока не нашел подходящего.

Входные данные:
есть файл txt, в нем, в том числе, есть строки вида >NC00001 (прочее из этих строк удалено sed -r 's/xxxxx.+//' ) файл.ext
Таких строк 5572 штуки (всего строк в файле существенно больше), т.е. имеем диапазон строк указанного вида >NC00001 - >NC05572, между которыми другие строки. Количество других строк между целевыми строками вида >NC00001 рандомное, но уменьшается к концу файла.

Задача:
получить уникальные числа после константного тэга >NC, так чтобы строка вида >NC****** встечались только один раз в файле )

Условия: 1) нужно чтобы в числовой части строки присутствовало не более одной цифры 0
         2) В подстановке допустимы только цифры, не более 5-6 знаков(цифр) после >NC.
         3) Могут быть в порядке возрастания
         3) нужна проверка вхождения, т.е. что каждый из полученных идентификаторов уникален.
         4) решить на bash, можно и python

Что нашел: если вместо 0000 тупо клеить какие-нибудь числа, с учетом количества строк,очевидно, возникают повторы.
Рассматриваю sed, rev, tac, seq, grep, uniq
Из любопытного, но пока не разобрался : cut -d'' -f1|sort|uniq-c|grep -Ev'^[[:space:]]+1[[:space:]]'

Код нейронной сети, !*! BuxarNET, (Библиотеки, функции) 12-Авг-23, 04:32  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Есть ли в открытом доступе код нейронной сети?

Есть несколько проектов

1. Нужно нейронку научить русскому языку - в частности грамматике, что бы из слов могла и корни определять и речевые обороты строить и т.п.

2. Нужно нейронку научить анализировать фото и 100% разпознавать разновидность растений.

Может уже и готовые есть подобные решения с открытым кодом?

Форвардинг/проксирование TCP/UDP пакетов , !*! akahan, (Rust) 11-Авг-23, 16:44  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Привет всем. Не уверен в каком именно разделе нужно разместить, но суть в сетевом программировании. Это мой первый опыт в таком программировании, поэтому не ругайте, если что))

Я пишу связку ПО реализующую VPN на основе WireGuard с конечным выходом пакетов в интернет через удаленную программу (далее прокси) и обратно.

Общими словами, есть 3 устройства. Клиент, сервер и прокси. На сервере WireGuard интерфейс слушает на UDP порту подключения от клиентов и от прокси. Создает с ними одну сеть.

В целом, средствами обычных конфигов WireGuard это реализуется как тут https://habr.com/ru/companies/xakep/articles/699000/. Все работает. Но в своей реализации я застрял с прокси.
В статье с хабра прокси - это сервер с конфигом wg-external.conf. Там есть выполнение PostUp сркрипта с настройкой iptables, но это не нужно, так как связка работает и без этого правила.

Я пишу код на rust, реализовал сетевой стек в юзер-спейс (smoltcp). Юзерспейс - это важно. Получаю на прокси расшифрованные пакеты с сервера WireGuard. Не понимаю как мне проксировать их в интернет и отдавать обратно на сервер с последующей передачей ответов клиенту обратно.  

Я понимаю, что нужно подменять адреса получателя в IP-пакетах, но как их отправлять в интернет и потом передавать обратно в WireGuard? Нет четкого понимания - застрял. Кто понимает о чем речь укажите направление, подскажите, что нужно сделать, чтобы реализовать мою связку?

Проблема обмена данными через виртуальный USB-com порт, !*! EdiRu, (C/C++) 02-Авг-23, 17:31  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Добрый день! Жизнь заставила переходить с виндов на Linux, столкнулся с проблемой: работаю с железкой по USB через виртуальный ком-порт в Qt Creator. В консольном приложении всё идет на "ура", так же если делаю библиотеку и вызываю через консольное приложение - железка получает команды и отвечает как надо. Попытка использования оконного приложения или "даблклика" по файлу консольного приложения без запуска терминала приводит к тому, что функция read, возвращая нужное количество прочитанной информации, возвращает массив заполненный нулевыми значениями (0х00). Пробовал менять тип массива с char на wchar_t, все равно и старшие и младшие байты нули. Может кто чего подскажет? Примерная последовательность действий:

    int fd = open("/dev/ttyACM0", O_RDWR);
    if (fd < 0) { // обработка ошибок сокращена    }
    fcntl(fd, F_SETFL, 0);
    struct termios oldsettings, newsettings;
    tcgetattr(fileno(stdin), &oldsettings);
    newsettings = oldsettings;
    cfsetospeed(&newsettings, B4000000);
    cfsetispeed(&newsettings, B4000000);
    newsettings.c_lflag &= ~(PARENB|CSTOP|CSIZE);
    newsettings.c_lflag |= CS8;
    newsettings.c_cc[VMIN] = 0;
    newsettings.c_cc[VTIME] = 10;
    newsettings.c_ispeed = 12000000;
    newsettings.c_ospeed = 12000000;
    if (tcsetattr(fd, TCSANOW, &newsettings) < 0) {// обработка ошибок сокращена }

    char buf[50];
    char bufin[2048];
    tcflush(fd, TCIOFLUSH);
    int rP, crd;
// заполнение буфера сокращено, rP=длина буфера
    int cnt = write(fd, &buf, rP);
// обработка ошибок сокращена
    timeval timeout;
    timeout.tv_sec = 0;
    timeout.tv_usec = 100000;
    fd_set fs;
    FD_ZERO(&fs);
    FD_SET(fd, &fs);
    int res = select(fd+1, &fs, NULL, NULL, &timeout);
    if(res==0) {// обработка ошибок сокращена }
    else if(res<0) {// обработка ошибок сокращена }
    else if(FD_ISSET(fd, &fs))
    {
       memset(bufin, 0x00, sizeof(bufin));
       crd = 20; // устанавливаем с запасом, т.к. заранее не знаем, сколько придет
       cnt = read(fd,&bufin,crd);
// cnt = 19 - пришло сколько нужно, bufin[0] = 0x00, bufin[1] = 0x00 и т.д.

Организация boot сектора Compact Flash (Unix-like System), !*! SergeKS, (Отладка и профилирование) 31-Июл-23, 10:18  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Здравствуйте!

Промышленное оборудование управляется ПК на котором стоит операционная система реального времени (ОСРВ) VxWorks.

Жесткий диск ПК представляет собой Compact Flash (CF).

CF отказала. Купили новую. Завод производитель прислал файлы которые должны быть на этой CF но не в виде образа а в виде архива *.zip.

Простым копированием естественно ОСРВ не стартует.

Нужна геометрия CF.

Подскажите пожалуйста располагает ли кто ни будь информацией о геометрии CF для VxWorks?

Спасибо!  

Как экранировать символы гравис и $ в переменной с помощью sed, !*! Владимир, (Shell скрипты) 19-Июл-23, 11:13  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Добрый день!
есть переменная a, в  которой предполагается хранить команды shell любой сложности для последующей записи этой команды в БД. Для этого мне нужно экранировать все спецсимволы $, чтобы bash не обрабатывал конструкцию $(..), которая будет возвращать результат выполнения команды.
Я думаю решить эту задачу с помощью sed, как указано в скрипте:

#!/bin/bash
a="for personal in $(/bin/awk -F":" '{ if ( $5 ~ /Admin / && $3 > 100 ) print $1 }' /etc/passwd); do passwd -S $personal;done"
b=$(sed 's,$,\\$,g' <<< $a)
echo $b

Но результат получается не тот, который я ожидал:  
for personal in user1\$ user2\$ user3;do passwd -S ;done\$
Очевидно сработала обработка bash подстановки команды.

Если бы я в строке руками экранировал все символы $:
#!/bin/bash
a="for personal in \$(/bin/awk -F":" '{ if ( \$5 ~ /Admin / && \$3 > 100 ) print \$1 }' /etc/passwd); do passwd -S \$personal;done"
echo $a

То результат был бы правильным:
for personal in $(/bin/awk -F":" '{ if ( $5 ~ /Admin / && $3 > 100 ) print $1 }' /etc/passwd); do passwd -S $personal;done

Видимо, что-то я не так делаю в команде sed. Если есть идеи, буду очень признателен.

JAVA EE в Intellij IDEA, !*! korbnik, (Java) 26-Май-23, 16:16  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Добрый день!

Подскажите, пожалуйста, в Intellij IDEA в версии Community Edition (бесплатная версия) есть Java EE?

Или надо приобретать версию Ultimate?

Заранее спасибо. Борис.

Установка eclipse, !*! korbnik, (Java) 17-Май-23, 12:08  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Добрый день!

Подскажите, пожалуйста, как установить eclipse (под Windows, linux) без intrnet-а.
На компьютере нет Internet-а, но дистрибутив eclipse можно скачать.
Я пробовал устанавливать, выдается ошибка - недоступен ресурс.

Как сгенерировать заданный код выхода/exit code одной командой?, !*! xintrea, (Shell скрипты) 26-Апр-23, 14:53  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Мне нужно выполнить такую команду, которая бы возвратила заданный код возврата. Код возврата принимается из входного потока.

Пытаюсь сделать так:

> echo 32 | xargs exit
xargs: exit: Нет такого файла или каталога

Неожиданный сюрприз. Какого-то черта xargs не работает со встроенными командами шелла...

Как по-другому можно решить эту задачу?



Xterm Почему не каждый цветной терминальный вывод виден в Popen, !*! xintrea, (Python) 25-Апр-23, 17:14  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Имеется процесс xterm, который "вставлен" в Tk-окно:

class Terminal(tk.Frame):

    def __init__(self, parent):
        ...
        # Получение tty с которым будет работать терминал (грубый хак)
        os.system('xterm -into %d -geometry 160x50 -sb -e "tty > /tmp/ttyinfo.txt"' % self.wid)
        fp=open('/tmp/ttyinfo.txt', 'r')
        self.tty=fp.readline().strip();
        fp.close();
        print("tty info: "+self.tty)

        # Открытие терминала с bash. Перед запуском bash выводится рабочий tty
        os.system('xterm -into '+str(self.wid)+' -geometry 160x50 -sb -e "tty ; bash -norc" &')


Выполнение команд в этом xterm-терминале сделано двумя способами:

* Через os.system().
* Через Popen+communicate.

Для теста я использую две команды, которые генерируют цветной вывод:


1. ip -color addr
2. ansible-playbook ourPlaybook.yml

И вот какая проблема проявилась:

* Способ запуска через os.system() всегда работает правильно. Для обеих команд вывод в xterm цветной.
* Способ запуска через Popen+communicate() правильно работает только для "ip -color addr". Но для Ansible почему-то генерируется монохромный вывод.

А нужно чтобы и через Popen+communicate() правильно генерировался цветной вывод в терминал для любой команды. Потому что только этим способом можно получить stdOut + stdErr + errCode. Ведь в os.system доступен только код возврата.

Для демонстрации я сделал минимальный пример. Функции запуска выглядят так:


    # Выполнение команды в терминале - вариант 1
    def doCommand1(self, text) :
        cmdLine="(%s) <%s >%s 2> %s" % (text, self.tty, self.tty, self.tty)
        result=os.system(cmdLine)
        ...
        return result

    # Выполнение команды в терминале - вариант 2
    def doCommand2(self, text) :
        cmdLine="%s" % (text)
        resultTriada=command.run(cmdLine)
        log.echo("* Результат: "   +resultTriada[0])
        log.echo("* Вывод ошибок: "+resultTriada[1])
        log.echo("* Код возврата: "+str(resultTriada[2]))
        ...
        # Возвращается кортеж из stdOut, stdErr, errCode
        return resultTriada


Во втором случае используется метод с вызовом Popen+communicate():

class Command():

  # Запуск внешней программы
  def run(self, cmd):
    p=Popen(cmd, stdout=PIPE, shell=True)
    stdOutData, stdErrData = p.communicate()
    errCode=p.returncode

    outData=""
    errData=""

    if not stdOutData is None :
      outData=stdOutData.decode()

    if not stdErrData is None :
      errData=stdErrData.decode()

    # Убирается последний перенос строк, чтобы в конце небыло пустой строки
    outData=re.sub("\n$", '', outData)
    errData=re.sub("\n$", '', errData)

    return(outData, errData, errCode)


В примере сделано 4 кнопки (то есть, со всеми возможными вариантами):

- IP адрес (os.system)
- IP адрес (Popen)
- Ansible (os.system)
- Ansible (Popen)

Первые три генерируют цветной вывод, а четвертая - монохромный.

Так вот, надо добиться, чтобы и вариант на 4-й кнопке, обязательно делал цветной вывод.

Ссылка на пример: https://files.fm/u/ex9nfywf2

Скриншот: https://i.ibb.co/FKZQYkt/screenshot-2023-04-25-15-45-51.png
(На нем видна часть цветного вывода 3-й кнопки, и монохромный вывод 4-й кнопки).

bash скрипт для поиска, !*! Tribal, (Shell скрипты) 17-Апр-23, 11:05  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Доброго времени суток, уважаемые! я тут новенький да и в программировании не спец.
Есть задача:
В текстовом фале есть некая база, в которой данные отсортированы по годам.
требуется разбить этот фал на отдельные - содержащие только один год
Я так понимаю нужно сделать скрипт, который бы искал первое совпадение по году, запоминал номер строки, далее искал первое совпадение со следующим годом, потом копировал текст между этими двумя строками в новый файл и так далее по нарастающей до конца.
Помогите реализовать это в коде...


Tk+xterm. Терминал xterm не выводит результат работы программы, !*! xintrea, (Python) 12-Апр-23, 09:46  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Имеется два примера на библиотеке Tkinter, в которых в Tk-рамку вставлен xterm. Когда примеры стартуют, в этом xterm показывается имя файла устройства tty, который првязан к данному xterm.


Первый пример работает правильно. Он имеет дополнительное поле ввода, в которое ручками нужно ввести тот же tty, который виден в xterm, и в этот самый xterm отправляются команды. И, само собой, команды в xterm выполняются, и в xterm виден результат их работы.

Второй пример работает неправильно. Дополнительного поля в нем нет, вместо этого значение tty запоминается в переменную. Все остальное ровно то же самое. И почему-то команды не отправляются в xterm, а результат их работы виден в консоли, в которой запущен python-скрипт.

Нужно, чтобы второй пример заработал правильно.

Отличия скриптов: https://i.ibb.co/HCSS70T/Screenshot-20230411-145913.png


Первый скрипт (работает правильно):


#!/usr/bin/python3

from tkinter import *
import os
import subprocess


def send_entry_to_terminal(*args):
    # *args needed since callback may be called from no arg (button)
    # or one arg (entry)

    command=commandEntry.get()
    tty="/dev/pts/%s" % tty_index.get()

    print('Command: '+command)
    print('tty: '+tty)

    os.system("%s <%s >%s 2> %s" % (command, tty, tty, tty))


root = Tk()

termFrame = Frame(root, height=700, width=1000)
termFrame.pack(fill=BOTH, expand=YES)
wid = termFrame.winfo_id()
print("Terminal window id: "+str(wid))

panelFrame=Frame(root)

Label(panelFrame, text="Command:").pack(side=LEFT)
commandEntry = Entry(panelFrame)
commandEntry.insert(0, "ls -l")
commandEntry.pack(side=LEFT,fill=X,expand=1)
commandEntry.bind("<Return>", send_entry_to_terminal)

buttonSend = Button(panelFrame, text="Send", command=send_entry_to_terminal)
buttonSend.pack(side=LEFT)

Label(panelFrame,text="/dev/pts/").pack(side=LEFT)
tty_index = Entry(panelFrame, width=3)
tty_index.insert(0, "1")
tty_index.pack(side=LEFT)

panelFrame.pack(fill=X, expand=1)

os.system('xterm -into %d -geometry 160x50 -sb -e "tty > /tmp/pyguitty.txt"' % wid)
fp=open('/tmp/pyguitty.txt', 'r')
ttyDevice=fp.readline();
fp.close();
print("tty info: "+ttyDevice)

os.system('xterm -into %d -geometry 160x50 -sb -e "tty; sh" &' % wid)

root.mainloop()

Второй скрипт (работает неправильно):


#!/usr/bin/python3

from tkinter import *
import os
import subprocess

ttyDevice=""


def send_entry_to_terminal(*args):
    # *args needed since callback may be called from no arg (button)
    # or one arg (entry)

    command=commandEntry.get()
    tty=ttyDevice

    print('Command: '+command)
    print('tty: '+tty)

    os.system("%s <%s >%s 2> %s" % (command, tty, tty, tty))


root = Tk()

termFrame = Frame(root, height=700, width=1000)
termFrame.pack(fill=BOTH, expand=YES)
wid = termFrame.winfo_id()
print("Terminal window id: "+str(wid))

panelFrame=Frame(root)

Label(panelFrame, text="Command:").pack(side=LEFT)
commandEntry = Entry(panelFrame)
commandEntry.insert(0, "ls -l")
commandEntry.pack(side=LEFT,fill=X,expand=1)
commandEntry.bind("<Return>", send_entry_to_terminal)

buttonSend = Button(panelFrame, text="Send", command=send_entry_to_terminal)
buttonSend.pack(side=LEFT)

panelFrame.pack(fill=X, expand=1)

os.system('xterm -into %d -geometry 160x50 -sb -e "tty > /tmp/pyguitty.txt"' % wid)
fp=open('/tmp/pyguitty.txt', 'r')
ttyDevice=fp.readline();
fp.close();
print("tty info: "+ttyDevice)

os.system('xterm -into %d -geometry 160x50 -sb -e "tty; sh" &' % wid)

root.mainloop()

Консольный вывод первого скрипта (ничего лишнего, вывод списка файлов остался в xterm):


$ ./guiterminal_correct.py
Terminal window id: 85983236
tty info: /dev/pts/42

Command: ls -l
tty: /dev/pts/42

Консольный вывод второго скрипта (виден список файлов, который должен был бы показываться в xterm):


$ ./guiterminal_incorrect.py
Terminal window id: 12163482
tty info: /dev/pts/43

Command: ls -l
tty: /dev/pts/43

итого 20
-rwxr-xr-x 1 xintrea Domain Users 1353 апр 11 14:25 guiterminal_correct.py
-rwxr-xr-x 1 xintrea Domain Users 1203 апр 11 14:25 guiterminal_incorrect.py


Tkinter - не пойму в какой момент виджет был размещен в окне, !*! xintrea, (Tcl/Tk) 06-Апр-23, 13:39  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
В нижеприведенном коде есть создание переменной app. Она является экземпляром класса Example, который в свою очередь является расширением от класса Frame.

Так вот, я не пойму в какой момент эта переменная привязывается к окну root, чтобы работать внутри него. Никакой связи между root и app я не наблюдаю. Но тем не менее пример работает.

Как это происходит? Сам код:


from tkinter import Tk, Frame, Checkbutton
from tkinter import BooleanVar, BOTH

class Example(Frame):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.master.title("Флажки")
        self.pack(fill=BOTH, expand=True)
        self.var = BooleanVar()

        cb = Checkbutton(self, text="Показать заголовок", variable=self.var, command=self.onClick)
        cb.select()
        cb.place(x=50, y=50)

    def onClick(self):
        if self.var.get():
            self.master.title("Флажки")
        else:
            self.master.title("")


def main():
    root = Tk()
    root.geometry("250x150+300+300")
    app = Example()
    root.mainloop()


if __name__ == '__main__':
    main()

Посоветуйте мультиформатный пакетировщик!, !*! Гарло дАо, (Разное) 25-Мрт-23, 00:30  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
На что посмотреть для мультиформатного опакечивания в Deb/Rpm/SFX-Tar и др.?

Своё написано. Осталось неудовлетворённым чувство прекрасного. Перед следующим заходом хочется попользоваться написанным другими.

На что посмотреть, что попробовать? Чтобы похожее на: даю цель install для make, а оно в ответ собирает, в chroot, и отдаёт собранное в пакетах разных форматов.


wget без sudo, !*! iPony129412, (Shell скрипты) 28-Фев-23, 08:27  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
А как?

sudo wget -O /etc/apt/sources.list.d/viva64.list https://files.pvs-studio.com/etc/viva64.list

Как это через паплайн сделать нормально, чтобы файл записывался с sudo, а не весь wget?

Или я слишком параноик итак сойдёт?

QtCreator (9.0.1 Debian) debugging helpers don't work, !*! A.Stahl, (C/C++) 01-Фев-23, 10:38  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
I didn't pay attention so no idea when it broke, but now I don't see a human-readable variant of std::containers while debugging. Now I see something like this: https://imgur.com/a/QHim0PI

I tinkered a bit around, tried a repository version too (keeping an old config and without it). I was in the Edit->Preferences->Debugger. Played with different combinations of parameters. It feels like nothing has changed though...

Now I use the version from the net-installer. How should I enable the "debugging helpers"?

Нужные слова для яндекса, !*! ddp, (C/C++) 15-Янв-23, 01:01  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Я подскажите какими словами искать нужную IDE (и как там это называется) или плагин для vimа когда счелкаешь на заголовочный файл стандартной библиотек в своем говнокоде, а редактор открывает этот файл, так вот счелкаешь опять, но по функции стандартной библиотеки или по своей функции (в любеом месть говнокода), а оно переходит в место или открывает файл, где эта функция определяется. Как это называется, где есть, что искать не заню слов, как собака, все понимаю, а сказать не могу.
По поводу статической линковки sqlite3, !*! GOrilla, (C/C++) 06-Янв-23, 13:10  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
http://www.tinyware.ru/garbage/sqlite3-3.34.1.tar.gz
Debian 11 x86_64.
Пакет не отлаживал, почти по debian/rules.
 
Пометить прочитанным Создать тему
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | Архив | Избранное | Мое | Новое | | |



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру