LINUX.ORG.RU

Сообщения kmeaw

 

Ищу компактную проводную белую клавиатуру

Собираю компьютер для запуска DOS. Ищу компактную (без цифрового блока, чтобы можно было положить сверху на лежачий корпус, и она не свисала с него) проводную (желательно PS/2, но подойдёт и USB) белую (в цвет корпуса) клавиатуру для него.

Много печатать на ней не собираюсь, так что мне не важны, особенности раскладки, какие именно в ней будут свитчи и прочие подробности.

Линукс тут при том, что он будет загружаться по сети на этом компьютере, так как все готовые инструменты для передачи файлов под DOS работают на нём крайне медленно, программный дисковый кеш не спасает. А tinycore работает очень неплохо.

 

kmeaw
()

wireless-карта в Master режиме

Какую PCI Wireless карту лучше достать для того, чтобы сделать из роутера, работающего под Linux, точку доступа? Интересует, в первую очередь, нормальная (чтобы не приходилось раз в час/день/неделю перезагружать систему/делать rmmod;insmod) поддержка карты свободными драйверами (возможно, с несвободной firmware). Поддержка WEP, WPA и других технологий для шифрования мне не нужна - авторизация будет производиться при помощи VPN-сервера. Что по этому поводу думает LOR-community?

>>>

kmeaw
()

Типы

Есть типы. Типом считается выражение вида:
1. t
2. (T1) -> (T2)
где t - type variable, T1 и T2 - любые типы. Скобки можно опускать, если выражение не становится двусмысленным. Операция -> считается правоассоциативной. Тип (a -> b) означает функцию, преобразующую экземпляры типа a в экземпляры типа b. Функции нескольких аргументов записываются, так (пусть нам нужно записать функцию двух аргументов f(A,B), где A имеет тип a, B имеет тип b, а результат имеет тип c):
a -> (b -> c),
или a -> b -> c.

Как проще всего проверить эквивалентность типов? Типы считаются эквивалентными, если один тип можно получить из другого путём переобозначения type variables, и наоборот. Например, типы (a -> b -> a) и (b -> a -> b) - эквивалентны. Я подозреваю, что можно придумать преобразование, которое бы приводило любой тип к некоторой нормальной форме. Если нормальные формы совпадают, то типы эквиваленты. Так ли это?

Как проще всего проверить приводимость типов? Тип a считаются приводимым к типу b, если экземпляр типа a является экземпляром типа b. Например, типы (a -> b -> a), (a -> Int), (a -> a), ((a -> b) -> (b -> a)) приводим к типу (a -> b).

Подозреваю, что эти задачи должны просто решаться с помощью теории графов.

>>>

kmeaw
()

wingrub, установка из Windows

Доброе утро. Существует ли какой-нибудь пакет, позволяющий реализовать следующее:

1) Пользователь (возможно удалённо через RDP/VNC) запускает EXE-файл; 2) В интерактивном режиме (или через конфиги) вводятся настройки сети; 3) Ставится WinGrub и прописывается в BOOT.INI 4) На диск копируется (или откуда-нибудь скачивается) kernel + initrd; 5) Машина ребутится, грузится Linux, поднимает сеть; 6) Если произошла ошибка, вернуть загрузчик на место и ребутнуться обратно в винду; 7) Поднять sshd, подключиться к удалённой машине и сделать port tunneling, чтобы дать доступ к sshd из-за NAT`а.

Может есть какие-нибудь средства, позволяющие упростить реализацию всего этого? Или придётся самому писать такую штуку?

>>>

kmeaw
()

64-bit: -march на AMD и Intel, совместимость

Здравствуйте. Сейчас у меня есть несколько программ, собранных с -march=k8, и они отлично работают на AMD Athlon64. Будут ли они работать на Intel 64? Как собрать программу так, чтобы она работала везде? Достаточно ли для этого указать -mtune? Можно ли собрать ядро, которое бы работало везде? Будут ли дистрибутивы, маркированные amd64 (конкретно Debian и Ubuntu) работать на Intel 64?

kmeaw
()

tempnam, tmpnam, tmpfile, mktemp, mkstemp

Здравствуйте. Мне нужно сгенерировать временное имя файла, которое затем будет передано ассемблеру (as), как имя выходного файла. Какую из сабжевых функций лучше использовать? Как избежать возможности того, что кто-то угадает имя файла и создаст символическую ссылку с таким именем, указывающую на какие-нибудь важные файлы пользователя, запустившего программу? Правильно ли я понимаю, что в данном случае не получится использовать функции, которые возвращают FILE* или файл-дескриптор (int), решая предыдущий вопрос?

kmeaw
()

передача аргументов не по их номеру в объявлении, а по имени

Здравствуйте. Мне интересно мнение о наличии смысла у передачи аргументов по имени. Чтобы быть более конкретным, приведу пример:

Пусть существует функция, создающая нового пользователя (create_new_user) и принимающая три аргумента: его имя (login), пароль (password) и уровень доступа (access_lvl). При передачи аргументов по их номеру (как в C), функция будет вызываться так:

create_new_user ("vasya", "p4$$w0rd", 11);

Но если передавать аргументы по имени, возможен такой вариант:

create_new_user (@login "vasya", @password "p4$$w0rd", @access_lvl 11);

Если есть смысл в таком способе указания параметров, следует ли разрешать их передачу по номеру? Как быть с вызовом внешних функций, написанных на языке, не поддерживающим такие вызовы? Как должно выглядить объявление (declaration) такой функции? Разрешать ли не указывать имя аргумента, если он единственный? ... если он последний? ... если он первый?

Зараннее спасибо.

kmeaw
()

автоматический вызов kinit -f (krb5) при логине в xdm

Здравствуйте. Я использую xdm и хочу сделать так, чтобы при успешном логине выполнялось действие, аналогичное запуску kinit -f и вводу пароля, где пароль бы брался из того, что юзер ввёл при логине в систему. Как это сделать? Или регистрацию на kdc можно сделать правильнее и/или проще? Мне нужно, чтобы пароль спрашивался только один раз при входе, пользователю выдавался kerberos ticket, который он мог бы использовать на других узлах сети (для входа по ssh без пароля и монтирования $HOME). Заранее спасибо!

kmeaw
()

Подскажите инструкцию для Intel x86

(предисловие) Здравствуйте. Я пишу виртуальную машину, в которой необходимо реализовать ряд команд (mov REG, REG; push REG; pop REG; load REG, MEM; store REG, MEM; jmp/jc/je/js IMM; add/sub/div/mul REG, REG; call IMM; ret и некоторые другие). Все регистры (R0..R7) являются 16-битными. Для упрощения процесса написания и тестирования ассемблера для этой виртуальной машины, я взял систему команд, совместимую с Intel x86. Проблема возникла лишь с инстукциями in REG и out REG -- они должны считывать или записывать слово из единственного внешнего (во внешнее) устройства. Регистр может быть любым, но в Intel x86 в аналогичной команде может быть использован лишь аккумулятор. Я пытался использовать для этих целей "ненужные" мне инструкции fild и fist, но они могут использовать лишь четыре регистра общего назначения, а мне нужно восемь.

(собственно, сам вопрос) Какие две инструкции Intel x86 имеют схожую область применения и один аргумент (который является 16-битным регистром общего назначения (AX..DX, SI, DI, BP, SP))? Размер инструкции в байтах должен быть не больше четырёх. Заранее спасибо.

kmeaw
()

pthread + malloc = зависание

Есть довольно запутанная программа, у которой директивами условной компиляции (#ifdef..#endif) включается поддержка тредов. Если она включена и я вставляю free (malloc (1)); в любое место до использования MUTEX`ов, то она зависает (gdb показывает на функцию pthread_mutex_lock). Если такую строчку не вставлять или отключить поддержку тредов, то всё отлично. Как данная строка может влиять на состояние MUTEX`ов?

kmeaw
()

NFS и авторизация

Нужно экспортировать /home через NFS, но меня беспокоит то, что нехороший человек может создать на своей машине (имея, конечно, на ней рута) пользователя и спокойно читать/писать мои файлы через NFS. Хотелось бы сделать так, чтобы он не мог получить права какого-либо пользователя (за исключением nobody), не вводя его (пользователя) пароль.

kmeaw
()

[pthread] join all pthreads

Существует ли функция, которая делает pthread_join всех дочерних pthread`ов? Или которая посылает им всем какой-нибудь сигнал?

