LINUX.ORG.RU

Сообщения olegd

 

Умеет ли sqlite3 работать с base64 и zip?

Форум — Development

Берётся текстовый файл, упаковывается в ZIP, содержащий ровно 1 файл, кодируется в base64, и полученный текст кладётся в базу sqlite. Требуется узнать имя и размер упакованного файла. В Sqlite такие средства предусмотрены?

Для определённости приведу скрипты на Питоне, которыми извлекаю информацию.
Сохранение всех архивов на диск для просмотра вручную:

import sqlite3, base64, zipfile, io
con = sqlite3.connect( '. . .' )
for n, body in con.execute('SELECT Id, Text FROM Table_C'):
    open( f'. . ./{n:03}.zip', 'wb').write(base64.b64decode(body))

Вывод ID, имени и размера упакованного файла.

import sqlite3, base64, zipfile, io
con = sqlite3.connect( '. . .' )
for id, body in con.execute('SELECT Id, Text FROM Table_C'):
	for e in zipfile.ZipFile(io.BytesIO(base64.b64decode(body))).infolist():
		print(id, e.filename, e.file_size)

А можно ли так сделать средствами официального CLI-клиента?

 

olegd
()

Знаете ли вы, что...

Форум — Talks

…новый Windows Server 2022 позволяет автоматически присвоить всем пользователям всех машин свойства «обязан сменить пароль при следующем входе» и одновременно «не имеет права менять пароль»?

Полдня ждали админов :)

 ,

olegd
()

«cannot open shared object file: No such file or directory»

Форум — General

В директории лежат свежесобранные бинарники – несколько библиотек и основной исполняемый файл. Когда запускаю его от имени владельца – всё нормально. Когда от другого пользователя в той же группе – получаю ошибку, что не может найти одну из библиотек. Лечится export LD_LIBRARY_PATH=. (по умолчанию LD_LIBRARY_PATH не определена).

Вопросы:
В чём проблема?
Как правильно конфигурировать систему, чтобы сваленные в одну директорию файлы работали для любого пользователя?

 

olegd
()

Можно ли смотреть Chemical table file в консоли?

Форум — Science & Engineering

Имеются файлы MOL и SDF. https://en.wikipedia.org/wiki/Chemical_table_file – текстовые форматы для описания молекулярных химических структур. Требуется по-быстрому по SSL проверить, какие в них изображены химические структуры. Конечно, можно less или cat и мысленно представить весь этот граф по списку связей. Но тяжело. А есть ли готовый инструмент, который бы это рисовал псевдографикой или даже через «-|\/»?

Пока предложили генерировать SMILES (химический аналог однострочников) пакетом OpenBabel: obabel -isdf structure.sdf -osmi - Он оказался не таким монструозным, как мне почему-то казалось.

 

olegd
()

Вопрос по SUSE

Форум — General

Понадобилось кое-что сделать под openSUSE 12.2. После нескольких часов ковыряния в интернете обнаружил, что установить сервер NFS по SSH без использования графического конфигуратора невозможно. А для применения конфигураций нужно каждый раз перезапускать систему.

Вопрос: в 15 всё так же грустно?

Перемещено xaizek из talks

P.S. Раз уж вынесли из Talks, повторю, что проблему решил ещё вчера.

 , ,

olegd
()

64 бита, WINE и ODBC

Форум — General

Требуется запустить под CentOS 7 64-битную виндовую программу, которая работает с PostgreSQL через ODBC. (Библиотека для Постгре называется psqlodbc.) Это вообще возможно?

Если действовать в лоб, в чистый дефолтный Вайн 4.0.4 поставить эту программу и psqlodbc, при обращении к Postgre выскакивает ошибка, что ODBC не установлен. Если листать документацию, всюду требуют ставить через winetricks ряд библиотек, в том числе mdac28, которая только 32-битная. Заменить Вайн на 2-архитектурный и поставить mdac28 в 32-битный префикс можно, но тогда программа, ради которой всё затевалось, вообще не запускается.

Можно ли в одном префиксе использовать и 32-битные, и 64-битные программы? Можно ли как-то заставить работать 64-разрядный ODBC? Имеет ли смысл скомпилировать более новые версии Вайна и staging?

 , ,

olegd
()

ФСТЭК и ИСП РАН приглашают искать уязвимости в ядре Linux

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

Замруководителя Федеральной службы по техническому и экспортному контролю (ФСТЭК) сообщил, что создаётся Технологический центр исследования безопасности ядра Linux, и что компании, делающие решения на базе этого ядра приглашаются участвовать в его работе.

Ранее ФСТЭК объявляла тендер на создание Технологического центра, в котором победил Институт системного программирования им. В.П. Иванникова (ИСП РАН). Планируется, что в 2022 году начнётся «опытная эксплуатация» этого центра, а в 23-м — «промышленная». Там будут работать и сотрудники ИСП РАН, и представители других разработчиков продуктов на базе Линукса. На общественных началах или «на возмездной основе». Это должно помочь делающим продукты на Линуксе обеспечить поиск уязвимостей на должном уровне, на что сейчас средства есть не у всех.

