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 отличается от запуска руками?

По мотивам своих предыдущих тем сотворил чудо-юдо болотное на 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 отличается от мануального запуска

 , crapdev,

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 подписка на новые темы