Спасибо.

 

kmeaw
()

XG MIDI синтезатор

Существует ли программа под Linux, эмулирующая MIDI-синтезатор (как TiMidity++), но с поддержкой расширений Yamaha XG?

kmeaw
()

Преобразование сложного объекта в байтовый поток

Есть некоторый сложный объект A:

         R
        / \
       /   \
      /     \
     /       \
    A ======> C
   / \
  /   \
 B1   B2

B1 и B2 - объекты, содержащиеся в A. A ссылается на объект C 
(например таким образом задан класс объекта A). 
В данном случае все объекты имеют общий корень R.

Задача: перевести объект A в вид, пригодный для отправки в байтовый
поток, короче говоря, перевести его в строку символов.

Решение, которое напрашивается - рекусрвисно перебрать все объекты
A и составить из них таблицу, присвоив каждому элементу индекс, затем
описать связи, как ориентированные пары индексов.

Однако, при этом появляется проблема: а как записать ссылку
на внешний объект (в данном случае C)? Записывать еще и объект
C нельзя, так как он не является составной частью A.
Записать путь к C тоже не всегда возможно - вдруг объекты A
и С не будут иметь общего корня R.

Как эта проблема решена в различных языках программирования и
какое решение лучше выбрать?

Спасибо.
kmeaw
()

Баг с ANSI escape sequences

У меня в bash происходит довольно странная вещь:

Открываю rxvt-unicode, делаю PS1='$ ', набираю что-нибудь -- все нормально.

Затем делаю PS1='\e[1m$\e[0m ' (знак доллара выделяется жирным), набираю -- происходит переход на новую строку до того, как курсор дойдет до конца (а именно strlen("\e[1m\e[0m") символами раньше).

Что глючит? bash, ncurses или readline? И как это исправить?

kmeaw
()

fgets с помощью read

Как считать строку из stdin в буффер? Я знаю только наиболее тупой способ - читать по байту и сравнивать его с '\n', но не будет ли это слишком медленным? Не существует ли способа лучше, например каким-нибудь образом читать большими блоками, а излишек "запихивать" обратно в поток?

Мой вариант:

char *readline() {
#define BUFSIZE 512
char *r = malloc (BUFSIZE);
size_t buf = 512;
size_t bread = 0;
size_t bnow = 0;
while (bnow = read (0, r + bread, buf - bread))
{
bread += bnow;
if (buf - bread < BUFSIZE / 2)
{
buf += BUFSIZE;
r = realloc (r, buf);
}
}
r[bread] = 0;
return r;
}

p.s. Можно использовать только системные вызовы. Использовать функции libc нельзя, за исключением функций управления памятью (malloc, free, realloc, strdup) и каких-нибудь совсем простых (strlen, memcpy, strdup, strchr, ...).

kmeaw
()

быстрое умножение многочленов

Как быстро перемножить два многочлена, заданных своими коэфициентами? Т.е. сложность должна быть не n^2, как при обычном умножении, а n*log(n). Интересует именно сам алгоритм, желательно без использования комплексных чисел.

kmeaw
()

dlopen и java

Как вызвать функцию C (она лежит в .so файле) из Java? Прототип функции имеет вид:

void init();

$ java --version java version "1.4.2" gij (GNU libgcj) version 4.0.3 20060121 (prerelease) (Debian 4.0.2-7j1)

kmeaw
()

Перечеслимые и неперечислимые контейнеры

Является ли Интернет перечислимым (enumerable) контейнером? Если да, то как его перечислить?

kmeaw
()

Хитрая установка

Есть WinNT машина. Хозяин машины оставил ее включеной и исчез на неопределенный срок. Есть удаленный админский доступ к ней, ее можно ребутать, отключать любые сервисы - короче можно все. Задача - установить туда Gentoo. Какие будут предложения?

kmeaw
()

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