LINUX.ORG.RU

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

Ноты

Форум — Development

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

Есть нота. Частота 440 Гц. Как сделать .wav, который состоит только из этой ноты?

Я знаю ноты мелодии. Как сделать .wav, который состоит из этих нот?

Есть .wav с мелодией. Из каких нот он состоит?

 

Cameyoc
()

Архитектура веб сервисов/приложений

Форум — Development

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

Начал смотреть книги, и заметил одну странность: как-то подозрительно мало книг по концептуальным вещам (архитектура, протоколы, форматы), а в основном «Сделаем что-то в чем-то/с чем-то», где «чем-то» - конкретный фреймворк или ЯП, как будто кроме практики и конкретных инструментов ничего не существует.

Нашел вот такую книгу 2003г.: http://bedford-computing.co.uk/learning/wp-content/uploads/2016/07/Web-Application-Architecture-Principles-Protocols-and-Practices.pdf

Что скажете? Устаревший хлам?

 ,

seiken
()

Что менее монструозное в 2020 как библиотека: Qt или GTK для C++ разработки чисто под linux?

Форум — Development

Есть старый C++ GUI сделанный в 2012. Собирался под win и linux. Поддерживать win надоело, сам её не юзаю, да и мастдай уже произошёл. Qt была выбрана по совету знакомых как супермегапростая штука. Хотя юзал из всего набора минимум - окна, кнопки и иконки.

Глядя на сегодняшний мир всяких убунт, мы видим что GTK как-то более распространён (или так только кажется)? Никакого Qt в базовых интерфейсах, никаких KDE и прочего говнища.

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

Так чё, на GTK всё переписать, чтобы быть в тренде и меньше гимора в дальнейшем? К тому же, никогда не нравились всякие эти ненативные приблуды в Qt вроде MOC или как там его. Хочется что-то ламоповое без cmake, минималистичное, быстрое, современное и самое трендовое. Поддержики всякого JS-кода в интерфейсах, звука, воспроизведения видосов не требуется (есть вывод звука, но там на ALSA всё руками сделано по-пацански).

 

igloev
()

Выбор по Тьюрингу

Форум — Talks

Посоветуйте что почитать похожее на книгу Гарри Гаррисона «Выбор по Тьюрингу». Так чтоб про ИИ и scy-fi. Желательно, с научной базой как в сабже, а не просто злой ИИ убивает человеков.

 , ,

cocucka
()

Выделение слова под курсором в Emacs

Форум — General

Заметил, что часто приходится выделять слова стоящие под курсором, используя evil-mode, применяю комбинацию (evil-inner-word) viw/viW, но в случае когда встречаются скобки, одинарные кавычки вплотную прилегающие к слову они выделяются также, что не очень удобно.

