LINUX.ORG.RU

Сообщения Corey

 

Вопрос по структуре проекта и автоматизации сборки

Выпало на мою долю намедни создать некую демо-версию embedded проекта, включающего в себя необходимость:

  • патчить и собирать U-Boot, а также загрузочные скрипты для него;
  • патчить и собирать linux kernel;
  • собирать свой модуль ядра;
  • собирать пачку своих юзер-спейс утилит для этой железки;
  • все это добро вместе со своими инит-скриптами и существующей 3rd-party фс запаковывать в рамдиск и
  • деплоить это добро на самой железке.

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

Первое, что пришло на ум - это хранить все сторонние исходники (kernel, u-boot), тулчейн и rootfs в отдельной расшаренной для всех директории. При сборке проекта - копировать, например, исходники ядра в директорию сборки, поверх него накладывать свои патчи и собирать. Артефакты в виде модулей, собранных утилит и прочих инитскриптов складывать в созданную для этой цели копию rootfs, которую потом запаковать. Так же поступать и с бутлоадером.

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

Кто имеет опыт работы в таких проектах? Как это делается по-взрослому? Может, я чего-то недопонимаю по поводу субрепозиториев? Или чего-то недопонимаю в принципе?

Corey
()

Функция макросъемки в фотоаппаратах

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

В зеркалках с автоматизацией макросъемки может быть все сложнее, поскольку все упирается в конкретный объектив, но ведь мыльница должна знать и уметь все делать на автопилоте.

 , ,

Corey
()

Крышка объектива на шнурке

Всем известно, что ЛОР славится своими фотографами и богатыми традициями фотосъемки. Отсюда вопрошаю вразумить меня по поводу, казалось бы, очевидной вещи: почему съемные крышки объективов по дефолту не снабжают шнурками, чтобы их не приходилось постоянно распихивать по карманам? Это ведь так просто и так очевидно. Что делать? Кто виноват?

 ,

Corey
()

Газификация в XIX в.

Вчера, наконец, нашел время посмотреть «The Elephant Man», и вот какие мысли навеяла мне картина. Если Линч действительно старался передать дух Лондона XIX века, то, значит, в те времена газом освещали все, на что только хватало фантазии. Я раньше думал, что такой способ использовался лишь непродолжительное время и лишь для уличного освещения, но раз пошла такая пьян масштабы этой затеи оказались намного больше, встает закономерный вопрос: неужели в те годы технология была уже настолько развита, что освещать жилые дома, гос. учреждения, больницы и просто какие-то сомнительные подвалы газом было безопасно? И неужели производство газа было настолько эффективным, что мегаполисы могли позволить себе такую роскошь? Ну и традиционная просьба накидать сюда литературки по сабжу.

 , ,

Corey
()

Постапокалипсис с человеческим лицом

Уважаемые лорчане, пришла вот в голову идея следующего содержания. Допустим, нашу планету единоразово и мнгновенно постигает несчастье (вирус/инопланетяне/происки ZOG), и во всем мире перестают существовать люди с возрастом > N лет, и в нашем мысленном эксперименте варьировать можно только его.

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

Задача - выяснить, как дальше будет развиваться общество на Земле; какие сферы человеческой деятельности останутся практически незатронутыми, в каких изменения примут катастрофический характер, и т.д.

Если на вскидку, вот какие были изначальные мысли:

  • N = 50. Произойдут существенные изменения в политике и международных отношениях, ведь, как видится мне, большинство власть имущих находятся именно в этом диапазоне и обладают наибольшим опытом и исторически сложившимся набором предрассудков и консервативных взглядов. Экономическая ситуация при этом просесть не должна, поскольку место пропавших займут молодые и более агрессивные акулки. Культура, наука - ???
  • N = 30. Исчезают люди, составляющие костяк и движущую силу экономик. Производства лишаются опытной рабочей силы, образование лишается профессоров. Но вроде как имеем резерв молодых, с образованием и как минимум начальными навыками владения профессиями.
  • N = 25. Исчезают люди, имеющие мало-мальские практические знания профессий. Начнет ли происходить регресс экономики? Что произойдет с международными отношениями? Культура в этом плане кажется самой стойкой - ведь множество гениальных музыкантов/художников/поэтов к этому возрасту чувствуют себя уже вполне уверенно. Также остается впечатление, что общество все еще будет сохранять современные очертания в плане устройства.
  • N = 18. Не осталось никого с высшим образованием, только библиотеки полные учебников.
  • N = 14. Остались люди, уже способные к физическому труду, но не обладающие даже средним уровнем образования. Будет ли такое общество поощрять дальнейшее образование? Будут ли попытки и впредь получать знания из учебников и книг - ведь уже очень остро встает вопрос о том, что покушать.
  • N = 10. Выживет ли оставшееся человечество? Не случится ли такого, что хоть какие-то признаки организованного общества останутся лишь в тепрешних странах с тяжелым экономическим положением, где-нибудь в Африке, Индонезии итд?

