LINUX.ORG.RU

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

Синтвейва тред

Форум — Talks

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

https://youtu.be/eQqGKPVOQv8?list=PL9e7gmwejeGqo1h9Wf-PLxzuQSfEWF0ji

https://www.youtube.com/watch?v=HGzZ4SjFOLI

https://www.youtube.com/watch?v=RYtVf0wvPpc

https://www.youtube.com/watch?v=qFfybn_W8Ak

 ,

Deleted
()

Major Linux Problems on the Desktop, 2018 edition

Форум — Talks

Вышла новая редакция простыни, почему Linux не готов для десктопа: https://itvision.altervista.org/why.linux.is.not.ready.for.the.desktop.curren...
Список проблем был написан автором ещё в 2012 году перед уходом на macos, и с тех пор большая часть пунктов не потеряла актуальности.
TLDR:

  • NVIDIA Optimus и ATI dynamic GPU не работают из коробки;
  • С NVIDIA всё совсем плохо, а тиринг есть у всех;
  • Нет подавления эха в микрофоне из коробки, как в windows/mac;
  • В ядре постоянно что нибудь ломают;
  • В X.org куча старых багов и проблем, висящих десятилетиями;
  • В Wayland невозможен эффективный RDP, а также полная вакханалия между тулкитами;
  • ШГ ещё актуально, но тут есть подвижки;
  • Коммерческого софта нет, как и условий для его рождения;
  • LTS дистрибутивы непригодны для использования, т.к. не поддерживают актуальное железо;
  • Ошибки в systemd, графических и аудио драйверах накрывают всю систему целиком, тогда как винда уже научилась перезагружать их бесшовно;
  • Разработчики ядра любят замалчивать новости об уязвимостях, и в 2017 году в одном только ядре было найдено 453 уязвимости против 286 во всем стеке Windows 10;
  • Большинство дистрибутивов не проводят аудит кода пакетов, поэтому ничто не мешает включить туда бэкдор;

 ,

snizovtsev
()

Развитие моего конфига i3

Галерея — Скриншоты

Раз тут такое спонтанное выкладывание i3, то я тоже выложу своё.

Это - постепенное развитие моего конфига, который был сделан «по вашим советам» (NixOS + i3 + KDE (по вашим советам))

Основные внешние изменения - добавлены konversation с конфигом, цветовая тема okular, «цветовая тема» firefox ( LOR habr github ).

Ещё я попробовал попользовать XMonad, особого профита для себя не увидел. Вместо этого просто научился использовать табы в i3.

Внутри я добавил плагинов emacs для своего комфорта, растащил конфиг по отдельным файлам, дописал плагинов для albert, перешёл на rclone с gdrive-ocamlfuse.

Конфиг: https://github.com/balsoft/nixos-config/

ПО

  • NixOS+home-manager
  • i3
  • polybar

На этом скрине

  • emacs

Вообще

  • firefox
  • albert
  • dolphin
  • konsole + zsh
  • kdenlive
  • trojita, telegram-desktop, vk-messenger, konveration
  • VirtualBox для виртуалок с «нормальными» дистрами

Скрины того, чем я занимаюсь

  • Основной скрин: допиливание скриптов polybar
  • учёба

>>> Просмотр (1920x1080, 277 Kb)

 albert, , , ,

balsoft
()

Кто-нибудь приворачивал к своему гитхабу Zulip?

Форум — Talks

https://zulipchat.com/

Хочу понять, каковы шансы, что проект не загнется.

Иногда надо куда-то деть юзеров из основного трекера, чтобы не мешали своей бытовухой разработчикам. Есть всякие форумы, gitter и т.п. Но gitter слишком «плоский» по структуре для толстых проектов, а форумы надо хостить и администрить.

Ссылку на Zulip сегодня увидел впервые. Выглядит от конечно странновато, но идея забавная. Кто-нибудь уже успел покататься?

 ,

Vit
()

Хочу всеядный класс исключений, который не порождает сам исключения :)

Форум — Development

Вопрос про хорошие пользовательские классы исключений в Си++.

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

Это конечно не какой-нибудь дамп многострочный, который наверное должен создаваться не через e.what() а через что-то специальное. Но хотелось бы чтобы в исключение можно было напихать как минимум char*, string, и любые другие от bool до double нативные типы. Потому что кажется что это было бы очень удобно с точки зрения использования:

throw SomeException() << "blabla " << "index " << i << " array_size" << arr.size() и т.п.

Ну и вот теперь вопрос - кто-нибудь такое делал, и как вы это сделали?

