LINUX.ORG.RU

Сообщения gejzenbug

 

Проблема с процессом, запущенным удалённо через tramp

Форум — Development

Всем привет!

Написал скрипт, который построчно обрабатывает всё, что приходит в stdin. Запускаю и взаимодействую с ним из имакса. Отправляю строку - получаю и обрабатываю ответ. Этакий rpc поверх stdin/stdout.

Проблема в том, что при запуске скрипта на другой машине, через tramp, в одной строке нельзя отправить больше 4096 байт (число может отличаться, зависит от зачения заданного в PIPE_BUF). На локальной машине, без трампа, я решил это, используя :connection-type 'pipe при создании процесса со скриптом. С tramp такой прикол не прошёл, всё падает по таймауту на этапе ожидания prompt’а. При этом во временном буфере, который трамп создает для своих технических нужд, я вижу ошибку Pseudo-terminal will not be allocated because stdin is not a terminal., сообщение от motd и сообщение от bash, что он не может установить LC_LOCAL.

Как воспроизвести. Показываю на примере wc, чтоб показать, что дело не в моем скрипте. Вот это выдаст нам в буфер *test-buffer*, что wc обработал только 4096 символов (опять же, у вас это значение может отличаться), хотя отправляем 6000:

(defun get-remote-proc ()
  (let ((default-directory "/ssh:user@host:")
        ;; На всякий случай явно задаем, что connection-type == pty
        (tramp-process-connection-type t))
    (start-file-process
     "test-process"
     "*test-buffer*"
     "wc" "-c")))

(setq proc (get-remote-proc))
(process-send-string proc (concat (make-string 6000 ?o) "\n"))
(process-send-eof proc)

Вот это код, который падает по таймауту:

(defun get-remote-proc ()
  (let ((default-directory "/ssh:user@host:")
        ;; connection-type == pipe
        (tramp-process-connection-type nil))
    (start-file-process
     "test-process"
     "*test-buffer*"
     "wc" "-c")))

(setq proc (get-remote-proc))

Переделать на коммуникацию по сети не предлагать, всё как раз и задумывалось, чтобы обойтись без этого, на одних только stdio.

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

Еще можно обойтись без трампа, запускать ssh с командой вручную (если так делать, то всё норм, никаких ограничений), но тогда придется отказаться от всех удобств трампа, типа обработки ввода пароля, yes/no вопросов и вот этого всего. Тоже как запасной временный план.

Что еще я пробовал делать и что мне не помогло:

  • игрался со значениями tramp-chunksize
  • отправлял строки через term-send-process

Помогите, пожалуйста, разобраться с проблемой. Как можно еще понастраивать tramp? Что я упустил?

 ,

gejzenbug
()

Из двух видеовыходов (LVDS и VGA) одновременно может работать только один

Форум — Linux-hardware

Всем привет! Имею у себя ноутбук с двумя видеокартами: встроеная radeon hd7660g и дискретная radeon hd7670m. У ноута есть три видеовыхода: LVDS для встроенного экрана, VGA и HDMI. Проблема в том, что когда я подключаю второй монитор по VGA, то работает либо только он, либо экран ноутбука. При этом в логах иксов нет никаких ошибок, и во всем остальном все работает как и положено (в xrandr видно все два монитора, можно перетаскивать окна с монитора на монитор). На машине стоит генту, но не думаю, что от этого что-то зависит, потому что я пробовал проделать то-же самое в убунте, федоре и минте с тем же успехом. Драйвер установлен свободный radeon.

Логи иксов без всяких конфигов, при подключении/отключении монитора: https://pastebin.com/SY6WJHsb

Конфиг ядра: https://pastebin.com/Fvj05Rtw

dmesg | grep drm: https://pastebin.com/SascDu98

Версия иксов x11-base/xorg-server-1.19.6, use-флаги: https://pastebin.com/mQxdqPgB

Решения в интернетах не нашел. При похожих симптомах люди решения найти не смогли, либо, как в случае c этим парнем, решилось установкой проприетарных дров. Это мне не подходит, потому что fglrx уже давно не поддерживается, а новый amdgpu pro не для моих карт.