ЛОР богат своими аналитиками, так давайте же выясним всю правду об этом вопросе! Также было бы интересно узнать, существуют ли книги/фильмы на подобную тематику?

 , ,

Corey
()

«Reserved for future use»-синдром

В последнее время приходится много работать с TCP/IP, в документации к которому наблюдается повышенная концентрация «reserved» полей, адресов, флагов итд. Помнится, винапи тоже отличалось чем-то подобным с зарезервированными аргументами, и порой ситуация доходила до полнейшего абсурда.

Чем руководствуются разработчики, сотворяя такое? Действительно ли игра стоит свеч? Настолько ли это хорошее средство для обеспечения обратной совместимости? Кто-нибудь знает истории успеха таких reserved вещей, или это лишь паранойя и хронический overengineering разработчиков?

 ,

Corey
()

[драма] [девушки ЛОРа] местным олдфагам

Кто-нибудь помнит из здесь присутствующих, что за события разыгрались в далеком 2003 году? ЛОР не достоин Насти!

Читаю тред, плачу до слез, сотрудники на меня уже косо смотрят :)

 

Corey
()

[javadoc] [code conventions] @author

Как вы относитесь к тэгу @author, используете ли его при написании кода?

Corey
()

[IntelliJ Idea] [svn] blame

Как в IntelliJ Idea можно получить аннотации того, кто изменял/создавал строки в коде?

 ,

Corey
()

Менеджер транзакций

Кто-нибудь знает готовое решение для организации менеджера транзакций между множеством application-серверов, которые обращаются к одной базе данных? В серверах крутится Java+Spring+Hibernate. Можно ли как-нибудь приспособить спринговский механизм для работы странзакциями к функционированию на распределенной системе клиентов?

Corey
()

Firefox тормозит при запуске

В последнее время стал замечать, что при запуске firefox начинает интенсивно грузить процессор и читать/писать что-то на hdd в течение первых 20-25 секунд (мигает led-индикатор, хрустит hdd). Причем во время этой процедуры интерфейс браузера практически полностью замерзает. После все восстанавливается в нормальный режим.

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

Firefox 3.6.12. Ubuntu 10.10 (то же было и на 10.04 до апгрейда).

Corey
()

[ЖЖ][opensource]Игнатов. Эффективное использование GNU Make

После поисков pdf-версии сабжа решил сделать себе книжицу самостоятельно, скопипастив содержимое отсюда.

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

 ,

Corey
()

[LaTeX] Диаграммы иерархии ФС

Подскажите, пожалуйста, есть ли для latex какое-нибудь готовое решения для построения диаграмм иерархии файловой системы вида:

 Level 1
    |
    |-- Level 2
    |     |
    |     |-- Level 3
    |     +-- Level 3
    +-- Level 2

 

Corey
()

[gcc][libconfig] указатель на указатель

Компилирую такой кусок кода:

#include <libconfig.h>

int main() {
/* skipped */

char *interface;
if ( !config_setting_lookup_string(setting, "interface", &interface) )
   fprintf(stderr,"init: can't find interface\n");

}

и получаю ворнинг такого содержания:

test.c:62: warning: passing argument 3 of ‘config_setting_lookup_string’ from incompatible pointer type

в libconfig.h говорят, что

extern LIBCONFIG_API int config_setting_lookup_string( const config_setting_t *setting, const char *name, const char **value);

ЧЯДНТ?

 

Corey
()

[клиент-сервер] архитектура программы

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

Пока что на ум пришло выделять отдельный поток для каждого из этих устройств и в нем производить вычисления / организовывать связь по ttyS*. Сразу же за этим появляется вопрос по поводу передачи управляющих данных в отдельные треды. Это надо как-то в главном цикле программы обрабатывать приходящие данные, определять идентификатор устройства и уже потом давать знать соответствующему потоку, что он может забрать посылочку? Если так, что что лучше использовать для передачи информации потоку? пайп, юникс сокет?

