LINUX.ORG.RU

Сообщения aido

 

Не работает микрофон Lubuntu 21.10

Форум — Desktop

Всем привет!

Устал воевать со звуком на ноуте. Мб кто знает пошаговый мануал дебага звуковых устройств?

Полная история звучит так: купил ноут, поставил убунту, поставил pavucontrol-qt. Заметил, что звука с динамиков нет, зато pavucontrol реагирует на щелчки пальцами. Потом стал решать проблему разными методами. Я сейчас не понимаю, сработала комбинация методов или последний. Но факт в том, что динамики заработали, а микрофон отвалился.

Немного логов:

$ aplay --version
aplay: version 1.2.4 by Jaroslav Kysela <perex@perex.cz>

$ pulseaudio --version
pulseaudio 15.0

$ inxi -SMA
System:    Host: host Kernel: 5.13.0-22-generic x86_64 bits: 64 Desktop: LXQt 0.17.1 Distro: Ubuntu 21.10 (Impish Indri) 
Machine:   Type: Laptop System: Acer product: Nitro AN515-56 v: V1.06 serial: <superuser required> 
           Mobo: TGL model: Scala_TLM v: V1.06 serial: <superuser required> UEFI: Insyde v: 1.06 date: 08/16/2021 
Audio:     Device-1: Intel Tiger Lake-LP Smart Sound Audio driver: snd_hda_intel 
           Device-2: NVIDIA driver: snd_hda_intel 
           Sound Server-1: ALSA v: k5.13.0-22-generic running: yes 
           Sound Server-2: PulseAudio v: 15.0 running: yes 
           Sound Server-3: PipeWire v: 0.3.32 running: yes

$ lsmod | grep snd
snd_sof_pci_intel_tgl    16384  0
snd_sof_intel_hda_common    98304  1 snd_sof_pci_intel_tgl
soundwire_intel        40960  1 snd_sof_intel_hda_common
snd_sof_intel_hda      20480  1 snd_sof_intel_hda_common
snd_sof_pci            20480  2 snd_sof_intel_hda_common,snd_sof_pci_intel_tgl
snd_sof_xtensa_dsp     16384  1 snd_sof_intel_hda_common
snd_sof               135168  2 snd_sof_pci,snd_sof_intel_hda_common
snd_soc_hdac_hda       24576  1 snd_sof_intel_hda_common
snd_hda_ext_core       32768  3 snd_sof_intel_hda_common,snd_soc_hdac_hda,snd_sof_intel_hda
snd_soc_acpi_intel_match    49152  2 snd_sof_intel_hda_common,snd_sof_pci_intel_tgl
snd_soc_acpi           16384  2 snd_soc_acpi_intel_match,snd_sof_intel_hda_common
snd_hda_codec_realtek   147456  1
snd_hda_codec_generic    81920  1 snd_hda_codec_realtek
ledtrig_audio          16384  2 snd_hda_codec_generic,snd_sof
snd_soc_core          294912  4 soundwire_intel,snd_sof,snd_sof_intel_hda_common,snd_soc_hdac_hda
snd_hda_codec_hdmi     61440  2
snd_compress           28672  1 snd_soc_core
ac97_bus               16384  1 snd_soc_core
snd_pcm_dmaengine      16384  1 snd_soc_core
snd_hda_intel          53248  8
snd_intel_dspcfg       28672  2 snd_hda_intel,snd_sof_intel_hda_common
snd_intel_sdw_acpi     20480  2 snd_sof_intel_hda_common,snd_intel_dspcfg
snd_hda_codec         147456  5 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec_realtek,snd_soc_hdac_hda
snd_hda_core           94208  9 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_ext_core,snd_hda_codec,snd_hda_codec_realtek,snd_sof_intel_hda_common,snd_soc_hdac_hda,snd_sof_intel_hda
snd_hwdep              16384  1 snd_hda_codec
snd_seq_midi           20480  0
snd_seq_midi_event     16384  1 snd_seq_midi
snd_rawmidi            36864  1 snd_seq_midi
snd_seq                73728  2 snd_seq_midi,snd_seq_midi_event
snd_pcm               118784  11 snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec,soundwire_intel,snd_sof,snd_sof_intel_hda_common,snd_compress,snd_soc_core,snd_hda_core,snd_pcm_dmaengine
snd_seq_device         16384  3 snd_seq,snd_seq_midi,snd_rawmidi
snd_timer              40960  2 snd_seq,snd_pcm
snd                    94208  28 snd_hda_codec_generic,snd_seq,snd_seq_device,snd_hda_codec_hdmi,snd_hwdep,snd_hda_intel,snd_hda_codec,snd_hda_codec_realtek,snd_timer,snd_compress,snd_soc_core,snd_pcm,snd_rawmidi
soundcore              16384  1 snd