Это достаточно легко сделать средствами STL, берём std::string, берем std::to_string() и ура, если для числовых типов обернуть шаблоном, то вероятно потребовался бы один метод на все случаи :)

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

try{
  throw SomeException();
} catch (const SomeException &e) {
  //можем сюда не попасть.
}

Да, да, чтобы такого не было можно закостылить внутри методов иключения, в которых может породиться другое исключение свой try-catch - но это как-то не эстетично, и наверерное нагрузочно на стек вызовов, а хочется чего-то легкого, что имело бы больше шансов на удачное создание, жизнь и уничтожение, когда осталось мало ресурсов на стеке программы, в куче и тому подобном...

Вопросы

Можно ли придумать что-то более лучшее чем:

1. std::string или динамически расширяемый char * заменить исключительно на char * константной длинны (массив) и в случае захода за длинну просто не заполнять его дальше, а конец массива сделать многоточием - что будет обозначать что это не весь текст исключения.

2. Взамен to_string напрашивается что-то из std::sprintf(buf, «%ld», value) - https://ru.cppreference.com/w/cpp/io/c/fprintf но к сожалению не знаю/не_помню и по ссылке не нашел, что будет если в buf не хватит размера для преобразования числа в строку?

3. И немного глупый вопрос про низкий уровень: если в коде есть строка

A << val1 << val2 << val3 << val4
то как тратится программный стек на это дело?

Правильно что хоть сколько в ряд таких операторов записать то стек не потратится больше чем на размещения вызываемого метода + входящей в него переменной?

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

А вот это грубо говоря просто пошагово должно быть: A << val1 << val2 << val3 << val4 это тоже самое что int a=0; a+=f(); a+=f(); a+=f(); т.е. хоть «беcконечность» таких a+=f(3); сделай - это не покрошит программу, т.к. не переполнит программный стек (ну разве что, безопасно для рантайма,переполнит тип int).

 

bober
()

а вот кому проект в портфолио?

Форум — Development

частенько тут (особенно при студенческих обострениях) возникают треды «куда приложить силы», «на чём практиковаться», «посоветуйте тему»..

Чтобы помочь страдальцам предлагаю публиковать тут ссылки на действительно интересные/полезные/любопытные проекты с GitHub,SF и прочих которые заброшены, но крайне неплохи. И просто-таки просят чтобы их продолжили и развили.

---

Собственно мысль возникла от факта сгинувшей mathomatic (https://en.wikipedia.org/wiki/Mathomatic , https://github.com/mfillpot/mathomatic) - true CAS для консольки :-)

 , diplom, ,

MKuznetsov
()

Вышел Buildbot 2.0.0

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

Два дня назад вышла версия 2.0.0 Buildbot — свободной системы непрерывной интеграции.

Основные особенности Buildbot:

  • архитектура, состоящая build master и произвольного количества workers;
  • большая гибкость в настройке билдов за счет использования Python для их описания;
  • наличие Web UI;
  • оповещения в email, IRC, web-статус;
  • поддержка таких систем контроля версий, как Git, Mercurial, Bazaar, SVN, CVS, Darcs, Perforce, Monotone, Repo и BitKeeper.

Buildbot используется такими крупными проектами, как Python, LLVM и Flathub.

В этом релизе добавлена поддержка UTF-8 в идентификаторах, удалена поддержка Python 2.7 из build master, исправлены ошибки и удалены deprecated API.

>>> Сайт проекта

>>> Релиз

 ,

euZ3meep
()

Покерный калькулятор эквити PokerCalc by Safocl

Форум — Development

решил я создать общую тему.
создаю кроссплатформенный покерный калькулятор эквити для безлимитного Holdem на си++17, сравнимый с simple postflop, CardRunners EV и подобным, только опенсорсный под лицензией GPLv3.

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

пока что пишу саму библиотеку для калькулятора.
на данный момент из вычислений реализован перебор бордов.
сам проект на ветке с STL
имеется ветка с использованием qt5 либы, тут будет задействовано максимум из qt5.

прошу советовать, что и как можно будет улучшить, предлагайте свое видение подобного проекта)))

 , , ,

safocl
()

Qt и видеопамять

Форум — Development

Привет, лор, есть вопрос знатокам qt. Когда я создаю и рисую QLabel, выделяется сколько-то видеопамяти. Вопрос: освобождается ли эта память, когда я вызываю QLabel::hide()?

