LINUX.ORG.RU

Сообщения gagarin

 

bttv automute option

Использую TV-тюнер на компе под Линуксом. Качество приёма сигнала на некоторых каналах не очень высокое. Хотя смотреть можно, тюнер (или модуль ядра) считает, что сигнал слаб и мьютит звук с тюнера. Проблема решилась передачей модулю bttv опции «automute=1». После этого содержимое файла в modprobe.d с конфигом bttv выглядит следующим образом:

alias char-major-81 bttv

options bttv card=78
options bttv tuner=28
options tuner secam=d

Всё бы ничего, но при включении компа и загрузке модуля bttv начинается шипение в колонках (судя по всему аудио-сигнал с тюнера). Лечится это запуском/остановкой tvtime. В связи с этим вопрос: можно ли заставить его заткнуться при загрузке модуля, при этом оставив «automute». Может есть возможность написать в modprobe.d что-то вроде

install bttv blah_blah
?

 bttv

gagarin
()

Динамики ноута

Продолжение истории из этого треда.

В этом сообщении удалось решить описанною в верхнем посе проблему.

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

То есть:

  • После логина регулятор «Speakers» в alsamixer оказывается в нуле (но не Muted).
  • После вставки наушников в разъём регулятор «Speakers» оказывается в нуле и Muted
  • После вытаскивания наушников регулятор «Speakers» в alsamixer оказывается в нуле (но не Muted). Независимо от того, в каком положении он был до вставки наушников.

Как исправить такое поведение? Может это такая фича (чтобы после вытаскивания наушников ноут не начинал громко орать)? Каждый раз лезть в alsamixer неудобно (в КДЕшном микшере такого регулятора нет)

 ,

gagarin
()

Не играет звук из динамиков ноута

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

В pavucontrol во вкладке «Output Devices» при вынимании наушников видно, что порт переключается с «Headphones» на «Analog Output». Полоска внизу показывает, что звук играет на нормальной громкости, но из колонок почти ничего не слышно (только если ухо вплотную прислонить)

Куда копать?

 , ,

gagarin
()

Длинное имя Java-класса и переносы

Вопрос к программистам на Java (да и не только), использующим LaTeX. Допустим нужно упомянуть длинное имя класса в тексте. например, org.apache.commons.dbcp.basicdatasource. Как сделать так, чтобы оно красиво переносилось по строкам? Мне удалось сделать только перенос по точкам.