$ cat /etc/modprobe.d/alsa-base.conf
# autoloader aliases
install sound-slot-0 /sbin/modprobe snd-card-0
install sound-slot-1 /sbin/modprobe snd-card-1
install sound-slot-2 /sbin/modprobe snd-card-2
install sound-slot-3 /sbin/modprobe snd-card-3
install sound-slot-4 /sbin/modprobe snd-card-4
install sound-slot-5 /sbin/modprobe snd-card-5
install sound-slot-6 /sbin/modprobe snd-card-6
install sound-slot-7 /sbin/modprobe snd-card-7

# Cause optional modules to be loaded above generic modules
install snd /sbin/modprobe --ignore-install snd $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-ioctl32 ; /sbin/modprobe --quiet --use-blacklist snd-seq ; }
#
# Workaround at bug #499695 (reverted in Ubuntu see LP #319505)
install snd-pcm /sbin/modprobe --ignore-install snd-pcm $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-pcm-oss ; : ; }
install snd-mixer /sbin/modprobe --ignore-install snd-mixer $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-mixer-oss ; : ; }
install snd-seq /sbin/modprobe --ignore-install snd-seq $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-seq-midi ; /sbin/modprobe --quiet --use-blacklist snd-seq-oss ; : ; }
#
install snd-rawmidi /sbin/modprobe --ignore-install snd-rawmidi $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-seq-midi ; : ; }
# Cause optional modules to be loaded above sound card driver modules
install snd-emu10k1 /sbin/modprobe --ignore-install snd-emu10k1 $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-emu10k1-synth ; }
install snd-via82xx /sbin/modprobe --ignore-install snd-via82xx $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-seq ; }

# Load saa7134-alsa instead of saa7134 (which gets dragged in by it anyway)
install saa7134 /sbin/modprobe --ignore-install saa7134 $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist saa7134-alsa ; : ; }
# Prevent abnormal drivers from grabbing index 0
options bt87x index=-2
options cx88_alsa index=-2
options saa7134-alsa index=-2
options snd-atiixp-modem index=-2
options snd-intel8x0m index=-2
options snd-via82xx-modem index=-2
options snd-usb-audio index=-2
options snd-usb-caiaq index=-2
options snd-usb-ua101 index=-2
options snd-usb-us122l index=-2
options snd-usb-usx2y index=-2
# Ubuntu #62691, enable MPU for snd-cmipci
options snd-cmipci mpu_port=0x330 fm_port=0x388
# Keep snd-pcsp from being loaded as first soundcard
options snd-pcsp index=-2
# Keep snd-usb-audio from beeing loaded as first soundcard
options snd-usb-audio index=-2

#options snd-hda-intel dmic_detect=0
options snd-intel-dspcfg dsp_driver=1

 , , , ,

aido
()

Сериализация вложенных динамических структур на Go

Форум — Development

Всем привет!

Как сделать, чтобы вот это правильно работало? Хочется на сервере заполнять мапу кастомными структурами, в которых еще и списки присутствуют, а потом это все сериализировать в JSON и отправлять клиенту. Пока что вы дает {"Asia":{},"America":{},"Australia":{},"Europa":{},"Africa":{}}, то есть по указателям не проходится.

type sector_info struct {
            servers []string
            count uint
        }
        response := make(map[string]*sector_info)
        for rows.Next() {
            var (sector   string
                 server string)
            checkErr(rows.Scan(&sector, &server))
            if _, ok := response[sector]; ok {
                response[sector].servers=append(response[sector].servers, industry)
            } else {
                response[sector]=&sector_info{}
                response[sector].servers=[]string{server}
            }
        }

 , ,

aido
()

django-filters не связанный с моделью

Форум — Development

Всем привет!

Как сделать с помощью django-filters форму с двумя фильтрами, где первый бы напрямую касался модели (это вроде более менее понятно), а второй к ней относился лишь посредственно? Ну то есть при приеме этой формы для второго поля вызывалась бы совершенно сторонняя функция, не имеющая отношения к базе, но знающая айдишники полей, и возвращающая их, а дальше бы отрабатывал первый фильтр.

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

 ,

aido
()

Кастомное хранение полей модели в django

Форум — Development

Всех с Новым Годом!

Может кто сталкивался с тем, как можно поменять место хранения полей модели? Например, у меня есть модель, где все поля кроме одного должны храниться в базе, а одно (MarkdownxField) должно браться из гитового репозитория. Порядок действий я себе представляю так:

1) при ./manage.py migrate помимо всех остальных действий клонируется/пуллится репозиторий с гита. Креды репозитория указаны в class Meta модели.

2) при создании нового инстанса модели, создается запись в БД и в гитовом репозитории создается файл с нужным коммитом, и пушится в репозиторий. Все действия с данным полем будут проходить только через репозиторий.

3) Я готов пойти на определенные издержки (созданий и изменений инстансов будет мало, чтений много).

4) Для чего это нужно? Чтобы хранить статьи в гите в формате markdown, чтобы и править было просто, и историю изменений посмотреть было можно, и авторство установить. Также, чтобы при падении базы, можно было просто спуллить репозиторий и жить как ни в чем не бывало. Это гораздо проще, чем подымать кластер из постгри для обеспечения сохранности данных в джанге.

5) Всякие сложные ситуации вида «два человека вносят правки в один и тот же файл, и как быть в этом случае» опускаются. в крайнем случае можно показать сообщение из гита, что надо разрешить конфликт последнему человеку.

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

7) Поддержка веток не планируется. Статьи, сохраненные в гите отображаются только из мастера. Пока не было мерджа в мастер, джанга их не видит.

Может кто-то видел/делал нечто подобное?

 ,

aido
()

Инициализация базы в джанге

Форум — Development

Всем привет!

Решил тут на коленке накатать одно приложение, и внезапно оказалось, что хз, как изначально сделать базу.

Да, я читал про фикстуры, но заливка в базу у меня будет не из файла, а по сети (приложение при запуске опрашивает определенный сайт, и потом в определенном формате вносит данные в БД). Да, я пробовал перегружать AppConfig.ready своей реализацией, но к этому моменту таблицы в базе еще не созданы. Какие еще есть пути?

 ,

aido
()

Как в шейдерах рисовать простые геометрические фигуры?

Форум — Development

Всем снова привет!

Собственно, сабж. Хочется уметь рисовать нечто вроде glutWireSphere, glutWireCube, но я пока не понимаю, как это лучше всего сделать. В идеале хочется, чтобы шейдер принимал от меня 3-4 флоата, а дальше сам все отрисовывал. OpenGL 4.2.

 

aido
()

Как в опенгл-шейдеры передать цвет в uint32_t?

Форум — Development

Всем привет!

Собственно, сабж.

Вот код шейдеров и то, как туда передаются данные:

const char *vertexShaderSource ="#version 420 core\n"
    "layout (location = 0) in vec4 aPos;\n"
    "layout (location = 1) in vec4 aColor;\n"
    "out vec4 ourColor;\n"
    "void main()\n"
    "{\n"
    "   gl_Position = vec4(aPos.xyz, 1.0);\n"
    "   gl_PointSize = aPos.w;\n"
    "   ourColor = aColor.rgba;\n"
    "}\0";

const char *fragmentShaderSource = "#version 420 core\n"
    "out vec4 FragColor;\n"
    "in vec4 ourColor;\n"
    "void main()\n"
    "{\n"
    "   vec2 circCoord = 2.0 * gl_PointCoord - 1.0;\n"
    "   if (dot(circCoord, circCoord) > 1.0) {\n"
    "        discard;\n"
    "   }\n"
    "   FragColor = ourColor;\n"
    "}\n\0";

//---- usage: ----
    struct point
    {
        uint64_t id;
        float x;
        float y;
        float z;
        float size;
        uint32_t color;
        /*float r;
        float g;
        float b;
        float a;*/
    };
    // bla-bla-bla
    glBindBuffer(GL_ARRAY_BUFFER, VBO);
    glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
    // position attribute
    glVertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, sizeof(point), (void*)(sizeof(uint64_t)));
    glEnableVertexAttribArray(0);
    // color attribute
    glVertexAttribIPointer(1, 4, GL_UNSIGNED_BYTE, sizeof(point), (void*)(sizeof(uint64_t) + 4 * sizeof(float)));
    glEnableVertexAttribArray(1);

При этом я проверил, что при передаче компонент цвета как float все работает как надо, но хочется снизить размер передаваемых данных.

ЧЯДНТ?

 

aido
()

Как нарисовать полупрозрачную точку в OpenGL?

Форум — Development

Всем привет!

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

glEnable(GL_BLEND);
glBlendFunc ( GL_SRC_COLOR, GL_ONE_MINUS_SRC_ALPHA);
/* Loop until the user closes the window */
while (!glfwWindowShouldClose(window))
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
    glBegin(GL_POINTS);
    for(const auto& point: points)
    {
        glColor4f(_points[point.color].r, _points[point.color].g, _points[point.color].b, 0.9f/*point.vec.w*/);
        glVertex3f(point.vec.x, point.vec.y, point.vec.z);
    }
    glEnd();
}

