Pull to refresh
-11
@Eddy_Emread⁠-⁠only

User

Send message
Элементарный однопанельный «файлменеджер» делается довольно просто (я даже на баше делал, потом — на сях; на стороне клиента JS).
Но вот двухпанельник сделать невозможно из-за ограничений, накладываемых разработчиками браузеров на формы отправления файлов из соображений безопасности. Даже просто отобразить файлы из локальной директории невозможно (из тех же соображений безопасности). Для загрузки файлов на сервер остается всего лишь формочка загрузки нескольких файлов, причем если файлы не лежат в одной директории, придется добавлять новую формочку и т.д.

> Объясните пожалуйста, зачем это делать от root'а?

Так ведь некоторые вещи «простому смертному» делать недозволено. А от рута можно (в т.ч. и ping с нестандартными параметрами запускать и т.п.).
Почему 5? Если не считать BSD и MacOS, то всего лишь 1..1.5%. И больше не нужно. Незачем линукс популяризовать, не хватало еще 100500 бубунт…
Ага, вспомнили, что есть такая штука — top :)
openCV — тормозная штука, замучаешься ждать, пока кусочки распознает и состыкует :)
Достаточно просто сначала думать, а потом делать, а не наоборот.
Можно ведь и из-под рута знаменитый однострочник на perl выполнить, а потом долго себя проклинать.
Да, виноват. Действительно ведь: обработчик сигналов получается глобальным.

Так что, не годится этот способ.
Вот (на коленке):

#include <stdio.h>
#include <signal.h>
#include <pthread.h>
void memento(int a){
printf(«Ooops segfault in thread %d\n», a);
signal(SIGSEGV, SIG_DFL);
}
void _1(int a){memento(1);}
void _2(int a){memento(2);}
void _3(int a){memento(3);}
void _4(int a){memento(4);}
void *fall(void *arg){
signal(SIGSEGV, arg);
int* p = 0;
p[5] = 13;
printf(«p=%d\n», p[5]);
signal(SIGSEGV, SIG_DFL);
}
void *not_fall(void *arg){
signal(SIGSEGV, arg);
int n = 0;
printf(«n=%d\n», n);
signal(SIGSEGV, SIG_DFL);
}
int main(int argc, char *argv[]){
pthread_t threads[4]; int i;
pthread_create(&threads[1], NULL, fall, _1);
pthread_create(&threads[2], NULL, not_fall, _2);
pthread_create(&threads[3], NULL, not_fall, _3);
pthread_create(&threads[4], NULL, fall, _4);
for(i=0; i<4; i++) pthread_join(threads[i], NULL);
}

Выхлоп:

gcc -lpthread 1.c && ./a.out
n=0
Ooops segfault in thread 1
n=0
Ooops segfault in thread 4
Ошибка сегментирования
Создайте несколько функций-обработчиков, выводящих разный текст, назначайте каждому потоку свою функцию.
Точно так же можно сделать несколько обработчиков (или один, чье поведение зависит от глобальной переменной, которую вы будете модифицировать перед вызовом signal(...) ) и назначать их на нужный сигнал в начале критической секции, а в ее конце сбрасывать на обработчик по умолчанию.
Как? Как только вы в обработчике назначите signal(SIGSEGV, SIG_DFL) или signal(SIGSEGV, SIG_IGN), программа завершится. Если вы этого делать не будете, обработчик будет вызываться бесконечно.
Не показывает, если воспользоваться примером, приведенным автором, получим для файла с обработчиком:

#include
#include
#include
int memento(){
int a=0;
printf(«Ooops\n»);
return 0;
}
void fall(){
int* p = 0;
p[5] = 13;
printf(«p=%d\n», p[5]);
}
void posix_death_signal(int signum){
memento();
signal(signum, SIG_DFL);
}
int main(int argc, char *argv[]){
signal(SIGSEGV, posix_death_signal);
fall();
}

вот такой вывод:
gcc 1.c && ./a.out
Ooops
Ошибка сегментирования

А для файла без обработчика:

#include
void fall(){
int* p = 0;
p[5] = 13;
printf(«p=%d\n», p[5]);
}
int main(int argc, char *argv[]){
fall();
}

вот такой вывод:
gcc 2.c && ./a.out
Ошибка сегментирования
Нет, читал лишь мануал.
mercurial мне понравился тем, что там минимум телодвижений: hg commit, hg push, hg pull, hg clone — вот и все, что я использую.
Какой смысл вообще обрабатывать сегфолт? Мы же все равно не сможем понять, где он произошел. Разве что включать обработку SIGSEGV в критических областях (чтобы знать, что сегфолт был там).

Понятия не имею, как они там на Укрáине называются. Суть-то понятна :)
Вот именно. Но набежали педофилы, и изнасиловали нас :)
Дома обновил timezone, на работе — нет (у меня на работе и не переводилось время).
Ну так от facebook'а-то украинские федералы вряд ли какой информации дождутся, а так — все досье в одном месте. Удобно же. Не одной же России «вконтактегом» работу федералов упрощать, вот на Украине тоже поняли, как можно меньше двигаться и лучше «раскрывать».
GStreamer'ом не пользуюсь, но то, что их команда вносит патчи в ffmpeg, похвально.

// сколько же ЛОРовцев здесь :)
Можно ipod прошить, чтобы он и приличные форматы понимал (ogg, flac), вот только батарея быстрее садится же.
Теперь остается ждать, когда популярные плееры начнут его поддерживать. Пока приходится alac'и перегонять во flac'и, чтобы слушать на компьютере.

Information

Rating
Does not participate
Location
Россия
Registered
Activity