LINUX.ORG.RU

Сообщения minakov

 

Структуры - передача оных в функцию и обратно.

 , ,

Доброго времени суток! Страшно извиняюсь, но не смог подобрать под нижеописанное верный запрос в поисковиках...

#include <stdio.h> 

typedef struct newfile{
	 int *set1, *test;
} Settings;

void testing(Settings *Set){
	Set->set1 = 1;
	Set->test = 3;
};

void main(void){
	Settings *mystr;
	testing(mystr); // &mystr, mystr
	printf("%d, %d\n", mystr->set1, mystr->test);
}

Как видно из кода - хочу в функцию передать структуру, забить в нее данные и вернуть без мусора. Однако, либо сегфолт, либо не компилится. Этот вариант нагляден, но не работает, хоть и собирается. Подскажите пожалуйста, как разрулить видимости. Спасибо, товарищи!

minakov
()

Как убрать возможность потери фокуса GTK приложения?

 , ,

Здравствуйте! Предположим, что компьютером пользуются детишки, которые тыкают все клавиши подряд, включая знак монополистической решетки, альты и табы. И я написал для них простенькую gtk программку для зомбирования. Она понимает определенную комбинацию клавиш для выхода, а остальные системные(убунту прециз) должна забыть. Как сохранить постоянный фокус окошка и заблокировать все альты и меты? Спасибо, товарищи!

minakov
()

SDL infinite sprite

 , ,

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

minakov
()

Прием с последовательного порта

 ,

void open_port(void){
	int fd;
	if ((fd = open(DEVICE, O_RDWR | O_NOCTTY | O_NDELAY)) == -1){
		perror("Unable to open port");
	} else {
		int n = write(fd, "Humpty Dumpty sat on a wall\r", 28);
		if (n < 0){
			fputs("write() of 28 bytes failed!\n", stderr);
		}
	}
	close(fd);
}

Как самый простой пример передачи без настроек всяких работает превосходно, а вот со чтением также просто не выходит - примеры в сети кишат «goto»[да и while(1), наверное - не совсем правильно?], а Serial Programming Guide for POSIX Operating Systems даже примеров с read() не содержит (вольные переводы оного содержат не только read(), но и кучу запутывающей информации).

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

minakov
()

Чем запуск через cron отличается от запуска руками?

 , crapdev,

По мотивам своих предыдущих тем сотворил чудо-юдо болотное на C, по сравнению с которым меркнут параллельные треды, девелоперы и тестеры начинают бледнеть и покрываться испариной. Но работает. И вот интересная штука вылезла - если я ручками

$./modemdaemon >> status/daemon.log
делаю, то усё окей^
[01.04.13 23:47:31] Last IP: 20.20.20.20. Current IP: 21.21.21.21. Gateway: 8.8.8.8                                                                       
        [01.04.13 21:47:36] Remote server saved your IP!

/* first line == printf("%s Last IP: %s ...", ...);
second line == [curl]->[remote host] == <?php echo... ?> */
НО!
*/10 * * * * /server/modemdaemon >> /server/http/status/daemon.log 2>&1
Мне показывает чуть иначе:
	[01.04.13 19:10:04] Remote server saved your IP!