Пока участников рынка просят добровольно поучаствовать «интеллектуальным вкладом». За это обещают возможность «использовать исследования центра при сертификации своих продуктов». Доступ будет соответствовать вкладу.

Заявленная цель существования центра — устранение ошибок в исходных текстах. Потому что ведущие мировые разработчики слишком часто фокусируются на добавлении новых фич в ущерб повышению надёжности.

Директор разработчика ОС «Аврора» говорит, что уже выделили инженеров для постоянной работы «в интересах центра».

Ведущий разработчик «Базальт СПО» говорит, что российские разработчики «боятся идти на коммуникацию из-за конкуренции». Поэтому посреднику в лице центра будут больше доверять.

Начальник отдела перспективных исследований и специальных проектов Astra Linux сказал, что центр сэкономит разработчикам время и удешевит разработку. Укажет, на каких версиях ядер сосредотачиваться, поможет унификации решений.

Сотрудник ИСП РАН А. Хорошилов подчеркнул, что делать разработку закрытой и отрываться от международного сообщества не будут.

>>> Подробности на РБК

 ,

olegd
()

Логи WINE

Форум — General

Пишет ли Вайн логи куда-нибудь помимо консоли (stdout или stderr)? Виндовые программы при серьёзных ошибках могут создавать «Windows NT Events», которые потом видны в «Event Viewer». А где видно эти события в Вайне? Только в консоли, из которой запускается?

 

olegd
()

WINE и повышение привилегий

Форум — General

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

Но как объяснить такой программе, запускаемой под Вайном, что она уже имеет нужные права? Потому что у меня всё падает при попытке вывести этот диалог. Гугление по «wine elevate privileges», «wine elevate permissions» и подобному даёт только настоятельные рекомендации не запускать Вайн ни под рутом, ни под sudo. Всё правильно, но не то.

Существует ли способ обойти этот диалог?

Проблема оказалась в привязке к IE. Диалог не выводится.

 

olegd
()

Сетевой путь к заданному файлу

Форум — General

Имеется смонтированная сетевая директория. Samba или NFS. Существует ли простой как basename способ получить путь к файлу или директории в ней относительно сервера? (Помимо парсить скриптом вывод mount и сравнивать с заданным путём и $PWD.)

Пример:

$ mount | grep samba
//192.192.192.100/Data on /home/user1/samba type cifs (rw,relatime,vers=2.1,cache=strict,username= . . .
$ show_true_path ~/samba/user1/storage/
//192.192.192.100/Data/user1/storage/

Что-нибудь такое есть?

 , ,

olegd
()

Аналог «file version» из portable executable

Форум — Talks

У виндовых исполнимых файлов и библиотек в формате Portable Executable есть куча метаданных, например «file version». Существуют ли подобные записи для формата ELF?

Нашёл упоминания какого-то BuildID, но это хеш, который не позволяет по номеру оценить старшинство версий, и ссылки битые.

Кто-нибудь заморачивался хранить в исполнимом файле номер версии? Если да, можно ссылку на стандарт?

 ,

olegd
()

Неинформативное сообщение об ошибке

Форум — Talks

Пытаюсь на свежеустановленной Убунте 20.04 смонтровать виндовую шару. Получилось как здесь:

sudo mount -t cifs -o username=user //192.168.0.106/shared /home/user/point
mount: /home/user/point: cannot mount //192.168.0.106/shared read-only.

Угадайте, в чём была проблема?

Ответ: не установлен пакет cifs-utils.

 , ,

olegd
()

Перейти на открывающий или закрывающий тег

Форум — General

Пример. Редактирую XML. Или HTML. Ставлю курсор на тег <div>. Нажимаю клавишу (или комбинацию), попадаю на соответствующий ему </div>. Нажимаю другую (или даже ту же) – перехожу на соответствующий ему <div>.

Или даже лучше. Ставлю курсор между <div> и </div>, внутри которых нет других парных тегов, нажимаю и прыгаю на тег, начинающий или кончающий текущий блок.

Какие редакторы так умеют? Пока нашёл только первую половину желаемого в vim matchit по %. (И не заработало.)

 , ,

olegd
()

Что такое свёртка?

Форум — Talks

Определение свёртки через интеграл знаю. Коммутативность, ассоциативность, линейность – знаю. Что она чередуется с умножением при преобразованиях Фурье, знаю. Но чего-то для полного понимания не хватает. Что-то ускользает на грани осознания.

Как бы вы описали, что такое свёртка, и для чего она нужна, в 2-3 словах?

 

olegd
()

Интуитивный интерфейс

Форум — Talks

https://github.com/grafana/grafana/issues/14629#issuecomment-548380370

