А почему никто не делает беспроводные Jack-connected наушники?
Ну в плане не у всех есть bluetooth, а у кого есть часто работает криво, USB-наушники требуют дров, почему бы не делать свисток, который втыкается в jack, а сами уши - беспроводные?
Ну в плане не у всех есть bluetooth, а у кого есть часто работает криво, USB-наушники требуют дров, почему бы не делать свисток, который втыкается в jack, а сами уши - беспроводные?
Привет!
В процессе разработки некоего проекта захотел вытащить часть кода в опенсорс. Проект специфичный, код под 6502, что в принципе не особо дает разгуляться компиляции в виде библиотеки. Поэтому план такой:
1 и 2 в принципе ерунда. Задумался над 3. А если у них не make? А если cmake? Кто может подсказать, что мне написать в инструкции (какие-то минимальные действия) чтобы не сильно напрягать человека когда он будет использовать мой проект?
В конкретно для 6502 всё очень плохо в плане качества кода и разработок, поэтому каких-то стандартных make-файлов или сред нет.
Вот, что используют пара проектов этой направленности при работе с объектниками:
$(NAME).nes: $(NAME).o crt0.o $(CFG)
$(LD65) -C $(CFG) -o $(NAME).nes crt0.o $(NAME).o nes.lib -Ln labels.txt --dbgfile dbg.txt
rm *.o
@echo $(NAME).nes created
```bat
@del example.o
@del example.nes
@del example.map.txt
@del example.labels.txt
@del example.nes.ram.nl
@del example.nes.0.nl
@del example.nes.1.nl
@del example.nes.dbg
@echo.
@echo Compiling...
cc65\bin\ca65 example.s -g -o example.o
@IF ERRORLEVEL 1 GOTO failure
@echo.
@echo Linking...
cc65\bin\ld65 -o example.nes -C example.cfg example.o -m example.map.txt -Ln example.labels.txt --dbgfile example.nes.dbg
@IF ERRORLEVEL 1 GOTO failure
@echo.
@echo Generating FCEUX debug symbols...
python example_fceux_symbols.py
@echo.
@echo Success!
@pause
@GOTO endbuild
:failure
@echo.
@echo Build error!
@pause
:endbuild
#!/bin/sh
ca65 crt0.s
cc65 -Oi example1.c --add-source
ca65 example1.s
./cc65/bin/ld65 -C nrom_128_horz.cfg -o draw25.nes crt0.o example1.o runtime2.lib
Xfce, xubuntu 20.04. При появлении любых системных уведомлений (изменение яркости, изменение уровня звука) хром практически зависает - видео фризится пока уведомление не исчезнет, контекстное меню не появится, страница не прокручивается.
В других приложениях такой проблемы нет.
Как диагностировать\лечить?
Хром 108, появилось после обновы хромого, откатиться обратно эта скотина не умеет - требует ее обновить в агрессивной манере.
Обновил до 109го, проблема все еще присутствует. Не набирается текст, не наживаются кнопки, пока уведомление не уйдет.
Вообще выглядит как вот этот баг: https://github.com/electron/electron/issues/14006
Полуркал по интернетам, пишут что помогает установка notify-osd. Поставил, ребутнул. Вроде проблема ушла.
Есть сайт с технической инфой, использует MediaWiki. Есть боязнь, что выпилится в ближайшие несколько лет, а информация нужна.
Как его адекватно скачать чтобы локально можно было использовать? Не обязательно в html, главное чтобы работали кросс-ссылки и можно было смотреть изображения.
Предположим что моя программа запускает другое GUI-ёвое приложение под X11. Я хочу чтобы при нажатии на [X] не закрывалось окно приложения, а мне в материнскую программу прилетало абсолютно любого типа уведомление, НЕ закрывая при этом окно дочернего приложения.
Может ли Х11 предоставить мне такой функционал?
Пока как вариант видится удалить через WM_MOTIF_HINTS декорацию у подчиненного приложения, создать иксовое окно и заембеддить через Xreparentwindow в себя дочернее.
На свежеустановленной xubuntu 20.04 имею проблемы при воспроизведении видео в vlc - широкая зелена полоса вверху видео. В parole такого нет, так что дело не в видеофайле.
В гугле только проблемы с однопиксельной полоской внизу, а у меня тут ширина на четверть экрана с полупрозрачностью.
Не хочу перелезать на другой плеер, в этом хотя бы есть возможность скрыть интерфейс в оконном режиме.
Что имеем в мануале:
NAME
mv - move (rename) files
SYNOPSIS
mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE...
DESCRIPTION
Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.
Что имеем по факту:
Если не указывать опцию -T (про которую есть только скудное описание из которого ничего не понятно)
-T, --no-target-directory
treat DEST as a normal file
то mv меняет своё поведение исходя из наличия\отсутствия файлов.
Ни одного слова про такое изменение поведения в мануале, конечно же, нет.
Где напоролся:
Запускал скрипт, который переименовывает директории согласно шаблону. Иногда попадаются директории, которые уже переименованы (DST=SRC, о чем я не знал), и вместо того, чтобы сказать мне, что, мол, там такой файл уже есть mv попытался поместить директорию в саму себя (SRC/SRC).
Это неочевидное поведение или в мане где-то между строк что-то всё же есть?
Есть около сотни фильтров для входящей почты (куда положить, кого отметить прочитанным, кого удалить). Надо перенести это на другую машину.
Руками займет несколько дней из-за абсолютно ущербного интерфейса добавления\редактирования фильтров.
Как это перенести на другую машину одним махом?
На 18.04 Xubuntu такого не было, на 20.04 стал замечать - памятью не течет, в dmesg всё нормльно, в логах иксов последнее:
[ 67580.195] (II) event22 - Telink Wireless Receiver Mouse: is tagged by udev as: Mouse
[ 67580.195] (II) event22 - Telink Wireless Receiver Mouse: device is a pointer
[ 67640.803] (II) event2 - Power Button: device removed
[ 67640.817] (II) event7 - Video Bus: device removed
[ 67640.841] (II) event0 - Sleep Button: device removed
[ 67640.898] (II) event5 - Elan TrackPoint: device removed
[ 67640.934] (II) event3 - AT Translated Set 2 keyboard: device removed
[ 67640.954] (II) event6 - ThinkPad Extra Buttons: device removed
[ 67640.977] (II) event24 - Integrated Camera: Integrated C: device removed
[ 67641.018] (II) event23 - Telink Wireless Receiver Consumer Control: device removed
[ 67641.033] (II) event25 - Telink Wireless Receiver System Control: device removed
[ 67641.061] (II) event26 - Telink Wireless Receiver: device removed
[ 67641.077] (II) event27 - Integrated Camera: Integrated I: device removed
[ 67641.121] (II) event22 - Telink Wireless Receiver Mouse: device removed
[ 67641.165] (II) AIGLX: Suspending AIGLX clients for VT switch
Пришибил через tty фоновые хромак и телегу - не помогло. xfce4-panel -r - не помогло. Видимо что-то с самими иксами, мышка переходит в «задумчивую» анимацию и клики не проходят.
Помог рестарт иксов через
sudo service lightdm restart
Как диагностировать? Какие логи смотреть? Пока не ребутал машину.
Могу предположить, что криво включилась блокировка экрана или заставка из-за простоя. Отрубил обоих, буду наблюдать. Всё равно интересно, куда можно копнуть.
UPD: Логи journald: https://pastebin.com/td0Ab21i
Вроде ж с полгода-год назад говорили что перестанут работать uMatrix и все кто работает подобным образом, потому что Google закручивает гайки.
Как там сейчас? У меня сейчас версия прошлого года, боюсь обновлять потому что (?) отвалятся umatrix и ublock.
Хочу пописать под 6502, у него кастомный набор инструкций, поэтому, скорее всего нужно будет отредачить файл подсветки.
Хочу:
Готов написать правила подсветки\описания ручками сам, подскажите кто и в каком формате это сожрет.
Кнопка\клавиатурное сочетание для Build/Run - большой бонус.
Я пробовал прикручивать подсветку ASM для QtCreator - получается шлак. Он банально не умеет вообще ничего кроме как подсвечивать, а с этим и mousepad справляется.
Почему хочу IDE - не хочу колхозить систему сборки на скриптах, постоянно редактировать руками make с его инопланетным синтаксисом - фэ. automake/cmake еще инопланетнее. У IDE обычно есть фича как «файл проекта», где хранится вся инфа о списке файлов и как их компилить
Положим что есть какой-то старый легаси проект где куча модулей, перечислений, структур и типов. Положим что у нас есть цель отрефачить его.
Оптимально было бы сначала запустить какую-нибудь утилу, которая сказала бы «перечисление aaa не используется в проекте» и мы такие - круто, удаляем из кода, чтобы не мешало восприятию. Или «функция bbb не используется в проекте» и мы такие - ваще кайф, минус 2500 строк кода.
Компилятор умеет находить неиспользуемые static-и, но по глобальным сущностям такое должен палить линкер, а у него таких опций вроде нет.
Есть что-то готовое чтобы не городить огород?
https://github.com/torvalds/linux/tree/8bcab0346d4fcf21b97046eb44db8cf37ddd6da0
Ъ:
hey guys its me linus torvalds, author of the smash hit linux. yes its me you can look at the url of the repo and the thingy at the top of the files it proves its 100% me.
i deleted linux because i hate it now i think it sucks. you should go use this awesome os its called windows xp i just discovered it its great
Немного подробностей: https://news.ycombinator.com/item?id=24976138
До того как мегабаксы купили хаб такой бурни не было.
VLC 3.0.8, xUbuntu 18.04
Ставлю размер плеера маленьким, кидаю его в угол экрана посматривая музыкальный ролик и слушая музыку. Когда воспроизведение начинается заново то он меняет размер интерфейса под размер видео, из-за чего нужно его заново совать в угол и менять размер.
Галка «подгонять размер интерфейса под размер видео» выключена.
Как вылечить? То же самое если смотреть сериал - на каждой серии он делает интерфейс по размеру видео.
Ubuntu 18.04, ни руками ни через playonlinux wine32 вставать не хочет:
Следующие пакеты имеют неудовлетворённые зависимости:
wine32:i386 : Зависит: libwine:i386 (= 3.0-1ubuntu1) но он не будет установлен
libwine:i386 : Зависит: libgphoto2-6:i386 (>= 2.5.10) но он не будет установлен
Зависит: libgphoto2-port12:i386 (>= 2.5.10) но он не будет установлен
Рекомендует: libsane1:i386 (>= 1.0.24) но он не будет установлен
libgphoto2-port12:i386 : Зависит: libusb-1.0-0:i386 (>= 2:1.0.8) но он не будет установлен
kio : Зависит: libkf5notifications5 (>= 4.96.0) но он не будет установлен
Зависит: libkf5wallet-bin но он не будет установлен
libkf5wallet5 : Зависит: libkwalletbackend5-5 (= 5.44.0-0ubuntu1) но он не будет установлен
…ну и так далее на половину системы ругается. При этом стим свой proton 32х битный поставил без проблем.
Просто хочу в Diablo II погонять.
Хочу напечатать книгу. Раньше, когда я сам ее верстал в libre - то печатал через галку «брошюра» и печатал по 8 страниц на двусторонней печати - выходило классно, вкусно и полезно.
Теперь у меня есть PDF, но в Atril (который использует системный диалог печати) нет галки «брошюра», она есть только в LibreOffice (который системный диалог печати не использует).
Вопрос:
Как мне импортировать PDF в LibreOffice Writer постранично картинками? Почему именно картинками - если открыть как текст через LibreOffice Draw - то всё форматирование плывёт, куски текста пропадают, а диаграммы уходят вправо.
Вариант №2 (более сложный) - найти утилиту которая мне каким-то волшебным образом подготовит PDF к печати двусторонними тетрадками по 8 страниц.
При запуске первого процесса xfce4-terminal он порождает независимый процесс с родителем установленным как тот, кто его породил (другой терминал, иксы, QtCreator и пр.) Всё круто, всё хорошо.
Если при этом запустить вторую копию, то, несмотря на настоящего родителя процесс будет привязан к первому терминалу. Т.е. Если я первый процесс запустил через хоткей и получил родителем X, то у второго процесса, который я запущу, например через QtCreator родителем будет Х. В данном случае проблемы нет, однако если первый процесс запустить в QtCreator, а второй - через хоткей, то у обоих процессов родителем будет QtCreator, что приводит к проблеме - среда разработки грохает процесс, который породила, закрывая тем самым второй терминал, который к ней не имеет никакого отношения. Жутко неудобно, когда открываешь кучу процессов для отладки или инфы, закрываешь дебаг сессию в QtCreator и у тебя дропаются ВСЕ терминалы в системе.
Как не давать им слипаться?
#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <locale.h>
int main(void) {
locale_t loc = newlocale(LC_ALL_MASK, "en_US.utf8", NULL);
if (loc == 0) {
printf("NEW: %d %s\n", errno, strerror(errno));
return 1;
}
if (uselocale(loc) == 0) {
printf("USE: %d %s\n", errno, strerror(errno));
return 1;
}
for (int i = 0; i < 50; i++)
printf("%d %s\n", i, strerror(i));
freelocale(loc);
return 0;
}
$ ./error.elf
0 Выполнено
1 Операция не позволена
2 Нет такого файла или каталога
3 Нет такого процесса
4 Прерван системный вызов
5 Ошибка ввода/вывода
...
ЧЯДНТ?
$ locale --all
C
C.UTF-8
en_AG
en_AG.utf8
en_AU.utf8
en_BW.utf8
en_CA.utf8
en_DK.utf8
en_GB.utf8
en_HK.utf8
en_IE.utf8
en_IL
en_IL.utf8
en_IN
en_IN.utf8
en_NG
en_NG.utf8
en_NZ.utf8
en_PH.utf8
en_SG.utf8
en_US.utf8
en_ZA.utf8
en_ZM
en_ZM.utf8
en_ZW.utf8
POSIX
ru_RU.utf8
ru_UA.utf8
Поучительная история:
Играл во flatout 2 через стим на онтопике. Два дня назад ещё всё было хорошо. Сегодня при запуске мне выдает «недопустимая платформа». В магазине поддержку Linux тоже убрали. Чем им помешала игра, которой уже 15 лет - я не знаю.
Мораль, пасаны, пользуйте gog или пиратку. Иначе завтра ваш дистр превратится в тыкву.
Есть достаточно нетривиальная задача, если найдется решение хотя бы для linux - было бы уже неплохо.
Есть процесс, запущенный через fork() + close(1, 2) + open(file1, file2) + execve. Соответственно он пишет свой stdout/err в файл.
Что нужно - периодически чекать размер файла в другой программе (тривиально) и если он больше чем N (пусть будет 10 МБ) - отрезать ему M байт (пусть будет 5 МБ) с начала (не тривиально). Оставив таким образом только последние 5 МБ её выхлопа.
Не тривиально, потому что этот же файл всё еще пишется запущенной исходной программой.
Да, можно в теории поступить по-другому - открыть файл, скопировать его в другой, сохранить как .log.1, затранкейтив полностью исходный. Но есть проблема в том, что таких «пишущих» процессов будет что-то около 50 и засирать каталог очень не хочется (тем более, что практика показала, что искать что-то одновременно в log.1 … log.9 не очень удобно (особенно когда это что-то попадает куском в первый файл, а куском во второй)).
logrotate не доступен, потому что это условно-portable сервис + его надо запускать под виндами, желательно не переписав его на 90%.
UPD:
В общем на чем сейчас остановились: перехватывать на себя выхлоп через пайпы - не вариант, нужно плодить миллион (80 шт) нитей чтобы обслуживать все запущенные сервисы (40 шт).
Сейчас рассматриваем вариант с одной нитью и работать как logrotate - делать log.1, log.2 для всех разом. Непенятно только как заставить каретку в программе переехать на начало, ведь если работающий сервис не сделал close - то его позиция каретки зафикшена и если после моего truncate файла будет write со стороны программы - то там будет не 0, а файл, размером N МБ + добавка последней записи.
Кто расскажет, какую магию делает logrotate и logrotatewin?
https://pastebin.com/ewDukJJx
| ← назад | следующие → |