Corey
()

[ttyUSB0] вызов read()

ПК соединен с контроллером через переходник USB->serial. По определенному сигналу контроллер швыряет на последовательный порт около 200 байтов (но каждый раз разное количество). Пытаюсь их получить следующим образом:

/* ..здесь какой-то код... */
if (!portOpen()) return 0;
if ((count=portScan(points, maxlen)) <= 0) {
	fprintf(stderr, "getData: Таймаут ожидания данных\n");
	portClose();
	return 0;
}

инициализация выглядит вот так:

#define DEVNAME "/dev/ttyUSB0"

static int _openPort(void)
{
	int fd;

	fd = open(DEVNAME, O_RDWR | O_NOCTTY | O_NDELAY);
	if (fd == -1) {
		fprintf(stderr, "_openPort: can't open %s\n",DEVNAME);
	}
	else
		fcntl(fd, F_SETFL,0);
	
	return fd;
}

static struct termios _initPort(int fd)
{
	struct termios options, oldopt;
	tcgetattr(fd, &oldopt);

	bzero(&options, sizeof(options));
	
	options.c_cflag |= (CLOCAL | CREAD | B9600);
	options.c_cflag &= ~CSIZE;
	options.c_cflag |= CS8;

	options.c_iflag = 0;
	options.c_lflag = 0;
	options.c_oflag = 0;

	options.c_cc[VTIME] = 10; /* 1 second */
	options.c_cc[VMIN] = 0;
	
	tcflush(fd, TCIFLUSH);
	tcsetattr(fd, TCSANOW, &options);

	/* этот участок необходим по схемотехническим требованиям */
	int rts = TIOCM_RTS;
	int dtr = TIOCM_DTR;

	ioctl(fd, TIOCMBIC, &rts);
	ioctl(fd, TIOCMBIS, &dtr);

	return oldopt;
}

static void _closePort(int fd)
{
	close(fd);
}

static int serial;
static struct termios oldopt;

int portOpen(void)
{
	if ((serial=_openPort())!=-1) {
		oldopt = _initPort(serial);
		return 1;
	} 
	return 0;
}

void portClose(void)
{
	if (serial != -1)
		tcsetattr(serial,TCSANOW,&oldopt);
		_closePort(serial);
}


int portScan(void *buf, int count)
{
	if (serial == -1) { 
		fprintf(stderr, "portScan: port is not opened!\n");
		return 0;
	}

	return read(serial, buf, count);
}

Проблема в том, что вызов portScan(points, maxlen) возвращает всегда только 4 байта. Сказать, первые ли это 4 байта, я не могу. Но если после обращения read(...) сразу же вызвать read еще раз, то успешно прочитываются еще 4 байта.

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

Corey
()

C extern variables

Собственно, возник следюущий вопрос: есть два файла *.c — main.c и notmain.c, а также заголовочный header.h.

notmain.c:

int var;
void initVar() { var = 5; }

main.c:

#include <stdio.h>
#include "header.h"

int main()
{
	initVar();
	var++;
	printf("var: %d\n", var1);
}

При этом выводится ответ 6 независимо от того, каким образом переменная var объявляется в header.h:

header.h:

int var; /* или extern int var */
void initVar();

единственное различие заметно при вызове nm для main.o:

для случая extern int var:

nm main.o
         U initVar
00000000 T main
         U printf
         U var

для объявления int var без extern:

 nm main.o
         U initVars
00000000 T main
         U printf
00000004 C var

Есть ли подвох?

Corey
()

[Acer Aspire One D250] Ethernet controller

Собственно, сабж: недавно был приобретен нетбук Acer Aspire One D250 с винХР. Виндоуз была благополучно снесена, на ее место поставлен Arch-2009.08.

После установки, lspci определил сетевые устройства:

# lspci -v