Почему поточечно что-то рисую? Потому что это визуализация физической модели.

 ,

aido
()

DRF как сделать роут без модели и только с двумя типами запроса?

Форум — Development

Всем привет!

Хочется сделать, чтобы в описании общего апи django rest framework отображался роут без привязки к модели и только с типами запроса POST и GET. Более конкретно: это просто лайк к какому-то объекту. Get покажет количество лайков конкретного объекта, POST - добавит еще один. Проблема (с точки зрения кода) в том, что они у меня хранятся в другой БД и обычный viewset мне там никак не использовать. Конечно, можно просто хардкодом в обход DRF сделать, но тогда он не появится в документации автоматом.

Пока код такой (тут заглушки и бред написаны на самом деле):

# serializers.py
LIKE_CHOICES = ('compliant', 'dislike', 'like', 'superlike')

class LikeSerializer(serializers.Serializer):
    receiver = serializers.IntegerField()
    like_type = serializers.ChoiceField(choices=LIKE_CHOICES, default='like')
    def create(self, validated_data):
        print('receiver:', validated_data.get('receiver'))
        print('like:', validated_data.get('like_type'))
        return None

# views.py
class LikeViewSet(viewsets.ViewSet):
    def list(self, request):
        '''Это нужно только для конкретного объекта'''
        likes=1
        return Response({"count": likes})
    def create(self, request):
        '''Это нужно только для конкретного объекта'''
        new_like=LikeSerializer(request.data)
        print(new_like)
        return Response({"status":"ok"})

# urls.py
router = routers.DefaultRouter()
router.register(r'like/([0-9]+)',   api.views.LikeViewSet, base_name='like') # вот эту штуку хочется оставить, чтобы лайки появились в документации

Короче, я пока сильно путаюсь в том, что мне из этого надо оставить, а что убрать. А ещё хочется, чтобы залогиненный юзер автоматически определялся(поэтому в LikeSerializer только receiver без sender-а), так как допустимо ставить лайки только залогиненным юзерам.

 , ,

aido
()

Python Make class JSONSerializable

Форум — Development

Всем привет!

Столкнулся с задачей сделать свой класс json-сериализуемым. Что надо доопределить в классе base, чтобы все его наследники (и любая их иерархия) могли без проблем записываться в json?

import json
class base(object):
    pass

class foo(base):
    a=1

class bar(base):
    baz=foo()
    b=2

d=bar()
print(json.dump(d, indent=4))

 

aido
()

Сканироване пакетов пакетного менеджера apt/yum/pip

Форум — Admin

Всем привет!

Как вывести инфу по всем доступным и установленным пакетам вместе с их зависимостями? Например, в json-формате (или любом хорошо сериализуемом: yaml/xml тоже подойдут) «{package: [list, of, dependencies], ...}»

 ,

aido
()

установка lubuntu на acer tmp 259

Форум — General

Всем привет!

Тем кто не хочет читать дальше - прямой вопрос: как установить ubuntu или любой другой линукс на acer tmp 259? Это ноут с uefi.

Я пользуюсь линуксом уже где-то 8 или 9 год (перестал считать с некоторого момента) и меня всё в нем устраивает, кроме одного.

Почему каждый раз, б№;%ь, приходится развлекаться с выбором правильного загрузчика и выставлением uefi legacy/secure boot и многим другим? Я перепробовал вариантов 6, наверное: и в легаси режиме, и в уэфи с секьюр-бутом, и в уефи без секьюр-бута, и ставиться в легаси, а загружаться в уэфи, и с секьюром, и без. И больше мне не особо хочется насиловать диск с этими развлечениями, поэтому добавочный вопрос: есть ли утилиты, которые могут точно определить параметры, в которых ноут точно запустится? Или есть ли утилиты, которые помогут не переформатировать диск каждый раз (потому что порой лениво бороться в терминале), а просто правильно чрутиться к системе при загрузке и переписывать загрузчик в нужное место с моими параметрами?

 , , ,

aido
()

Оформление админки джанги

Форум — Web-development

Всем привет!

Оказалось так, что у меня в таблице list_display довольно длинные названия, да ещё и на русском языке, сделанном через переводы локалей. Есть ли способ сделать автоперенос строки или зафиксировать максимальную ширину колонки? Желательно, без ручного переопределения js-скриптов. Также хочется, чтобы некоторые поля были выровнены по центру. Подскажите, какой пакет может такое сделать?

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

 ,

