LINUX.ORG.RU

Избранные сообщения d_a

Халявные книжки от Springer

Форум — General

«Налетай-торопись, покупай живопись»!

Издательство Springer выложило более 400 книг в бесплатный доступ. Список книг лежит вот здесь (в xslx-файле): https://drive.google.com/drive/folders/1fD1csbKVIdfKvzLoLbIjnryae1u995YQ

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

 , ,

Beewek
()

Где делать универсальную сборку

Форум — Development

Привет, ЛОР.

Приходилось сталкиваться с мнением, что наилучший способ получить универсальный бинарник под линуксом — это собирать проект под в меру стареньким дистрибутивом и соответственно, со стареньким glibc.

Какой дистрибутив для этого лучше взять в 2023 году? Debian Oldstable (который сейчас Buster) подойдёт?

 ,

hobbit
()

C++ Как собрать самостоятельный пакет?

Форум — Development

Часто бывает, что скомпилировав бихарник на c++ в linux arch, юзеры не могут его запустить на какой-нибудь юбунте, так как им нужна новая версия libc и докачать ещё всяких зависимостей… Короч, как собрать прогу чтобы у всех пошло? Может стоит слинковать всё в один бинарь или сделать какой-то пакет для установки в специальном формате? А если распространять через исходники, то зависимости тоже хранить с кодом? Используется git и система сборки SCons, под виндой все зависимости собраны в .dll и коды выкачаны в папку thirdparty, под линуксом зависимости скачаны в виде dev пакетов через pacman и мне всегда приходится писать инструкцию чтобы юзеры качали себе такие же зависимости самостоятельно.

Компиляторы: clang/mingw/gcc
Зависимости: openmp, openal, c++20, glfw3

 , ,

HPW-dev
()

Мне не нужен LOGGING & DEBUGGING

Форум — Desktop

Просто почитайте этот пост как маленький рассказ, покритикуйте, предложите лучшие решения и было бы круто узнать что-то новое. Я всё делал на AlmaLinux 8.5.

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

Если ты, дорогой линуксоид, ещё не интересовался этой проблемой, то я тебе скажу вот что: интернет полон историй, где у людей подобная отчётность программ съедала сотни гигабайт совершенно бесполезными текстами.

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

Начну с эпичного ~/.xsession-errors. Этот наверное чемпион по поглощению дискового пространства. Поскольку я гномосек, то мне он никогда не мешал особо, ибо gdm как-то хитро и аккуратно с ним работает и он не наполняется лишней информацией (кроме того, если его удалить пару раз, то он больше не появляется, магия…). Но вот тут поковырялся в кедах и обнаружил, что этот самый файл растёт как на дрожжах, а растёт потому, что всё, что программы выхлопывают в stderr пишется в него, и это какой-то звиздец, товарищи.

(Сразу скажу, что если ты не знаешь, как выключить какой-нибудь лог и лень разбираться, то обычно проканает сделать ссылку в /dev/null, типа ln -s /dev/null ~/.xsession-errors, а ещё делают более жёстко: cp -a /dev/null /var/log/долбанный.log, есть и другие варианты, но думаю хватит и этих)

А фишка с этим файлом в том, что «добрые люди» поместили скрипт в Xsession (дело было с sddm):

# redirect errors to a file in user's home directory if we can
if [ -z "$GDMSESSION" ]; then
    # GDM redirect output itself in a smarter fashion
    errfile="$HOME/.xsession-errors"
    if ( umask 077 && cp /dev/null "$errfile" 2> /dev/null ); then
        chmod 600 "$errfile"
        [ -x /sbin/restorecon ] && /sbin/restorecon $errfile
        exec > "$errfile" 2>&1
    else
        errfile=$(mktemp -q /tmp/xses-$USER.XXXXXX)
        if [ $? -eq 0 ]; then
            exec > "$errfile" 2>&1
        fi
    fi
fi

Я его закомментировал и на этом конец :-)

