multilib спровоцировал катастрофу
Раскомментировал multilib реп на х86_64. Тут же отвалился pacman и сеть. Перезагрузился, система больше не загружается. В какой момент я себе в ногу выстрелил?
Раскомментировал multilib реп на х86_64. Тут же отвалился pacman и сеть. Перезагрузился, система больше не загружается. В какой момент я себе в ногу выстрелил?
В моём дистрибутиве используется DES для хэширования пароля, как его заменить на md5 например?
Разбираюсь с кодом старенького фаззера системных вызовов. В коде присутствует вот такая штука:
seteuid(65536);
seteuid(65536);
(void)setgid(65536);
seteuid(65536);
Не могу смонтировать диск mail.ru при помощи davfs2. Папку создал, юзера в группу добавил, и получаю такое:
# mount.davfs -o uid=1000 https://webdav.cloud.mail.ru/ /home/likan/mailru/
Please enter the username to authenticate with server
https://webdav.cloud.mail.ru/ or hit enter for none.
Username: likan26.09@mail.ru
Please enter the password to authenticate user likan26.09@mail.ru with server
https://webdav.cloud.mail.ru/ or hit enter for none.
Password:
WARNING: gnome-keyring:: couldn't connect to: /home/likan/.cache/keyring-vr2zeQ/pkcs11: Отказано в доступе
p11-kit: failed to initialize module: gnome-keyring: An error occurred on the device
mount.davfs: Mounting failed.
301 Moved Permanently
Пользователь с типом user_t хочет открывать файл /var/log/dmesg с типом var_log_t. Для этого в файле dmesgread.te создается политика следующего вида:
odule dmesgread 1.0;
require {
type var_log_t;
type user_t;
class file open
class file read
class file getattr;
}
#============= user_t ==============
allow user_t var_log_t:file {open read getattr};
# semodule -i dmesgread.pp
type=AVC msg=audit(1386355300.812:358): avc: denied { open } for pid=9683 comm="cat" name="dmesg" dev=sda2 ino=786454 scontext=user_u:user_r:user_t:s0 tcontext=system_u:object_r:var_log_t:s0 tclass=file
type=SYSCALL msg=audit(1386355300.812:358): arch=40000003 syscall=5 success=no exit=-13 a0=bf99c901 a1=8000 a2=0 a3=1 items=0 ppid=2774 pid=9683 auid=502 uid=502 gid=502 euid=502 suid=502 fsuid=502 egid=502 sgid=502 fsgid=502 tty=tty2 ses=2 comm="cat" exe="/bin/cat" subj=user_u:user_r:user_t:s0 key=(null)
В литературе обычно натыкаюсь на такой вид вызова catch:
catch (openFile f ReadMode)
(\e -> hPutStr stderr ("Couldn’t open " ++
f ++
": " ++
show e))
ЗЫ. Начал изучать недавно, прошу больно не пинать.
В занимательной книженции Душкина «14 занимательных эссе о языке Haskell и функциональном программировании» в разделе про комбинаторы есть такой пример кода:
data Combinator = Var String
| App Combinator Combinator
| Lam String Combinator
deriving Eq
instance Show Combinator where
show (Var x)= x
show (App x y) = case y of
App _ _ -> showLam x ++
"(" ++
show y ++
")"
_ -> showLam x ++
showLam y
where
showLam l@(Lam _ _) = "(" ++
show l ++
")"
showLam x = show x
show (Lam x e) = "\\" ++
x ++
"."
++ show e
i = Var "I"
k = Var "K"
s = Var "S"
free :: String -> Combinator -> Bool
free x (Var y) = x == y
free x (App e1 e2) = free x e1 || free x e2
free x (Lam y e) = free x e
transform :: Combinator -> Combinator
transform (Var x) = Var x
transform (App x y) = App (transform x)
(transform y)
transform (Lam x (Var y)) | x == y
= i transform (Lam x e)
| (not . free x) e
= App k (transform e) transform (Lam x l@(Lam y e))
| free x e
= transform (Lam x (transform l))
transform (Lam x (App e1 e2))
= App (App s (transform (Lam x e1)))
(transform (Lam x e2))
transform (Lam x (Var y)) | x == y
= i transform (Lam x e)
| (not . free x) e
= App k (transform e) transform (Lam x l@(Lam y e))
transform :: Combinator -> Combinator
transform (Var x) = Var x
transform (App x y)= App (transform x)
(transform y)
transform e@(Lam x (Var y)) | x == y
= App i (transform (Lam x e))
| (not . free x) e
= App k (transform e)
transform (Lam x l@(Lam y e)) | free x e
= transform (Lam x (transform l))
transform (Lam x (App e1 e2))
= App (App s (transform (Lam x e1)))
(transform (Lam x e2))
Перемещено mono из talks
Сейчас осваиваю эссе Душкина, затормозился на комбинаторах. Задание разложить комбинатор Ψabcd = a(bc)(bd).Формальный алгоритм мне нигде найти не удалось, Душкин приводит несколько правил разложения, но каким образом эти правила применять, тоже не очень ясно. Посмотрел решения заданий в «Комбинаторная логика в программировании.» Вольфенгагена, там тоже не очень ясно, по какому принципу выбирается та иная схема преобразования. Где можно об этом понятно и доступно почитать?
import Data.List
range :: (Double,Double)->(Double,Double)-> Double
range (x1,y1) (x2,y2) = sqrt((y2-y1)^2 + (x2-x1)^2)
list = sort [range (1.0,1.0) (1.0,4.0), range (1.0,1.0) (3.0, 1.0), range (3.0,1.0) (1.0,4.0)]
test = a == b
where a = (head(reverse list))^2
b = ((head (tail list))^2 + (head list)^2)
Получается, что а=13.0, b =13.0, но test возвращает false. В чем дело?
Не могу разобраться. Вот есть λn.n(λx.false)true. Можете привести выкладки для λfx.x и, например, для λfx.fx. В книжках пишут, что мол слишком просто, чтоб доказывать. И можно ссылкочку на док-во (а лучше, на какое-нибудь доступное пособие)?
Как прочитать что-нибудь из текстового файла весом в 2гб?
Есть удаленный хост с доступом по ssh. На хосте есть виртуалка под VirtualBox. Существует ли возоможность запустить эту виртуалку удаленно, ну и собственно перехватить управление этой машиной?
В попытках собрать compiz-fusion (debian-testing) запускаю make и получаю вот такую штуку:
In file included from /home/.../compiz/core/src/region.cpp:32:0:
/home/.../compiz/core/include/core/core.h:55:18: fatal error: glib.h: Нет такого файла или каталога
#include <glib.h>
Debian testing, Gnome 3.4.2. В Emapthy не могу настроить учетки, т.е. жму на кнопку «Настроить учетную запись», и.... не происходить ничего. Тоже самое, если использовать Правка->Учетные записи (F4). Кто-то с таким непотребным поведением сталкивался?
На такой вот оси
Linux LIKAN-PC 3.10-2-686-pae #1 SMP Debian 3.10.7-1 (2013-08-17) i686 GNU/Linux
Вопрос наверное оч глупый, но как загрузить модуль в l4linux? Для того чтоб воспользоваться insmod - ом, нужно как то скопировать файл модуля извне, как это сделать?
Можно ли находясь в режиме ядра использовать системный вызов? Есть например в файле /usr/src/linux-headers<версия>/include/linux/syscalls.h
asmlinkage long sys_open(const char __user *filename,
int flags, int mode);
Сейчас речь идет не об оборудовании или ещё каких-либо жизненно важных функциях, а о сторонних приложениях, добавляющие свои модули. Те грубо говоря, есть приложение (kaspersky av),которое добавляет свой модуль в автозагрузку. Не понятно как оно это делает и не понятно каким этот модуль идет по очереди во время загрузки. В modules.order соответствующего модуля нет, так же нет его ни в /etc/modules, ни в modprobe.d.
Нужно создать 5 очередей сообщений, делаю следующим образом
void creatqIPC(){
int key;
key=ftok(logpath,1);
printf("key=%d\n",key);
if(qid1 = msgget(key, IPC_CREAT | 0660)==-1){
printf("Can't create the queue\n");
exit(1);
}
printf("QID = %d\n", qid1);
key=ftok(logpath,2);
printf("key=%d\n",key);
if(qid2 = msgget(key, IPC_CREAT | 0660)==-1){
printf("Can't create the queue\n");
exit(1);
}
printf("QID = %d\n", qid2);
key=ftok(logpath,3);
printf("key=%d\n",key);
if(qid3 = msgget(key, IPC_CREAT | 0660)==-1){
printf("Can't create the queue\n");
exit(1);
}
printf("QID = %d\n", qid3);
key=ftok(logpath,4);
printf("key=%d\n",key);
if(qid4 = msgget(key, IPC_CREAT | 0660)==-1){
printf("Can't create the queue\n");
exit(1);
}
printf("QID = %d\n", qid4);
key=ftok(logpath,1234);
printf("key=%d\n",key);
if(qid5 = msgget(key, IPC_CREAT | 0660)==-1){
printf("Can't create the queue\n");
exit(1);
}
printf("QID = %d\n", qid5);
}
key=16867675
QID = 0
key=33644891
QID = 0
key=50422107
QID = 0
key=67199323
QID = 0
key=-771661477
QID = 0
← назад | следующие → |