Ловушка для админов-самоучек, тренирующихся на локалхосте. При создании дэшборда в поле URL серым шрифтом вписывается адрес слушаемого сервера по умолчанию. Но если попытаться сохранить без изменений, выдаёт ошибку Bag Gateway. Все параметры верны, но ошибка, хоть ты тресни.

Решение: в это же поле нужно руками вбить этот же URL, ярко-белым шрифтом. Потому что серый текст – это только подсказка, он не считается.

P.S. Для непонявших: «интуитивный» в саркастическом смысле.

 ,

olegd
()

Какая разница между Graylog и Elastic Stack?

Форум — Talks

Чем различаются с точки зрения пользователя Graylog и Elastic Stack? Что удобнее? Что в каких случаях стоит внедрять?

 

olegd
()

Зачем нужны keystore и truststore? На примере Apache ActiveMQ.

Форум — Admin

Какая разница между keystore и truststore? Keystore хранит на сервере сертификаты и ключи, которыми сервер шифрует то, что раздаёт? А truststore хранит информацию, каким чужим сертификатам можно доверять, когда сервер заходит на другие сервера как клиент? Но с точки зрения keytool принципиальной разницы нет, формат одинаков?

В дистрибутиве Apache ActiveMQ имеется 4 таких файла: broker.ks, broker.ts, client.ks, client.ts. broker.ks используется сервером, если включены доступ по SSL к REST, веб-интерфейсу, STOMP, WebSockets и т.п.? client.ts используется клиентскими программами на Java? А для чего нужны 2 остальных? SSL/TLS предусматривает вариант, когда клиент даёт серверу свой сертификат, и тот его принимает или не принимает?

P.S. Ещё вопрос туда же. Сертификат выдан на *.domain.ru. Я делаю как в https://wavemotiondigital.com/2014/03/07/convert-your-wildcard-ssl-to-jks-java-keystore-format/:

openssl pkcs12 -export -name my.domain.ru -in ca_bundle.pem -inkey domain.ru.key -out keystore.p12
keytool -importkeystore -destkeystore broker.ks -srckeystore keystore.p12 -srcstoretype pkcs12 -alias my.domain.ru

и всё нормально работает для https://my.domain.ru. Но когда я добавляю те же сертификаты под другим алиасом:

openssl pkcs12 -export -name my.subnet.domain.ru -in ca_bundle.pem -inkey domain.ru.key -out keystore2.p12
keytool -importkeystore -destkeystore broker.ks -srckeystore keystore2.p12 -srcstoretype pkcs12 -alias my.subnet.domain.ru

на https://my.subnet.domain.ru Хром ругается. Как сделать, чтобы работало для обоих доменов?

 , , , ,

olegd
()

Расширения сертификатов

Форум — Admin

Есть ли какие-либо писанные правила, в файлах с какими расширениями распространяют сертификаты для цифровых подписей? Пока нагуглил, что для самого распространённого PEM обычно используют *.cer, *.cert, *.crt, *.ca-bundle и *.key, а для виндового PFX – *.pfx, *.p7b и *.p7s. Но всё это на уровне сложившихся практик. RFC листал, но не нашёл сведения всего воедино.

(Причина вопроса – столкнулся сегодня с проблемой, что user-friendly GUI неспособно работать с файлами, если автор не знал, что бывают такие расширения. Автор, естественно, спросил «а как правильно?»)

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

 

olegd
()

Сравнить XML

Форум — Development

Требуется написать скрипт (на внутрикорпоративном скриптовом языке) для сравнения 2 файлов данных в формате XML и вывода списка различий. Есть API для работы с XML, где есть функции GetRootElement, GetFirstChild, GetNextSibling, GetFirstChildByName, GetNextSiblingByName, GetParent, GetElementTag, GetAttributesCount, GetAttributeByName, GetAttributeByIndex и т.д.

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

Вопрос: как лучше сравнивать?

Я сделал следующее.
Для сравнения атрибутов в паре элементов:

  • перебрать все атрибуты в 1-м теге, для каждого искать совпадающие во 2-м теге;
  • перебрать все атрибуты во 2-м теге, проверить, что каждый есть в 1-м.

Для проверки равенства пары элементов из 2 файлов:

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

Для сравнения файлов:

  • взять корневые элементы и рекурсивно сравнить.

Как-то оптимизировать можно?

Ответ: Сканировать файл (обход дерева в глубину или ширину), собрать все возможные пути (xpath) в список, сортировать, сравнить. При этом атрибуты каждого узла также сортируются и добавляются в соответствующее место пути. Код сократился почти втрое.

 

olegd
()

JSON и экранирование символов

Форум — Development

При знакомстве с JSON возник вопрос: как регламентируется экранирование прямой косой черты /? Если я правильно понимаю спецификации на https://www.json.org/json-en.html, экранировать обязательно: \/. Но все примеры на том же сайте – https://json.org/example.html – не экранируют. Есть ли какое-то правило, когда экранировать, когда – нет?

 

olegd
()

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