Я хотел проверить создать кучу лейбелов, hide() их, и при во время всего этого наблюдать за vram'ом. Но vram у меня от интела и мониторить его не получается.

 

Deleted
()

C++ codestyle: когда использовать `struct`

Форум — Development

Касательно code style. Не холивара (struct vs class) ради.

Веду парочку pet-проектов, придерживаюсь одинакового code style в них. Причем, сам code style в процессе разработки изменяется (как я считаю нужным). Сейчас вот задумался над такими пунктами:

  1. struct keyword should be used for types which do not have access specifiers (i.e. all members are public)
  2. struct keyword can also be used for data straightforward objects that provide merely getters and setters
  3. Implicit private section of class should not be used. I.e. the private access specifier should be used explicitly

А почему создал данную тему – я не уверен что написать в ‘‘rationale’’ для данных правил. Т.е. выгдядит, как вкусовщина.

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

 , ,

KennyMinigun
()

А давайте создадим возможность переписываться безопасно!

Форум — Development

Я не особо не шарю в тонкостях GUI, но может подключится тот кто знает. Итак в продолжение темы: GUI не стандартная задача

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

Делается так:

Создается GUI окно, которое выглядит таким образом:

+-----header-------+
+------------------+
|                  |
|                  |
|        A         |
|                  |
|                  |
|                  |
+------------------+
|        B         |
*------------------+

За header окно можно перемещать по экрану как угодно, поле А полупрозрачное, поле B - это стандартный Input для ввода текста, точка обозначенная * нужна для того, чтобы навести это окно на существующий мессенджер чтобы программа понимала куда вводить модифицированный текст.

Работает таким образом: Наводим окно на мессенджер, вводим в поле B любой текст. Текст шифруется RSA, переводится в Base64, кодируется в QrCode в виде ASCII-графики в таком виде:

█████████████████████████████
█████████████████████████████
████ ▄▄▄▄▄ ███▄▄██ ▄▄▄▄▄ ████
████ █   █ █ ▀▄  █ █   █ ████
████ █▄▄▄█ █ ▄█▄ █ █▄▄▄█ ████
████▄▄▄▄▄▄▄█ █▄▀ █▄▄▄▄▄▄▄████
████ ▀▄ ▄ ▄██▄▀█ █▄ ▄  █▀████
████▄▀▄█ ▄▄▄▄█ ▄█▄█▀   ▄█████
█████▄██▄█▄▄ ▀▄ ▀ ▀█▄▄█ ▀████
████ ▄▄▄▄▄ █▀▀ ▀ ▀ ▄█▀ ▄█████
████ █   █ █  ▄█ ██ █ ▀▄█████
████ █▄▄▄█ █▄ ▄▄█▄█▀ █ ██████
████▄▄▄▄▄▄▄█▄▄█▄█▄██▄█▄▄█████
█████████████████████████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀

И как простое сообщение постится в мессенджер. Теперь область А, за счет того, что она полупрозрачная видит этот QrCode, сама область «скриншотится» раз в секунду, в полученной картинке распознается QrCode, достается из него RSA, расшифровывается и в полупрозрачном окне поверх этой картинки распечатывается расшифрованный текст, чтобы выглядело примерно так: http://oi67.tinypic.com/2yljmfl.jpg

С помощью такого решения можно использовать любые каналы связи для удобного шифрования сообщений с помощью RSA

Предлагаю собраться программистам с ЛОРа, определиться с ЯП и реализовать этот проект.

 ,

buggycoder
()

Редакторы Markdown и заметок — результаты моего исследования

Форум — Talks

Разыскивая для себя редактор заметок и редактор Markdown я обращал внимание на наличие следующих нужных мне функций:

  • импорт заметок из TXT, а лучше — непосредственно работа с заметками в TXT-формате;
  • поддержка формул LaTeX в Markdown, в том числе с кирилицей;
  • корректно работающий синхронный просмотр Markdown (как вариант приемлем WYSIWYG, если он хорошо работает, но это не лучший вариант);
  • возможность рисования с помощью рукописного ввода (для ноутбука, где экран совмещен с графическим планшетом);
  • достаточно контрастный и в то же время не вырвиглазный дизайн (в идеале — системный GTK, или а-ля SAL_USE_VCLPLUGIN=gen libreoffice, или а-ля QT5 в TexMaker);
  • скорость, легкость работы, отзывчивость (программы, базирующиеся на таких штуках, как Electron, в этом смысле сильно отстают от программ, написанных на чистом C или даже на Python);
  • возможность синхронизации с другими устройствами (можно через Dropbox);
  • теги и поиск.

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