Вообще полезно бывает открыть терминал на всю длину экрана, запустить там journalctl -f и помониторить, что у тебя да как. И вот тут, пользуясь случаем, хочу высказать свой огромный респект кедерастам. Да, они зачем-то по умолчанию врубают дебаггинг своего окружения на полную и это будет видно в журнале, но он отключается. Можно в /etc/environment или ~/.bash_profile написать QT_LOGGING_RULES='*=false' и на это всё закончится, красавчики, чё.

А вот гномосеки и gtk-шники вертели тебя на ***, хоть обгуглись — решения нет, все эти мерзкие ворнинги и прочий хлам видимо так и будут засирать наши терминалы до второго пришествия. Если хочешь чистый терминал, то либо пиши после каждой gtk-шной софтины 2>/dev/null, либо мути с альясами и функциями в ~/.bashrc. А как быть с журналом не понятно, пока не придумал. Подскажите что-нибудь.

Ещё раз, пользуясь случаем, хочу высказать респект и уважуху разрабам хромых браузеров, они хотя бы о терминале позаботились (пиши --log-level=3 и будет счастье), а вот журнал спасти не удастся.

Поговорим теперь про coredump-ы. Серьёзно, кто-нибудь из домашних юзеров вообще это читал или посылал куда-нибудь?! А они работают! Благо, это всё отключается, однако тоже не без некоторой фигни. Кароче, чтобы выключить надо в /etc/systemd/coredump.conf прописать:

Storage=none
ProcessSizeMax=0

Только вот, как я понял, сам процесс создания этих штук не прекратится, хоть они и не будут ничего нигде занимать. Да, там в манах пишут как это решить, но сам ты, простой домашний юзверь, зуб даю, хрен найдёшь. Я натнулся на просторах интернетов на самого Лёню Потного, где он всё и объяснил. Прямо скажем, решение выглядит как говно:

sudo ln -s /dev/null /etc/sysctl.d/50-coredump.conf

Ты не поверишь, но именно это предлагается в манах.

Пришло время поговорить о каталоге /var/log… На мой миопический взгляд, это ещё один эпический трындец. Загляни туда, бро, это же какая-то вакханалия логов, и мне что-то подсказывает, что ты, домашний пользователь, читать их никогда не будешь. Ладно-ладно, знаю, бывает надо, но фишка в том, что почти всё это тупо дублирует systemd-journald, который сам хранит свои логи, производит над ними ротацию и всё такое, а здесь идет дублирование демоном rsyslog, который туда складывает логи, а другой демон — logrotate — производит над ними ротацию.

Что касается программ rsyslog и logrotate (последняя может пригодится, если хочешь какой-то лог хранить и иметь ротацию), решай сам, я вот просто взял да и удалил, и программы и все логи из /var/log, чтобы тупо посмотреть, что осталось (об этом, когда про dnf).

Надо ли хранить на диске наш православный системдешный журнал? Мне вот не надо, всё что было до этой загрузки системы, мне не интересно. Можно просто выделить ему немного памяти и всё — пока система работает, лог есть, выключил, лога нет. Надо написать в /etc/systemd/journald.conf

Storage=volatile
RuntimeMaxUse=16M

16 мегов вроде хватает.

На закуску про DNF. Это ещё один товаришь в стиле GTK & GNOME, типа нам так удобнее, а вы идите лесом. Так вот, после разгрома дирректории /var/log, там осталась небольшая кучка логов, в общем безобидные и мелкие, но среди них четыре засранца:

dnf.log
dnf.rpm.log
dnf.librepo.log
hawkey.log

Про эти логи тоже в интернетах не мало историй. Да, их можно обрабатывать вышеназванной программой logrotate, но мне это не надо, я их не читаю ни-ког-да! Эти логи продуцирует DNF и на багзилле шляпы есть чудный интеллигентный срачик с разрабами, которые всё сводят к тому, что логи пусть пишутся, мы по ним помогаем людям, а то что их отключить нельзя, это мол dnf так стремительно разрабатывается, что походу некогда (видимо у разрабов GTK дела обстоят также) :-)