[01.04.13 21:10:01] Last IP: 21.21.21.21. Current IP: 22.22.22.22. Gateway: 8.8.8.8
Внутри демона(там тупо printf()-ов натыкано) ничего сложного - system(«curl -s -d 'abra=cadabra&syaski=masyaski' http://remote.host"); да пара if-ов чтобы раз в час в лог писался текущий IP, при смене IP писался предыдущий и текущий и шлюз, а также curlился PHPsharedhostingDIYdyndns скрипт, а если шлюз провайдера завис в 0.0.0.0, то рестарт модема. Вот. Спасибо если не откажетесь объяснить, чем же запуск в cron отличается от мануального запуска

minakov
()

angle() для прямой. Как?

 , , ,

Предположим, что у меня есть две точки, а между ними - прямая. Допустим, что мне нужно посчитать угол относительно, например, оси X. Как это сделать стилистически/математически верно?

Вот так:

/-------\ (pt1.x=2;pt1.y=2)
| *     | 
|  \    | 0______________>
|   \   | |  X
|    \  | |Y
|     * | v
\_______/ (pt2.x=6;pt2.y=6)

printf("%3d degrees\n", abs(angle(pt1, pt2)));

~$  45 degrees
~$

Псевдокод, питон, мат.функция, на пальцах, все что вам угодно, спасибо!

minakov
()

Указатель на указатель массива указателей

 

Правильно говорят, что указатели в С и наследниках, для начинающего, выглядят чем-то средним между регекспами и матаном. И если с регекспами я начинаю практически сталкиваться и чуток понимать, то до ваших интегралов мне профтехобразование не позволяет доползти. Так вот, этот ваш Си - на самом деле довольно несложен, так как логичен, но с указателями у меня вышел небольшой разлад. Ну не понимаю как оно внутри работает, как к памяти обращается. Подскажите, пожалуйста, кому не лень...

// Из K&R:
int х = 1, у = 2;
int *ip;    /* ip - указатель на int */
ip = &x;    /* теперь ip указывает на x */
y = *ip;    /* y теперь равен 1 */
*ip = 0;    /* x теперь равен 0 */
В чем смысл указателей, если судя по примеру я могу сделать и y = x с тем же успехом, а дополнительные *ip как посредники лишь уменьшат читаемость?

UPDATE: Самое главное еще забыл добавить - зачем к этой кашке еще и «**»?

UPDATE++: посылаю комментаторам доброе слово, без них вопрос затянулся бы

minakov
()

Глючит ли это DNS?

 , ,

64 bytes from linux.org.ru (217.76.32.61): icmp_req=2 ttl=51 time=91.0 ms
... задержка в пару секунд ...
64 bytes from 217.76.32.61: icmp_req=3 ttl=51 time=90.7 ms

... далее все как обычно

Вот такое(не только ЛОР) вижу часто. Еще чаще наблюдаю картинку в браузере - ввод адреса, долгое(три-четыре секунды) ожидание, ответ. Раньше было все окей, потому грешу на провайдера. Вопрос: Виноват ли в этом загруженный DNS сервер провайдера, и возможно ли, правильно настроив локальный DNS сервер ускорить в раз́ы отдачу адресов, да и удобство обрести? Если можно, на пальцах, я не уста́ю повторять, что новичок практически во всем... Спасибо за поддержку и потраченное время!

minakov
()

Однострочник для визуализации состояния модема

 , , ,

Наваял тут спросонья ужас, летящий на крыльях ночи:

lena@desktop-lena:~$ curl -d "username=admin&password=admin&exec_cgis=login_CGI" http://192.168.1.1/cgi-bin/login.exe && curl -G "http://192.168.1.1/index.stm?title=Status-Modem" | sed -e 's/<\/.*>//g;s/.*<b>$//g;s/<s.*$//g;s/^.*if.*$//g;s/^[ \t]*//g;s/^doc.*$//g;s/<.*>//g' > test.txt
И после него выхлоп таков:
...
some_tech_info
integer





another_info
another_integer






...

т.е. остались всякие 0x0D и 0x0A, как показывает вот этот послецензурный файлик: http://paste.ubuntu.com/1504376/ http://rghost.ru/42792089

Так вот, дорогие мои любители однострочников в ночь перед Рождеством, как убрать все лишние пробелы и переводы строк наиболее элегантным способом?

Ну а юные тролли могут сразу переключиться с моих кодоопусов на </ront> и иже с ним от команды Linksys

minakov
()

Сокеты или сигналы для завершения mplayer -slave в GTK+ окошке

 , ,

mplayer -slave -really-quiet -noconsolecontrols -nomouseinput -nocache -vf scale=1366:768:0:0 -wid %d FILENAME - так я его запускаю, отрисовывая в GTK контейнере, а вот как завершить без неправильного system(«killall mplayer»); X 2 не понимаю. К примеру, я загоняю список файлов, которые по сигналу от нажатия клавиши поочередно должны показываться в окошке проигрывателя, причем нужно как раз завершить процесс mplayer'а, ну а потом снова запустить, чтобы избежать холостой работы при зависании проигрывателя и в силу прихоти полета мысли покорного слуги. В сети находил несколько упоминаний, что system(); это плохой тон и нужно использовать сигналы плеера, но я отрубил флагом управление и потому реализация нужна такая вот... Спасибо за добрые и полезные советы!

minakov
()

Как заставить netcat слушать порт постоянно?

 

Лень поднимать сервер, или писать обертки, проверяющие наличие PID для netcat, а дебажить программы, отсылающие GET запросы, постоянно запуская руками nc неприятно. Да и будущим поколениям сгодится опыт людей, дошедших до манов все-таки...
Запускаю так: clear && echo '1' | nc -l -p 8008 -c -vv
Как запускать, чтобы после получения запроса он не завершал работу, а ждал ^C например?
Спасибо за поддержку!

minakov
()

Игры под контроллер(джойстик, кхм)

Какие хорошие вещи акромя Gens и Fceux могут по максимуму использовать удобство этого изобретения? Контроллер от неизвестной мне до этого фирмы Trust с шестью кнопками справа и крестовиной(а-ля SMD, но с двумя шифтами в торце). Работает исключительно, не считая глюка с крестовиной(ненавижу когда нажатие одной кнопки может так легко другую зацепить[там 8 позиций же]). Спасибо за советы по выбору игры к ближайшим выходным

minakov
()

А больше ли это скорости света?

 , ,

Посмотрел бредовый фильм «Горизонт событий» от Пола Андерсона, где кишки, ад и содомия. Так вот, там шестерёнки от Биг-Бена раскручивали пространство-время и передвигали корабль(ну или вселенную) со скоростью, превышающую скорость света. А мне интересен другой момент, не противоречащий ОТО - представим, что из пункта A в пункт B направляется гужевая повозкаобъект X, а из пункта B в A - Y. У обоих скорость чуть менее скорости света. Относительно друг друга у них практически скорость света X 2. И вот сам вопрос - галактики двигаются, звезды плывут, атомы бороздят бескрайние просторы. Скорость света откуда замеряется, точнее относительно чего? Ну вот галактика плывет туда -->, а я фонариком свечу туда же, плюс Земля по орбите цоп-цоп в том же направлении, и получается как, скорость в вакууме == константа и мой свет из фонарика чуть притормаживает на выходе, или наоборот, свет течет быстрее и если шевелить им туда-сюда, то он ведет себя по-разному? И если на X включить дальний свет, то для Y он будет выглядеть как литр света, собравшийся у дальней точки полусферы рефлектора?

Красочнее описать не могу, так как даже не гуманитарий, но жуть как интересно

minakov
()

Почему какое-то «echo» быстрее моей «superputc.c»?

 ,

Написал принципиально крутую программу типа echo, но без парсинга кавычек и управляющих аргументов - т.е. простой putc(argv[1], stdout); Так вот, при вызове time echo -e «\x41\x42» везде нули, а у меня с одной функцией - real 0m0.001s. ЧЯДНТ?
В исходниках coreutils вроде также выводятся символы из аргументов echo, но она даже не напрягается...

minakov
()

Почему на 64 битах 32битные бинарники запускаются?

 , ,

в виртуалке собрал небольшую программу на си, закинул ее на лаптоп с x86_64 арчем и запустил - все нормально отработало, хотя file file.exe показывает, что бинарник-то под 32 бита заточен. И вот вопрос - это потому что я для разработки и жизни кучу либ под 32 бита понаустанавливал, или все глубже, и для хелловорда принципиальной разницы нет?

minakov
()

Сколько здесь зачеркнутых пользователей?

 

Просто интересно, сколько регистрантов получили серую ленточку? Вдруг кто-то ведет логи, или имеет доступ к базе, да поделится интересной информацией. Вопрос праздный, да и бесполезный, но ковыряя форум на наличие полезной информации, часто встречаю зачеркнутых. Вот и стало любопытно. Спасибо.

minakov
()

Массив? Структура? Куча ифов или переключатели?

 ,

Прелюдия: static int argue[] = {111, 20, 30, 40, 50, ..., 250, 260};

Предположим, написал я программу. Она смотрит на аргументы и выполняет с ними определенные действия. Например:

./mybestprog.exe --argue 50
должен выводить мне 4, а я пока додумался только до массива, в котором находится вышеприведенный список:
./mybestprog.exe --argue 4
50
. И я могу узнать только значение, а не его индекс, хотя мне нужна инверсия здесь, либо список какой, по требуемому значению показывающий другую циферку. КАК? Как вы бы сделали это?

minakov
()

Как обычно делается CGI на ANSI Си?

 , , ,

Допустим, мне нужен демон, висящий на порту и ждущий сообщений по сети, умеющий отправлять команды в ком порт. Железо не так интересно - там макс232 и атмега с прерываниями. Так вот, на перле ничего сложного нет, скрипт работает(правда через system(«отправляем hex в ком»)) Но вот с Си небольшая заморочка - хочется сделать правильно, а как - не знаю. По сути, интересен только принцип, код-то я напишу. Вот как бы вы обработали пару команд с удаленного устройства через сеть на Си?

minakov
()

Шорткат на ubuntu для perl скрипта с GUI

 , ,

написал скриптик на perl с tk, красиво показывающий сервер с помощью mplayer и камеры. Поставил специально для этого убунту, начал создавать комбинацию для быстрого запуска скрипта и результат: в арче с кедами по alt+F2 и вписыванию полного пути к скрипту без точек и всяких отсылок к интерпретаторам(в шапке стоит #!/usr/bin/perl) он замечательно открывается и работает, а вот в убунту ни один из вариатов не работает, ни по alt-F2(думаю, что запустив по alt-f2, запустится и вообще тут ->>>), ни по комбинации клавиш:

gnome-terminal -e /path/to/scr.pl
/usr/bin/perl /path/to/scr.pl
/path/to/scr.pl
./path/to/scr.pl
и даже создав отдельный bash скрипт с путем к перлскрипту, ничего не вышло - терминал ругается на то, что не может создать дочерний процесс. Подскажите пожалуйста, как сделать шорткат в последней убунте к перл скрипту с tk интерфейсом.

minakov
()

saa7134 - нет звука ни с PCI, ни с AUDIO OUT

 , ,

На руках карточка от фирмы, выпускающей матрацы и бассейны. Видео - отменное, каналы находятся, частоты от и до без глюков меняются в любом приложении для просмотра ТВ - от mplayer до tvtime и xawtv. Но есть одно но: с выхода карточки звука нет, как нет и после загрузки модуля saa7134-alsa. Более того, dmesg сообщает следующее:

saa7130[0]/alsa: Typhoon TV+Radio 90031 doesn't support digital audio
(оговорка - карточка intex, но более-менее сносный сигнал только в такой комбинации: card=13 tuner=79. И не спрашивайте как я ее нашел.)

А чтобы посмотреть на полный выхлоп после загрузки модуля - http://pastebin.com/M1qtSUff

При modprobe на короткий промежуток времени колонки, подключенные к аудиовыходу жутко кряхтят меньше секунды и затихают до следующей выгрузки/загрузки. И вопрос:
Как включить звук?
Насколько я понял, этой фигней управляет I2C, но тут мои познания сомневаются и заканчиваются. Помогите запустить эту каку. Спасибо!

minakov
()

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