01:00.0 Network controller: Atheros Communications Inc. AR9285 Wireless Network Adapter (PCI-Express) (rev 01)
	Subsystem: Foxconn International, Inc. Device e016
	Flags: bus master, fast devsel, latency 0, IRQ 16
	Memory at 57100000 (64-bit, non-prefetchable) [size=64K]
	Capabilities: [40] Power Management version 3
	Capabilities: [50] MSI: Enable- Count=1/1 Maskable- 64bit-
	Capabilities: [60] Express Legacy Endpoint, MSI 00
	Capabilities: [100] Advanced Error Reporting
	Capabilities: [140] Virtual Channel <?>
	Capabilities: [160] Device Serial Number 00-15-17-ff-ff-24-14-12
	Capabilities: [170] Power Budgeting <?>
	Kernel driver in use: ath9k
	Kernel modules: ath9k

03:00.0 Ethernet controller: Attansic Technology Corp. Atheros AR8132 / L1c Gigabit Ethernet Adapter (rev c0)
	Subsystem: Acer Incorporated [ALI] Device 022f
	Flags: bus master, fast devsel, latency 0, IRQ 29
	Memory at 55000000 (64-bit, non-prefetchable) [size=256K]
	I/O ports at 2000 [size=128]
	Capabilities: [40] Power Management version 3
	Capabilities: [48] MSI: Enable+ Count=1/1 Maskable- 64bit+
	Capabilities: [58] Express Endpoint, MSI 00
	Capabilities: [6c] Vital Product Data
	Capabilities: [100] Advanced Error Reporting
	Capabilities: [180] Device Serial Number ff-f2-d5-29-00-23-5a-ff
	Kernel driver in use: atl1c
	Kernel modules: atl1c

Интерфейсы:

# ifconfig -a

eth0      Link encap:Ethernet  HWaddr 00:23:5A:F2:D5:29  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
          Interrupt:29 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

wlan0     Link encap:Ethernet  HWaddr 00:26:5E:58:03:E4  
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

wmaster0  Link encap:UNSPEC  HWaddr 00-26-5E-58-03-E4-00-00-00-00-00-00-00-00-00-00  
          [NO FLAGS]  MTU:0  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

после подключения кабеля от ADSL-модема в eth0 начинает появляться множество ошибок:

# ifconfig

eth0      Link encap:Ethernet  HWaddr 00:23:5A:F2:D5:29  
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:4294967293 errors:4294967278 dropped:4294967290 overruns:4294967293 frame:4294967281
          TX packets:4294967293 errors:4294967284 dropped:0 overruns:4294967293 carrier:4294967291
          collisions:4294967281 txqueuelen:1000 
          RX bytes:4294967293 (4095.9 Mb)  TX bytes:4294967293 (4095.9 Mb)
          Interrupt:29 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

Попытка настроить и поднять pppoe-соединение ни к чему не приводит.

pppoe-start
................TIMED OUT

при этом в /var/log/errors.log появляется запись

ep 26 19:21:26 archi pppoe[1807]: Timeout waiting for PADO packets

После ребута устройство вообще перестает определяться в lspci, а попытка ifconfig eth0 up заканчивается руганью:

eth0: unknown interface: No such device

В процессе многочасового гугления были найдены следующие ссылки:

http://forums.linuxmint.com/viewtopic.php?f=49&t=31963

http://forum.ubuntu.ru/index.php?topic=60167.0

https://bugs.launchpad.net/ubuntu/+bug/363691

http://forums.remote-exploit.org/newbie-area/25490-aspireone-d250-no-network.html

Предложенное решение с драйвером AR81Family не срабатывает. Скачиваю, собираю, записываю в /etc/rc.conf:

MODULES(atl1e !atl1c)

Все равно железка не подает признаков жизни в lspci.

Где-то встречал, что с ядром старше, чем 2.6.30 таких проблем не было. Сейчас попробую установить Lenny-netinstall. Если что-нибудь получится — отпишусь.

Corey
()

emacs-snapshot

Установил себе emacs-snapshot из deb http://emacs.orebokech.com lenny main. Сабж вот в чем: команда

ls /usr/bin | grep emacs
выдает список

b2m.emacs-snapshot
ctags.emacs-snapshot
ebrowse.emacs-snapshot
emacs
emacsclient
emacsclient.emacs-snapshot
emacs-snapshot
emacs-snapshot-gtk
emacs-snapshot-x
etags.emacs-snapshot
grep-changelog.emacs-snapshot
rcs-checkin.emacs-snapshot

Подскажите пожалста, чем отличается emacs от emacs-snapshot и emacs-snapshot-gtk и emacs-snapshot-x, а также emacsclient от emacsclient.emacs-snapshot?

Corey
()

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