Кароче, решения нет, только кувалдой, то есть в /dev/null.

 

papin-aziat
()

Посоветуйте книгу по python для «заканчивающих»

Форум — Development

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

Повторять то что и так всем известно для меня смысла уже нет, как и просто «руководство по программированию» для меня тоже бессмысленно, а вот что-нибудь эдакое, например про работу с ast, внутреннее устройство и тд и тп я бы почитал. Есть что-то такое?

В результате:

Anthony Shaw - CPython Internals: Your Guide to the Python 3 Interpreter
Dive into Python
docs.python-guide.org/
Effective Python
Fluent Python, Luciano Ramalho(«Python. К вершинам мастерства»)
oreilly.com/library/view/python-beyond-the/9781771373609/
realpython.com/
Лутц - дотошное скучно чтиво, не советую.
Effective Computation in Physics

 

e7z0x1
()

Эталонный hello world проект на Расте

Форум — Talks

не могу не поделиться с глубокоуважаемым лоровским коммюнити

https://github.com/mTvare6/hello-world.rs

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

 ,

Harald
()

Что посоветуете почитать по Python, чтобы подтянуть теорию?

Форум — General

Сабж
Нужно именно как и почему оно работает, чем отличается <похожаяфича_нейм_1> от <похожаяфича_нейм_2>, немного про внутреннее устройство и подобное.

 ,

Qwentor
()

4pda забанили

Форум — Talks

Пока по ип забанили, но такими темпами могут и домен отжать.

 

voltmod
()

Распространение либ для C++

Форум — Development

Возможно, что задам очень глупый вопрос. А в 2020 году есть шансы распространять закрытые либы для C++ в объектных файлах + необходимые хедеры для одной узкопрофессиональной ниши? Там C++ так-то используют во всю. Кто-то сейчас распространяет так либы?

Привязка к версии компилятора и к оси, в принципе, будет норм. Это не массовый продукт. Больше для R&D разных компаний и академии с уклоном в науку и производство. Может быть, вообще, нафиг никому не нужно будет)

 

dave
()

Проблема с функциями в динамической библиотеке .so

Форум — Development

Столкнулся с такой проблемой при использовании динамической либы в Си. Допустим в библиотеке используется функция

uint16_t crc16_ccitt (const void *p, size_t size);

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

Если вдруг в приложении, где будет использоваться эта библиотека, есть функция с таким же именем, то из библиотеки вызывается именно эта пользовательская реализация… конкретно это я заметил исключительно потому, что у пользователя эта функция была объявлена как

uint16_t crc16_ccitt (size_t size, const void *p);

то есть параметры были поменяны местами и когда библиотека пыталась ее вызвать, приложение падало в segmentation fault.

Есть ли какой-то способ избежать таких эффектов и изолировать функции библиотеки от пользовательских функций с таким же именем, возможно, некоторая опция gcc?

Если нет, то как такую проблему решают в крупных проектах?

Библиотека собирается с такими опциями:

-fPIC -c -std=c11 -fplan9-extensions -Wall -Wno-unused-parameter -Wno-unused-variable -Wno-unused-function -Wno-format-zero-length

 , ,

id_thx1138
()

Запилите мне дверь!

Форум — Talks

Здравствуйте, это канал про аниме?

Мне в квартиру надо вставить четыре дверные коробки, и оказалось что нет ни одного знакомого дверного мастера. Может у кого-нибудь есть контакт в СПб?

Без дверей я не могу закончить ремонт, а значит и купить комп с линуксом.

 

morse
()

Conan, пакетные менеджеры в С++

Форум — Development

Хотелось бы узнать мнение по поводу conan.

Есть ли смысл обмазываться пакетами с помощью conan'a? Какие подводные камни? В conan'e привлекает удобство, но интересно как обстоят дела на самом деле.

Если я правильно нагуглил там совсем мало пакетов. Допустим google-test не нашел.

Часто ли появляются новые пакеты? Мб есть альтернативы круче?

 ,

penetrator3000
()

Книга «Software-Defined Radio for Engineers» опубликована в свободный доступ