Мне хотелось бы отметить лучшие программы, которые я нашел:

  • веб-редактор Markdown с поддержкой формул UPMATH — только редактор с синхронным просмотром, доступен сразу по ссылке, ничего лишнего;
  • лидеры в категории «редактор Markdown с формулами»: VNotesЪ, Typora (WYSIWYG; не очень шустрый);
  • лидеры в категории «менеджер и редактор заметок / персональная Wiki»: QOwnNotes, Makagiga, Markdown Explorer, Zim.

Стоит обратить особое внимание на первые две программы из последнего пункта. Помимо собственно заметок, они имеют очень большую функциональность: например, списки ToDo. Программа Makagiga, на мой взгляд, могла бы вообще стать основой для десктопа будущегоЪ, бучи объединена или связана с файловым менеджером и браузером, с некоторыми доработками.

Вы слышали о многих других программах, которые могли бы рассматриваться в этих категориях? (Из последних новостей на LOR: Cherrytree? MyTetra?) Скорее всего, вас обманули: они не юзабильны и / или сильно отстают от вышеназванных. И, скорее всего, я их смотрел.

Прошлые темы
[markdown] Гениальное — простоЪ (февраль 2017)

Примечания
Ъ - Ъ-friendly ссылка

 ,

nightingale
()

Видео докладов с C++ CoreHard Autumn 2018

Форум — Development

На канале сообщества CoreHard появились видеозаписи докладов с прошедшей в начале ноября в Минске конференции C++ CoreHard Autumn 2018.

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

Text Formatting For a Future Range-Based Standard Library - Arno Schödl
Concurrency and Parallelism in C++17 and C++20/23 - Rainer Grimm
Что должен знать каждый C++ программист или Как проводить собеседование - Игорь Садченко и Ко
Информационная безопасность и разработка ПО - Евгений Рыжков
Что не умеет оптимизировать компилятор - Александр Зайцев
Метаклассы: воплощаем мечты в реальность - Сергей Садовников
Asynchronous programming with ranges - Ivan Čukić
Обучаем на Python, применяем на C++ - Павел Филонов
Создание пакетов для открытых библиотек через conan.io - Константин Ивлев
Полезный constexpr - Антон Полухин
Кодогенерация C++ кроссплатформенно. Продолжение - Алексей Ткаченко
Обработка списков на C++ в функциональном стиле - Вадим Винник
Заглядываем под капот «Поясов по C++» - Илья Шишков
Ускорение сборки C++ проектов, способы и последствия - Александр Жоров
C++ CoreHard Autumn 2018. Знай свое «железо»: иерархия памяти - Александр Титов
Actors vs CSP vs Tasks vs ... - Евгений Охотников
Debug C++ Without Running - Anastasia Kazakova

Слайды докладов можно найти здесь

 

eao197
()

IPFS 0.4.18

Новости — Интернет
Группа Интернет

Состоялся релиз go-ipfs (эталонной реализации IPFS, написанной на языке Go) версии 0.4.18. Вероятно, это самый значительный релиз в недавней истории; на его подготовку ушло 3 месяца. Со времени предыдущей новости об IPFS на LOR прошло уже более четырёх лет.

IPFS (InterPlanetary File System) — это гипермедийный протокол и распределённая файловая система, созданная с использованием идей, реализованных в Git и BitTorrent, и нацеленная на то, чтобы заменить или дополнить существующий Web. IPFS похож на BitTorrent Swarm, ноды которого обмениваются объектами Git-репозитория. IPFS основан на идее адресации по содержимому — один и тот же блок данных всегда будет иметь один и тот же адрес, вне зависимости от его физического расположения. В отличие от BitTorrent, данные разбиваются на блоки по границе файла, таким образом один и тот же файл может быть переиспользован в разных каталогах без необходимости повторного выделения места на диске. В отличие от Freenet и Perfect Dark, ноды хранят только те данные, которые они явно запросили. IPFS способен интегрироваться с существующими системами разрешения имён — с классическим DNS в настоящее время, с Tor .onion, Namecoin .bit и возможно, некоторыми другими в будущем.

Особенности этого релиза:

Титульные особенности этого релиза — экспериментальная поддержка QUIC, новый алгоритм маршрутизации pubsub-сообщений, возможность подписывания pubsub-сообщений, а также переписанная команда ipfs p2p. Однако всё это лишь вершина айсберга.

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

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

>>> Каталог приложений, созданных на основе IPFS