\usepackage{xstring}
\newcommand*{\javapackage}[1]{\foreignlanguage{english}{\texttt{\StrSubstitute{#1}{.}{.\allowbreak}}}}

Но как научить его переносить слово «basicdatasource»? Добавление

\hyphenation{ba-sic-da-ta-so-ur-ce}
не помогает, а добавить имя класса целиком я не могу (LaTeX ругается на то, что точка - не символ алфавита).

Проблем ещё добавляет использование \texttt (внутри него текст не желает переносится, а рекомендованный пакет hyphenat с параметром [htt] не очень дружит с \foreignlanguage)

 

gagarin
()

Структуры, заголовки, typedef'ы и циклические зависимости.

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

Файл a.h

#ifndef _A_H
#define _A_H
#include "b.h"

typedef struct StructA {
   int a;
   int b;
   int c;
} A; 

void A_f1(A* a, B* b);
void A_f2(A* a, B* b);
void A_f3(A* a, B* b);

#endif

Файл b.h

#ifndef _B_H
#define _B_H
#include "a.h"

typedef struct StructB {
   int a;
   int b;
   int c;
} B; 

void B_f1(A* a, B* b);
void B_f2(A* a, B* b);
void B_f3(A* a, B* b);

#endif

Файл c.h

#ifndef _C_H
#define _C_H
#include "a.h"
#include "b.h"

void C_f1(A* a, B* b);
void C_f2(A* a, B* b);
void C_f3(A* a, B* b);

#endif

Файл main.c

#include "a.h"
#include "b.h"
#include "c.h"

int main() {
   //some function calls...
   return 0;
}

Как видно, в файле a.h нужен #include «b.h», и наоборот (иначе структуры будут не определены). Реализацию функций, прототипы которых объявлены в заголовках, опущу, но будем считать, что они дергают поля всех структур (то есть описать структуру в файлах *.c и оставив в *.h только forward declaration не получится). Собственно, код, похожий на написанный выше не компилируется, поскольку:

  • В main.c включается a.h
  • В a.h включается b.h
  • Компилятор ругается, что в b.h используется необъявленный тип A (a.h, заинклюженый из b.h оказывается пустым, поскольку A_H уже задефайнена)

Погуглив на эту тему, наткнулся на совет: не использовать #инклюды внутри заголовочных файлов. Вместо этого вставлять forward declaration для нужных структур. Попробовал и так. Результат ниже:

Файл a.h

#ifndef _A_H
#define _A_H
//#include "b.h"

typedef struct StructA {
   int a;
   int b;
   int c;
} A; 

struct StructB;
typedef StructB B;

void A_f1(A* a, B* b);
void A_f2(A* a, B* b);
void A_f3(A* a, B* b);

#endif

Файл b.h

#ifndef _B_H
#define _B_H
//#include "a.h"

typedef struct StructB {
   int a;
   int b;
   int c;
} B; 

struct StructA;
typedef StructA A;

void B_f1(A* a, B* b);
void B_f2(A* a, B* b);
void B_f3(A* a, B* b);

#endif

Файл c.h

#ifndef _C_H
#define _C_H
//#include "a.h"
//#include "b.h"

struct StructB;
typedef StructB B;

struct StructA;
typedef StructA A;


void C_f1(A* a, B* b);
void C_f2(A* a, B* b);
void C_f3(A* a, B* b);

#endif

Файл main.c

#include "a.h"
#include "b.h"
#include "c.h"

int main() {
   //some function calls...
   return 0;
}

Подобный код у меня скомпилировался. Как оказалось, только на GCC 4.7. На другой машине с GCC 4.4, компилятор выдывал ошибки про повторные typedef'ы (действительно, typedef'ы в a.h и c.h, включенных в main.c повторяются). Покумекав, придумал свой вариант, который скомпилировался. Каждый из заголовков разбил на два: в первом - описание структуры и прототипы функций, а во втором - только forward definition структуры и typedef. Второй #includ'ится в другие заголовочные файлы, а первый - во все остальные. Результат, опять таки, ниже:

Файл a.h

#ifndef _A_H
#define _A_H
#include "a_short.h"
#include "b_short.h"

struct StructA {
   int a;
   int b;
   int c;
}; 

void A_f1(A* a, B* b);
void A_f2(A* a, B* b);
void A_f3(A* a, B* b);

#endif

Файл a_short.h

#ifndef _A_SHORT_H
#define _A_SHORT_H

struct StructA;
typedef StructA A; 

#endif

Файл b.h

#ifndef _B_H
#define _B_H
#include "a_short.h"
#include "b_short.h"

struct StructB {
   int a;
   int b;
   int c;
}; 

void B_f1(A* a, B* b);
void B_f2(A* a, B* b);
void B_f3(A* a, B* b);

#endif

Файл b_short.h

#ifndef _B_SHORT_H
#define _B_SHORT_H

struct StructB;
typedef StructB B; 

#endif

Файл c.h

#ifndef _C_H
#define _C_H
#include "a_short.h"
#include "b_short.h"

void C_f1(A* a, B* b);
void C_f2(A* a, B* b);
void C_f3(A* a, B* b);

#endif

Файл main.c

#include "a.h"
#include "b.h"
#include "c.h"

int main() {
   //some function calls...
   return 0;
}

Собственно, здесь typedef'ы защищены #ifndef'ами и поэтому появляются в коде только один раз и ошибок не возникает.

Хотелось бы узнать, как обычно решаются подобные проблемы. Варианты, которые удалось придумать мне:

  • То, что получилось у меня с третьего раза. (Количество заголовочных файлов возрастает)
  • Не использовать typedef'ы, использовать forward declaration (второй вариант). (В принципе, typedef'ы используются чтобы укоротить названия типа, можно обойтись и без этого)
  • Забить на старый компилятор (плохая идея, да и не знаю, как в стандарте C обстоят дела с множественными typedef'ами)
  • Слить всё в один заголовочный файл (в этом примере может и прокатит, но в более сложных случаях будет выглядеть страшно)
  • ???

Спасибо всем, кто дочитал до конца, будет здорово, если кто-нибудь что-нибудь посоветует.

 

gagarin
()

Сглаживание в браузере

Поставил LCD пакеты c убунтовскими патчами так, как это описано здесь. Почти всё нравится, но в файрфоксе на некоторых страницах русские и английские буквы сглаживаются по разному (а точнее английские не сглаживаются совсем). Вот картинка с примером: http://i.imgur.com/4BtfV.png (Страница: http://bkmz.org/322/qutim-meta-archlinux). В Konqueror такая же ерунда. Как побороть это? Пробовал разные конфиги с вышеуказанной странички в вики, но не помогает.

 ,

gagarin
()

Видео на youtube

Возникает такая проблема: при просмотре видео на ютубе, когда видео медленно грузится и я досматриваю его до момента докуда оно загрузилось (когда красная полоска прогресса обгоняет серую, короче), то вместо того чтобы догрузить остаток видео, ютуб делает вид, что видео закончилось (то есть показывает мне похожие видео, либо предлагает повторить). Использую Firefox, Flash 11.2 r202., opensuse 12.1. Грешил на адблок в огнелисе, но его отключение не помогло.

 ,

gagarin
()

Хочется странных стрелок

Можно ли в tikz сделать стрелки, примерно как на этой картинке? Если да, то как?

 ,

gagarin
()

Убегающие часы при перезагрузке

Сегодня внезапно обнаружил, что после перезагрузки часы в моей openSUSE 11.4 стали убегать на час вперёд (каждая перезагрузка - +1 час). Всякие NTP отключены, аппаратные часы установлены по локальному времени Обнаружил после того, как перезагрузил компьютер в 00:38 по московскому времени (Свежие апдейты таймзон поставлены на тот момент не были, да и временя было ещё раннее для ныне отменённого перехода на зимнее время (он в 3 часа ночи должен был случиться)). Сначала удивился, перевёл часы обратно, поставил апдейты таймзон. Но проблема осталась, каждую перезагрузку часы убегали. Пробовал удалять /etc/adjtime, не помогало. Потом в ясте поставил галочку «Аппаратные часы установлены в UTC» (уже было собрался перевести аппаратные часы в UTC, хотя потом бы пришлось решать проблемы с часовыми поясами в виндовс, которая в дуалбуте), перезагрузился и (о, чудо) часы не перевелись. Ради эксперимента убрал галочку и снова перезагрузился и (о, чудо #2) часы снова перевелись.

В связи с этим вопрос: что вообще произошло: откуда взялась проблема и куда она делась? Сейчас всё работает, но, по-моему, раньше подобными способами решались проблемы в другой ОС от Microsoft.

gagarin
()

[bug]Изменение регистрации и пароль

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

Там же, напротив поля «Новый пароль» имеется инструкция "(не заполняйте если не хотите менять)".

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

P.S. Если кто надумает воспроизвести, то два раза пытаться не стоит, потому как сбрасывать пароль можно только раз в неделю.

 

gagarin
()

Firefox и цвета картинок

Вот картинка У кого-нибудь есть идеи, почему может такое происходить? Да, на картинке запечатлены Firefox 4 RC и Chromium 12.

Попробовал ещё на этой картинке, она отображается правильно.

gagarin
()

[копирасты]Кировский районный суд Ростова-на-Дону оштрафовал группу Deep Purple

 

gagarin
()

[боян?][1 апреля?][кризис] Юлмарт

Знаете ли вы, что Юлмарт (ранее известный как Ультракомп) теперь торгует ещё и продуктами. Пруф: http://ulmart.ru/cats/54218.html

 

gagarin
()

[wine] Банк-клиент Балтийского банка

Собственно с тех пор, как эта жлобская конторка стала брать деньги за запрос остатка на счёте с банкомата, я заинтересовался услугами интернет банкинга (он бесплатен). Однако не тут то было, софтинка для банкинга у них только вендовая. В связи с этим возникает вопрос: будет ли она работать под wine? Подскажите, кто пользовался. Есть ли смысл топать в банк и подключать услугу?

 

gagarin
()

C, fortran, gcc, двумерный массив

В общем имеется такая функция на фортране.

      SUBROUTINE DECOMP(NDIM,N,A,COND,IPVT,WORK)
C
      INTEGER NDIM,N
      REAL A(NDIM,N),COND,WORK(N)
      INTEGER IPVT(N)
C     Дальше собственно функция
      END
Как видно, A - двумерный массив. Подскажите, как правильно объявить прототип функции на C и в каком виде нужно передавать ей массив из функции на C? (вся сложность для меня заключается в двумерном массиве, остальные переменные и одномерный массив я передать могу, собрать программу могу)

gagarin
()

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