Новости — Документация
Книга «Software-Defined Radio for Engineers» опубликована в свободный доступ
Группа Документация

«Software-Defined Radio for Engineers» (2018) — это книга-учебник на английском языке о программно-определяемых радиосистемах (англ. сокр. SDR).

Software-Defined Radio for Engineers, by Travis F. Collins,
Robin Getz, Di Pu, and Alexander M. Wyglinski, 2018,
ISBN-13: 978-1-63081-457-1.
Данная книга опубликована в свободном доступе на сайте Analog Devices, Inc., откуда её можно скачать одним файлом или же разделы по отдельности. Также можно приобрести печатную версию книги.

( СОДЕРЖАНИЕ КНИГИ... )

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

>>> Официальный сайт

>>> Скачать книгу (PDF)

>>> Скачать образовательные материалы (GitHub)

>>> Обсуждение на HN

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

 , , , ,

atsym
()

Покупка акций

Форум — Talks

До покупки биткоинов я не созрел, но скажем 100 тыс. р на интервале в год на акции я готов потратить. На сколько это осмысленно? Казалось бы что может случиться с акциями газпрома или сбербанка? Или, например, Nvidia?

 

Evgueni
()

Многпоточность c++

Форум — Development

Собственно решил осилить сабж но в инете мало инфы(или я не умею пользоваться гуглом).Посоветуйте какие-нить книги на тему. Желательно с примерами и упражнениями.

 ,

wild_blood
()

А ты уже используешь dnscrypt или и дальше сливаешь всем посещаемые домены?

Форум — General

https://dnscrypt.org/ https://github.com/opendns/dnscrypt-proxy

Под винду, бзды и макось тоже есть.

В чём суть: данное ПО использует ЭЦП и шифрование при передаче/приёме DNS-запросов/ответов. Использование dnscrypt позволяет как обезопаситься от MitM-атак (многие провайдеры, например, перенаправляют ВЕСЬ DNS-трафик на свои DNS-сервера), от лишнего сбора статистики со стороны провайдера/админа/гэбни (кому хочется, чтобы в его личном деле фигурировали всякие mylittlepony-gay-pron.com), от проблем с кривыми локальными DNS-серверами (нет поддержки IPv6, глючат и т.д.).

Лично я у себя сделал так: поднял у себя на роутере dnscrypt как dns-сервер, завернул на него ВЕСЬ dns-трафик, запретил все входящие и исходящие пакеты на 53 UDP/TCP порты на внешнем интерфейсе: теперь нешифрованный DNS точно не пройдёт.

Из особенностей: нужно компилять, нужно выбрать, каким dnscrypt-сервером будете пользоваться. https://github.com/jedisct1/dnscrypt-proxy/blob/master/dnscrypt-resolvers.csv

Может быть крайне полезно в случае использования HTTPS, т.к. из-за SNI до открытия криптоку.

https://www.opendns.com/about/innovations/dnscrypt/ Чем это лучше dnssec? dnssec нужен для безопасности от подмены, но не от прослушки. Суть dnssec, чтобы никто посередине не подставил другой IP в запрошенную А-запись, а также отпечаток SSH-ключа в DNS-запись не поставил свой.

Кстати, слив DNS-запросов при использовании VPN из-за настроенного по DHCP/ранее локального DNS-сервера - стандартная практика.

Пример запуска: dnscrypt-proxy --ephemeral-keys --daemonize --local-address=192.168.0.1:53 --resolver-name=dnscrypt.eu-dk

 , , , ,

kerenkonin
()

Modern C++ vs шаблонные метапрограммисты

Форум — Development

Вот вам пример нормального современного C++, который, кстати, скоро может войти в состав SDK для оффтопа: github.com/kennykerr/modern

Вот вам пример, как библиотечные возможности STL и boost помогают отказаться от большинства паттернов GoF и тем самым избежать мусорных типов, таких как IXxxListener, IXxxObserver и т.д и т.п: accu.org/content/conf2013/Tobias_Darm_Effective_GoF_Patterns.pdf

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