>>> Дополнение для интеграции IPFS в веб-браузеры

>>> Подробности и полный список изменений

 , , ,

anonymous
()

MindForger 1.48

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

MindForger – это инструмент для редактирования и хранения идей, заметок, планов и любых текстов в формате Markdown. MindForger – это нечто большее, чем просто блокнот – это редактор, который работает как человеческий мозг: накапливает знания, распознаёт их, создаёт ассоциации и гибкие связи между ними и, наконец, позволяет их забывать.

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

>>> Подробности (сайт с описанием и скриншотами)

 , ,

env
()

Как организовать систему плагинов?

Форум — Development

Как для своей программы организовать возможность расширяться плагинами?

 

buggycoder
()

Развесить объявление на кафедрах профильных ИТ ВУЗов

Форум — Talks

Уважаемый многоликий ЛОР. Может кто-то имеет возможность распечатать и вывесить в профильном ИТ ВУЗе, у кафедры, на которой учат программировать, следующее объявление для студентов о возможности повысить свои умения в С++ путем кодинга в OpenSource проект LibreOffice:

https://yadi.sk/i/AmG5iFGALtDoTg

В общем и целом распространение данного объявления везде, где только можно, также приветствуется.

Заранее спасибо всем не равнодушным

 , , ,

Kompilainenn
()

Как правильно обрабатывать ошибки в Python?

Форум — Development

Всем привет. Задумался - а как правильно обрабатывать ошибки в Python? Допустим мне нужно запустить в модуле module функцию run, и так неколько раз где-то в коде, она может выдать множество разных исключений - каждый раз надоест отлавливать. И на каждое исключение мне нужно как-то изменить действия программы. Я придумал такой способ - в самой функции run отлавливаются ошибки, а результат она возвращает в таком виде

answer = {'completed': True, 'exception': None}

и ещё какие-нибудь значения. И в итоге всего я просто ловлю вывод от функции, его разбираю, и умещается это всё в несколько строк, и в принципе удобно. А теперь вопрос - как правильно это делать, может есть какой-то более удобный способ? Всем спасибо.

 ,

mahalaka
()

[java][?] работа с исключениями

Форум — Development

Есть некоторый метод, который обрабатывает xml. При обработке могут вылезти c десяток разных исключений (IOException, SAXException, DOMException и другие). Как их лучше обработать?
- Выпустить все наружу, указав в секции throws метода?
- Ловить все исключения, заносить в лог и «тихо» выходить из метода через return?
- Ловить все исключения и выпускать наружу только как, например, общее IOException с комментарием в параметре конструкторе?
- Другой способ?

Заодно, подскажите, пожалуйста, проект на java, по которому можно было бы подсмотреть стиль кодирования.

заранее спасибо!

 

bik
()

Обработка сишных ошибок в C++

Форум — Development

Как принято работать с кодами ошибок C API в C++?
У меня есть такой код, но по нему несколько вопросов

//R — тип результата функции которая может вернуть ошибку
template<typename R>
class is_minus_one{
public:
  bool operator()(const R& val){
    return val == -1;
  }
};

//FailPolicy — функтор для проверки является ли результат выполнения функции ошибкой
template<template<class> typename FailPolicy>
class ExceptionWrapper{
public:
  template<typename R, typename... ArgsT>
  static auto wrap(R (*func)(ArgsT...)){
    return [func](ArgsT... args){
      FailPolicy<R> isFail;
      R res = func(args...);
      if(!isFail(res))
	return res;
      else {
	throw std::system_error(errno, std::system_category());
      }
    };
  }
};
using std_ex = ExceptionWrapper<is_minus_one>;
#define EX_WRAP(func) const static auto ex_##func = std_ex::wrap(func)

//Использование
EX_WRAP(epoll_create1);
EX_WRAP(close);
EX_WRAP(epoll_wait);
EX_WRAP(epoll_ctl);

  • Как избежать копирования аргументов?
  • Как сделать, чтобы такие обертки работали для функций с переменным количеством аргументов (fcntl, ioctl)?
  • Каковы накладные расходы использования исключений вместо кодов ошибок?
  • Правильно ли я понимаю, что при ошибке в POSIX всегда возвращается именно -1?
  • Есть ли смысл переписать код, заменив шаблоны на макросы?
  • Файл с обертками нужно будет подключать во все места где они используются. Может ли это стать причиной медленной компиляции, и как с этим бороться?

Наверняка есть более адекватные способы для обработки кодов ошибок в C++, но нагуглить их сходу не удается.

 ,

userd
()