Что я пробовал делать? Подумав, что интегрированая карта не справляется с выводом туда и сюда, я решил привязать VGA к другой видеокарте как-то так. Параметры «Monitor-outputname» менял по-всякому (Monitor-VGA, Monitor-VGA-0, Monitor-VGA-1). Проблема осталась.

Еще пробовал задействовать параметр ZaphodHeads вот так. Тоже ничего.

Пробовал играться по-всякому с xrandr. В том числе с опциями --setprovideroffloadsink и --setprovideroutputsource.

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

Не пробовал использовать оффтопик, потому что нет его у меня и с live usb заморачиваться не хотелось.

Не пробовал подключать монитор по HDMI, потому что у монитора только VGA. Использование переходника хотелось бы оставить на самый краний случай, если ничего другое не поможет.

Прошу помощи с этой проблемой, уже не знаю что придумать еще. Может быть с моими конфигами что-то не так, или же решения просто нет. Я так понимаю, что дело все в том, что как написано в табличке https://www.x.org/wiki/RadeonFeature/: «VGA and LVDS are implemented via DP bridge chips». Но это только предположение.

Еще один момент. Не так давно в качестве второго монитора я пытался использовать VNC-клиент на смартфоне ВОТ ТАК. Если я поднимал виртуальный монитор на VGA-0, то вся проблема повторялась. Виртуальный HDMI-монитор работал как и полагается. Поэтому надеюсь, что проблема чисто программная, а не железная, и решить ее можно.

Novell-ch, я знаю, что ты много возишься с картами от амд. Может и мне сможешь помочь.

 , , , ,

gejzenbug
()

Есть ли такие задачи по обратной разработке?

Форум — Development

Всем привет! Понемногу тут осваиваю обратную разработку, в курсе насчет бомб и всяких crackme. А вот есть ли такие задачки, которые на восстановление алгоритма? То есть изучаешь эту программу, восстанавливаешь алгоритм, пишешь свою реализацию и проверяешь ее некоторым набором данных, который приложен к задаче.

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

 

gejzenbug
()

SQLAlchemy. Повторная фильтрация результатов предыдущей фильтрации.

Форум — Development

Всем привет. Только недавно начал пользоваться алхимией и встретился с такой сложностью. Имеется, к примеру, такая модель:

from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, Date, String

Base = declarative_base()

class Post(Base):
    __tablename__ = 'post'
    
    id = Column(String, primary_key=True)
    date = Column(Date)
    user_id = Column(Integer)
    title = Column(String)

Допустим, я хочу получить посты с какого-то числа

#я в курсе, что здесь будет list
posts = session.query(Post).filter(Post.date >= '2015-10-10').all()
Всё прекрасно, я получаю список постов. Но что если я хочу отфильтровать этот список еще по одному праметру, не делая еще один запрос в базу. То есть мне нужно получить посты, отфильтрованные по какому-либо параметру (сделав при этом запрос в базу и вытащив из нее эти данные), а потом фильтровать результаты по дргим полям, не делая при этом повторных запросов в базу.

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

 ,

gejzenbug
()

ALSA странно работает с динамиками.

Форум — Desktop

Всем привет! Собственно, проблема такая. Звук не хочет играться через ноутбучные динамики без включенного Loopback Mixing и размьюченного канала для наушников. Причем, когда я подключаю наушники, то канал для динамиков, как и положено, выключается, но звук при этом продолжает идти и через наушники и через динамики.

Дистрибутив — gentoo. В ядре все, что нужно включено (делал по генту-вики, и принципе-то все работает, только странно), в use-флагах альса прописана, alsa-utils, alsasound установлены.

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

pcm.!default {
    type pulse
    hint.description "Default Audio Device"
}
ctl.!default {
    type pulse
}
#defaults.pcm.!card Generic
#defaults.pcm.!device 0
pcm.pulse {
    type pulse
}
ctl.pulse {
    type pulse
}

Вот на всяки случай конфиг ядра. Вдруг я что-то недовключил или включил не то.

Карты видит две штуки

| 0 [HDMI           ]: HDA-Intel - HDA ATI HDMI             │
│                      HDA ATI HDMI at 0xf0444000 irq 36    │
│ 1 [Generic        ]: HDA-Intel - HD-Audio Generic         │
│                      HD-Audio Generic at 0xf0440000 irq 16│

Как лечить? Какую еще информацию сообщить?

 ,

gejzenbug
()

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