Глядя же на большинство статей по С++11 и C++14, начинает уже тошнить от мета-программирования, супершаблонов с мегавариадиками, гипердеклтайпов с невероятно компильтаймовым вычислением абсолютно ненужных вещей (которые в 99% программ вообще незачем считать в компильтайме).

Почему так?

 

quiet_readonly
()

Как пишут безопасные проги?

Форум — Development

Доброго времени суток!

Господа, а как пишутся безопасные проги? В смысле: с одной стороны, есть всякие техники типа управления памятью, права доступа и пр., но с другой-то стороны - находят же ж как-то уязвимости нулевого дня.

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

Или еще иначе можно спросить - как находят уязвимости нулевого дня? Наверное, извращенным должно быть мышление тестера.

 ,

aido
()

Не форкнутый ядерный драйвер EXFAT с поддержкой Linux 2.6, 3 и 4

Форум — Development

Итак, если не считать Embedded-реализации Tuxera и Paragon - существует две реализации файловой системы exfat для Linux:

  1. FUSE (не ядерная)
  2. Samsung:

Форк монтирует с правильными правами, в то время как оригинальный Самсунговский не-форк что-то мудрит с Windows ACL. Выбор очевиден - форк! Но вот лично мне кажется, что раз форк патчили-перепатчили энтузиасты, внося туда новые возможности, то он (по моим субъективным ощущениям) может работать нестабильно. Однако я не могу привести ни одного доказательства и скорее всего вру. :-)

Пример использования не-форка:

$ tar xf exfat-1.2.19.tar.gz
$ cd exfat-1.2.19
$ make
$ su
Пароль:
# mkdir /lib/modules/`uname -r`/kernel/fs/exfat
# cp *.ko /lib/modules/`uname -r`/kernel/fs/exfat
# depmod -a
# modprobe exfat_core
# modprobe exfat_fs
# mkdir /mnt/exfat
# mount -t exfat /dev/sdb1 -o rw,uid=1000,gid=1000,dmask=0002,fmask=0003 /mnt/exfat
# exit
$

Правило HAL /etc/hal/fdi/policy/10-exfat.fdi
// Помогите создать правило udev, хотя udisks2 в моём Debian 8 монтирует с UID, поэтому наверно не надо

<?xml version="1.0" encoding="UTF-8"?>
<deviceinfo version="0.2">
   <device>
       <match key="volume.fstype" string="exfat">
           <match key="@block.storage_device:storage.hotpluggable" bool="true">
               <merge key="volume.fstype" type="string">exfat</merge>
               <merge key="volume.policy.mount_filesystem" type="string">exfat</merge>

               <append key="volume.mount.valid_options" type="strlist">dmask=</append>
               <append key="volume.mount.valid_options" type="strlist">fmask=</append>
               <append key="volume.mount.valid_options" type="strlist">silent</append>
               <append key="volume.mount.valid_options" type="strlist">uid=</append>
               <append key="volume.mount.valid_options" type="strlist">gid=</append>
               <append key="volume.mount.valid_options" type="strlist">allow_other</append>

               <merge key="volume.policy.mount_option.dmask=0002" type="bool">true</merge>
               <merge key="volume.policy.mount_option.fmask=0003" type="bool">true</merge>
               <merge key="volume.policy.mount_option.uid=1000" type="bool">true</merge>
               <merge key="volume.policy.mount_option.gid=1000" type="bool">true</merge>
               <merge key="volume.policy.mount_option.allow_other" type="bool">true</merge>
               <merge key="volume.policy.mount_option.silent" type="bool">true</merge>

           </match>
       </match>
   </device>
</deviceinfo>

 ,

ZenitharChampion
()

systemd: запустить после того, как поднялась сеть

Форум — Admin

Есть юнит для демона автоматического обновления динамического DNS. Написал в нём: After=network-online.target, однако, сразу при старте системы он не может подключиться к серверам провайдера динамического DNS, хотя при следующей попытке всё получается. Что я сделал не так?

 ,

Norong
()