Например, если расположить курсор на слове bounds-of-thing-at-point-mod и попытаться выделить ‘viW’,

 (funcall (get thing 'bounds-of-thing-at-point-mod))

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

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

В инете нашел:

(defun mark-whole-word (&optional arg allow-extend)
  "Like `mark-word', but selects whole words and skips over whitespace.
If you use a negative prefix arg then select words backward.
Otherwise select them forward.

If cursor starts in the middle of word then select that whole word.

If there is whitespace between the initial cursor position and the
first word (in the selection direction), it is skipped (not selected).

If the command is repeated or the mark is active, select the next NUM
words, where NUM is the numeric prefix argument.  (Negative NUM
selects backward.)"
  (interactive "P\np")
  (let ((num  (prefix-numeric-value arg)))
    (unless (eq last-command this-command)
      (if (natnump num)
          (skip-syntax-forward "\\s-")
        (skip-syntax-backward "\\s-")))
    (unless (or (eq last-command this-command)
                (if (natnump num)
                    (looking-at "\\b")
                  (looking-back "\\b")))
      (if (natnump num)
          (left-word)
        (right-word)))
    (mark-word arg allow-extend)))

выделяет только в право, при повторном использовании команды. Не понятно, как работают skip-syntax-(forward|backward) и looking-(at|back).

Пробовал использовать evil-select-inner-object, но понял, что в этом мало смысла, слишком связано (с evil) все, проще написать с нуля, но опыта не хватает.

 

lintiay
()

Emacs 27.1

Новости — GNU's Not Unix
Группа GNU's Not Unix

Свершилось, братие и сестрие!

Долгожданный (кроме шуток - процесс релиза настолько затянулся что про это начали хохмить даже сами разработчики в рассылке emacs-devel) релиз системы исполнения emacs-lisp, реализующей редактор текста, файловый менеджер, почтовый клиент, систему установки пакетов и множество различных функций.

В данном выпуске:

  • встроенная поддержка чисел целых чисел произвольного размера (в Emacs встроен великолепный калькулятор с поддержкой RPN и алгебраических вычислений)
  • встроенная поддержка JSON
  • для рендеринга шрифтов теперь используется библиотека HarfBuzz
  • добавлена поддержка табов
  • работа с изображениями без использования ImageMagick
  • Lexical-binding используется по-умолчанию (если вы не писали на Lisp данный пункт можно смело игнорировать)
  • поддержка дополнительного конфига для ранней инициализации (это может быть интересно пользователям spacemacs)
  • поддержка спецификаций XDG на размещение файлов в домашней директории (наконец-то!)

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

Ценители архи-боянов приглашаются в комментарии - делать ставки кто первый «пошутит» про отсутствие в GNU/Emacs текстового редактора: когда ещё доведётся услышать шутку, которая старше большинства посетителей ЛОРа?

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

 , , ,

zabbal
()

https://invidio.us/ умерло, что теперь вместо него?

Форум — Talks

Ну должно же что-то появиться, как libgen.is вроде умерало. Есть что-то?

 

dissident
()

Максимально допустимый размер массива на стеке?

Форум — Development

Есть некая функция которая использует временный массив. Если массив маленький, хочется создавать его на стеке (что бы не дергать менеджер памяти), если большой приходится делать его в куче (иначе сегфолт). Я че то не пойму, как построить правильный критерий выбора того или иного варианта?

Какой то вот такой кривой пример кода:

int Nmax = 1024; // максимально возможный размер буфера на стеке
void func(){
  int N = ...;
  T p_buf[(N<=Nmax)*N];
  T* p = p_buf; if(N>Nmax) p = new T[N];
  ...
  if(N>Nmax) delete [] p;
}

 

AntonI
()

Бинарный формат для обмена данными между c++-библиотекой и python-кодом?

Форум — Development

Ищу header-only библиотеку для бинарного-формата, поддерживающего хранение многомерных массивов, скляров и строк которые можно писать/читать из c++ и читать/писать из numpy-массивов. Оценочный размер файлов от единиц-мегабайт, до десятков гигабайт — поэтому, нужна воможность считав заголовок файла, найти нужные смещения, а данные грузить уже по необходимости. Что для этого лучше использовать? Подходит-ли для моих задач hdf5?

 , , ,

thunar
()

Реализация std::async в gcc до сих пор не умеет в пулы потоков?

Форум — Development

Смотрел в gcc-9: не умеет. В 10-ке уже научилась? Тем временем, в MS VC++ и QtConcurrent это 100 лет как. Заодно вопрос: а что с этим у шланга и icc?

 , ,

next_time
()

C++ — сила, а вы не верили

Форум — Talks

Опытный разработчик игр проясняет смузихлебам за С++, линукс и emacs.

Для Ъ: аватар поставил хипсторов на место

P.S. на 02:00:00 самое интересное. Он рекомендует Croco.

Таймкоды в первом комментарии на ютубе.

 , , ,

BceM_IIpuBeT
()

Docker на BTRFS - Как правильно делать снапшоты?

Форум — General

Добрый день! Помогите, пожалуйста, разобраться в вопросе. Есть домашний сервер на Ubuntu 18.04, которая установлена на программный RAID, созданный средствами BTRFS. На сервере установлен nginx, который работает как web-proxy и несколько web-приложений, nextcloud через snap, zoneminder, piwigo, onlyoffice document sererver через docker. Есть задача делать снапшоты всей системы. Как я понял, docker создает множество сабвольюмов в var/lib/docker/btrfs/subvolumes. При монтировании /dev/sdb1, на котором установлена система, в /mnt вижу только сабвольюм @, в котором находится корень. При команде btrfs subvolume list / вижу его и дюжину сабволюмов docker. Вопрос в следующем, при снапшоте всего корневого раздела, делается ли бекап данных docker? Надо ли останавливать контейнеры при снапшоте? На другом сервере с примерно аналогичной конструкцией при откате на старый снапшот, увы, контейнеры docker не заработали. Заранее большое спасибо!

 , , ,

nikhsipe
()

Matrix/Riot с шифрованием личных сообщений по умолчанию

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

Компания New Vector, сотрудники которой также возглавляют некоммерческую организацию протокола Matrix, объявила о выпуске ряда Matrix-клиентов семейства Riot.

Matrix — это свободный протокол для реализации федеративной сети, построенной на основе линейной истории событий (events) внутри ациклического графа (DAG). Основной реализацией этого протокола является мессенджер с поддержкой сигналирования VoIP, но возможны и другие вещи, так как это протокол общего назначения.

Главным изменением выпущенных клиентов для браузера и Electron-обёртки (1.6.0), Android (0.19.0) и iOS (0.11.1-0.11.2) стало включение сквозного шифрования для личных диалогов по умолчанию. Шифрование возможно благодаря протоколу Olm, основанному на протоколе мессенджера Signal. Шифрование групповых диалогов использует расширение протокола под названием Megolm, которое позволяет дешифровать сообщение множество раз.

Впервые опциональное шифрование было представлено в 2016 году. Включение по умолчанию в экспериментальных сборках произошло во время FOSDEM 2020.

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

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

В будущем планируется включение шифрования по умолчанию не только для личных диалогов, но и для непубличных комнат вообще, включая групповые.

Также упоминается:

Поиск по зашифрованным комнатам уже доступен с помощью Firefox-расширения Radical.

Для облегчения работы с ключами шифрования, разработчики протокола Matrix представили механизм под названием «перекрёстного подтверждения» (cross-signing). Он позволяет, используя уже подтверждённое устройство, автоматически верифицировать другие устройства пользователя. При работе этого механизма двум собеседникам нужно верифицировать свои устройства только единоразово, а не каждое устройство по отдельности. Спецификацию механизма можно прочитать на GitHub.

Помимо Riot шифрование поддерживают и другие клиенты: FluffyChat, nheko Reborn, клиенты на libQuotient (WIP), клиенты на mautrix-go (gomuks), клиенты на matrix-nio (Mirage и WeeChat), Seaglass (заброшен). В разработке другие реализации. Для клиентов без поддержки шифрования предлагается демон для E2EE-прокси — pantalaimon.

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

 , , , ,

commagray
()

Flutter

Форум — Talks

На днях поковырялся с замечательным SDK для кроссплатформенной мобильной разработки – Flutter.

И мне даже понравилось! Раньше смотрел косо на всю кроссплатформу.

  • Реально очень низкий порог входа. Путь к первому приложению лёгок и приятен.
  • Всё работает быстро и красиво, UI по поведению максимально похож на нейтивный и только очень зоркий глаз заметит различия. Писать какой-то жирный UI на флаттере комфортнее, чем в нейтиве.
  • Сам по себе графический движок очень производительный, можно писать вещи на вроде таких.
  • Крутой тулинг, онлайн-применение изменений и прочие клёвые штуки, которые пришли из мира веб-разработки.
  • Никакого javascript и html5.

    Но минусы конечно тоже есть.

  • Если требуются тонкости какие-нибудь, то хорошо представлять как это работает под капотом на нейтивных рельсах.
  • После kotlin, на котором пишу большую часть времени, dart выглядит приветом из забытого прошлого. Какие-то фичи клёвые, но многих привычных вещей не хватает.
  • Локализация довольно запутанная, по сравнению с iOS/Android. Без локализации в современном мире никуда.
  • Очень много скобочек из-за стиля самого flutter. Как бы ты не разбивал код, их всё равно много.

    Одним словом, если есть желание попробовать мобильную разработку, но нейтив внушает ужас, то flutter – отличный вариант для начала.

    Что думает местный коллектив? Кто-нибудь пробовал?

 , ,

mono
()

Интервью с Кеном Томпсоном

Форум — Talks

Если кто-то еще не видел:

https://www.youtube.com/watch?v=EY6q5dv_B-o

Керниган берет интервью у Томпсона, 2019г.

Томпсон рассказывает о том, как хаотично и ради прикола появлялся UNIX, C, пайпы, этот ваш UNIX-way, и в общем, основы всей этой срамоты, которую мы имеем сегодня.

Из интересного - история про то, как Ботвинник пригласил его в СССР, и какой былинный провал из этого вышел.

 ,

seiken
()

ETL, помогите с выбором очереди разобраться

Форум — Development

https://www.etlcpp.com/home.html

Стандартная задача на мелких эмбедах - из прерываний стугать сообщения, чтобы их потом уже в main loop разгребали по мере возможности (но без фатальных залипов). Многозадачку тащить не хочется.

Естественно, у каждой очереди на концах по одному отправителю и получателю, чтобы не искать приключений. Вместо «collision resolution» => «collision avoidance», ценой небольшого резервирования памяти (на «щели» в очереди). Объясните пожалуйста на примере stm32:

  • в какой момент с queue начнутся проблемы, и понадобится заморачиваться с более серьезными блокировками?
    • На M0-M4 для пересылки структур обычная очередь проканает, или там тоже out of order на запись в память лезет?
  • зачем надо было городить queue_spsc_locked, которому надо просовывать блокировщики, если queue_spsc_atomiс вроде и так работает?

PS. Достаточно чтобы работало с gcc/llvm.

 , ,

Vit
()

Как посчитать кол-во байт в массиве

Форум — General

Здравствуйте.

Предположим есть массив…

uint8_t buf[] = {0x01,0x06,0x00,0x07,0x00,0x08};

Как посчитать количество байт в этом массиве. strlen() не подходит так как есть нули.

Может вопрос простой, но что-то я не соображу как это сделать?

 

stD
()

разбивка толстого шаблонного класса на несколько хидеров?

Форум — Development

Сабж. Вот есть толстый шаблонный класс, у него внутри еще пяток классов (они нужны для деталей реализации), часть скрыта часть открыта. Все это сейчас занимает 800 строк, работать… неприятно.

Как бы это Ъ растащить по нескольким хидерам? Через #include?

@pon4ik, @hobbit.

 

AntonI
()

С/CPP можно ли закодить yeld через longjmp?

Форум — Development

Мне нужно написать функцию с длинной логикой, которая иногда «примораживается» до следующего тика таймера. Фактически - генератор, без необходимости заботиться о локальных переменных. Через switch получается уродски.

Нашел вот такой пример https://gist.github.com/mfoliveira/957805, он хорош, но работает только с GCC. Можно ли вместо указателей на метки использовать setjmp/longjmp? Вот так:

#define yield_start() if (YIELD_ENV != NULL) longjmp(YIELD_ENV, 1);

#define yield(val) if (!setjmp(YIELD_ENV)) return val;

#define yield_end() YIELD_ENV = NULL;

В спеке сказано, что если функция, вызвавшая setjmp() завершилась, то поведение longjmp() не определено. А мне как раз надо чтобы после следующего вызова выполнение продолжилось с места yield().

Тут возможны какие-то косяки кроме потери локальных переменных (меня это устраивает)? Меня и оригинальный вариант устраивает, но интересно разобраться.

Пример текущего кода https://github.com/speedcontrols/ac_sc_grinder/blob/master/src/calibrator.h#L29-L55

Хочется развернуть так:

static jump_buf YIELD_ENV = NULL;

bool tick() {
    yield_begin();

    while (!wait_knob_dial.tick()) { yield(false); }
    while (!calibrate_static.tick()) { yield(true); }    
    while (!calibrate_speed.tick()) { yield(true); }    
    while (!calibrate_pid.tick()) { yield(true); }    

    yield_end();
    return false;
}

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

 , ,

Vit
()

Почему PHP7 быстрее чем Python3?

Форум — Web-development

Раньше было же наоборот когда PHP был на 5 версии? Есть ли смысл дальше учить Python для веба? Сейчас последние годы замечаю Django/Flask не очень активны в отличии от других технологий как Node.js, PHP/Laravel. Python в основном зациклился в машин лёрнинг.

UPD. Быстрее я имел ввиду производительнее. JS для ноды конечно круто, но беспорядочный синтаксис js не нравится в нём писать, и c php тоже такая проблема. Но как бы они есть, как laravel и nodejs. Их производительность намного превосходит чем питон.

 , , ,

Deleted
()