aido
()

Как модель в админке джанги сделать полностью ридонли?

Форум — Web-development

Всем привет!

Собственно, сабж. Нужно сделать так, чтобы в админке некий объект можно было создавать, удалять, но нельзя было редактировать.

Нашел вот это, но у меня че-то не заработало. Вставлял так:

class RegistrationRequestChangeForm(forms.ModelForm, ReadOnlyAdminMixin):
    class Meta:
        model=RegistrationRequest
        fields = ( 'activationKey', 'serial_number', 'email')

ЧЯДНТ?

 ,

aido
()

Связь с музыкальным сервером

Форум — Desktop

Всем привет!

Настроил буквально вчера CubieBoard5. Подробности с ядрами и магией под капотом пока оставим за кадром - есть более насущный вопрос, точнее ситуация. Положим, что на моем андроидном телефоне есть набор музыкальных файлов. Я хочу, тыкнув трек на телефоне, услышать его на колонках, подключенных к музыкальному серверу. Какую связку программ (Android <-> Media Server) можете порекомендовать для такой задачи?

Хранить все треки на SATA и проигрывать руками/через самоподнятый сайт и mpd неудобно.

 , ,

aido
()

Наглухо неясная ошибка линковки

Форум — Development

Всем привет!

Как такое возможно?

$ i686-w64-mingw32.static-nm -C libbotan-2.a | grep square 

000011d0 T Botan::BigInt::square(std::vector<unsigned int, Botan::secure_allocator<unsigned int> >&)

$ make
....
build/obj/cli/speed.o:speed.cpp:(.text$_ZN9Botan_CLI5Speed12bench_mp_mulENSt6chrono8durationIxSt5ratioILx1ELx1000EEEE[__ZN9Botan_CLI5Speed12bench_mp_mulENSt6chrono8durationIxSt5ratioILx1ELx1000EEEE]+0x54d): 
undefined reference to Botan::BigInt::square(std::vector<unsigned int, Botan::secure_allocator<unsigned int> >&)' 

 

aido
()

Ansible Хочу массив строк из пары массивов

Форум — Admin

Всем привет!

Как заставить этот код работать? Он должен собирать исходники либы и выкладывать их в определенные поддиректории. ИМХО, циклы здесь необходимы.

- hosts: localhost
  vars:
    tmp_dir: /tmp/botan
    install_dirs: "libbotan/{{ item[0] }}/{{ item[1] }}"
    qmakes : "/home/builder/mxe/usr/{{ item[0] }}-w64-mingw32.{{ item[1] }}/qt5/bin/qmake"
    loop   : "{{ lookup(['i686', 'x86_64'], ['static', 'shared']) }}"
  tasks:
    - name : create tmp dir
      file : path={{ tmp_dir }} state=directory
    - name : create install dirs
      file : path={{ item }} state=directory
      with_items: "{{ install_dirs }}"

Выдает fatal: [localhost]: FAILED! => {"failed": true, "msg": "libbotan/{{ item[0] }}/{{ item[1] }}: 'item' is undefined"}

Ansible версии 2.2.1

 

aido
()

Django как добавить гибкости к моделям?

Форум — Development

Всем привет!

Встала такая задача: 1) в одной модели задается список необходимых полей для другой модели. Я решил это как StackedInline+ForeignKey+CharField.

2) Тот список, который был задан в шаге 1, надо как-то отобразить в инлайнах другой модели как названия к кастомным полям. Для простоты пусть всюду будет CharField.

 

aido
()

Как в .pro-файле определить, какой битности компилятор используется для сборки?

Форум — Development

Всем привет!

Собственно, сабж. Нужно для 32-битного компилера линковаться с 32-битной библиотекой, а для 64-битного - с 64-битной соответственно.

Пробовал так, ничего не дало:

message($$[QMAKE_TARGET])
contains(QMAKE_TARGET.arch, x86_64) {
    BOTAN_ARCH=x86_64
    QMAKE_CXXFLAGS+=-m64 -pthread
    QMAKE_LFLAGS+=-m64 -pthread
   } else {
    BOTAN_ARCH=i686
}
BOTAN_PREFIX=/home/builder/mxe/usr/$$BOTAN_ARCH-w64-mingw32.static

Мессага тоже не кидается, так что я даже посмотреть не могу, что идет не так.

 

aido
()

Django admin custom select

Форум — Development

Всем привет!

Требуется добавить в админку конструктор select-запроса по всем моделям с возможностью выгрузки результатов. Может есть какие-нибудь пакеты для такого? Просто не хочется с нуля писать такое.

 ,

aido
()

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