Это все-же необходимость (я тоже проголосовал за «Да — это было необходимо» и тоже вспомнил пример, когда использовал из-за QObject). Но продиктована она чужой архитектурой (Qt). Говорить, как это же реализовать в других языках немного не корректно, т.к. уже есть определенная иерархия классов и используя ее уже строишь свою. Для другого языка, возможно она бы просто была другая.
Если код, запущенный с привилегиями обычного пользователя способен уронить систему (BSOD, kernel panic и т.п.), это проблема системы. Теоретическую возможность написания такого кода конечно никто не отрицает. Но любой подобный опубликованный код всегда вызывает внимание разработчиков ОС. И если проблема не в каком-нибудь криво написанном драйвере сторонних разработчиков, а именно в ОС, то как правило появляется исправление.
Например освободить ресурсы или просто потянуть время, что бы другие потоки это сделали (при sigsegv в одном потоке, другие потоки продолжают работать до тех пор, пока не завершит свою обработчик этого сигнала). Предположим используются именованные семафоры, один поток периодически захватывает и отпускает их (хотя это не очень типичное применение семафоров, тут скорее больше бы мютексы подошли, но в posix например нет именованных мютексов). Тут вдруг другой поток падает, и уносит за собой поток, который захватил семафор, но не отпустил, хотя в принцип тот бы мог бы без проблем дойти до точки, в которой возможно корректное завершение.
Но вот под Win SIGSEGV пока ловиться только в случае, если он появляется в главном потоке, и обработчик зарегистрирован в нем же. Отловить же его в других потоках пока вообще никак получается, где бы я их не регистрировал…
Сразу скажу, меня интересует именно переносимость, что бы на разных платформах это работало одинаково, или по крайней мере, что бы не сложно было заставить работать одинаково.
Так вот, мои тесты пока не позволяют этого добиться, по тому я попросил код, м.б. мой кривой :)
Отсюда соответственно вопрос, на чем это воспроизводилось? В Linux в принципе да, получается отловить, и если обработчик был зарегистрирован только в одном потоке, то поведение достаточно предсказуемое.
Так в том то и дело что есть, и скорость света там играет роль не столько как скорость движения фотона (или скорость распространения электромагнитной волны). И вообще релятивистская физика практически никакого отношения не имеет к ЭМ излучению и фотонам, а константу c активно использует. По тому тут дело не в восприятии.
Так если бы в начале внедрили одну технологию (LTE) хотя бы с таким же покрытием как у старой (wimax), и уже после сворачивали устаревшую, тогда ладно. Сменить железку не сложно. А так, меня например wimax, в местах, где я им пользуюсь полностью устраивает. Тарифы тоже (comstar). Подобных предложений с использованием других технологий просто нет. И сомневаюсь, что за год успеют появится.
Репозиторий не обязательно содержит сам софт. Например в Gentoo в portage хранятся только ebuildы, т.е. по сути только инструкции для сборки или установки. Для удобства многие пакеты действительно вынесены на отдельное зеркало, но в том виде, в котором они располагаются на официальных сайтах. А часть пакетов все равно качается с оф. сайтов (от части из-за лицензионных соглашений).
Так что репозиторий (инструкций для установки каждой конкретной программы) все равно нужен.
Зависит от задачи. Но да, что либо дополнительно удалять из базовой системы я не вижу смысла. Тем более что уже сталкивался со случаями, когда такой излишний минимализм несколько мешал выполнять задачу, причем как всегда в самый не подходящий момент (что упало, доставить удаленное возможности нет, а надо :)) А так, в частности была как-то необходимость запустить на одном хосте несколько десятков виртуалок, для теста. Собрал образ дебиан с помощью debootstrap, сам образ получился где-то 400мб, я туда еще что-то доставлял, настроил и запустил. Каждая виртуалка кушала не более 40 мб. Т.е. имея 8Гб ОЗУ особых проблем не испытывал. Проц тоже грузил только тестируемый софт. Ну а экономить 400мб на харде как-то не видел смысла. Тем более что в ходе работы приходилось индивидуально что-то менять на одной из виртуалок. Так что излишнее обрезание могло бы привести к не очень приятным последствиям.
Да вот не очень мне понятно, зачем это делать с дебианом? Не, конечно возможно получилась бы интересная статья, как микроскопом забивать гвозди, как его для этого надо разобрать, убрать стекла и другие хрупкие части… Но он для этого не предназначен. На мой взгляд базовая система с 8мю запущенными процессами (udevd — 3 штуки, dhclient, rsyslogd, acpid, cron, getty (их вообще 6 штук по умолчанию запускается, но закомментировать в одном файле 5 строк не сложно)) уже достаточно минимальная, что бы от туда ничего не пришлось выпиливать. Да и потом, что вы хотите получить от ssh? Удалив nano и vi (vim и так не стоит), ncurses, практически сломав apt.
Повторю, все эти удаления ломают зависимости и в apt уже при таком раскладе уже практически нет смысла. Так зачем все ломать?
Я не хочу никого обидеть — мне действительно было бы интересно узнать, каким образом дебиан можно вылизать + как это сделать по возможности быстрее.
Зачем? Взять другой дистрибутив не проще? Без debconf дебиан вообще остается дебианом? Можно хотя бы софт обновить? Или задача сделать что-то вроде ROM прошивки? Тогда точно дебиан просто не тот инструмент. Проще собрать статически тот же busybox и нужный ftp сервер.
А вы похоже не ставили дебиан ;) Из выше перечисленного маны ставятся, но все же они полезные, удалять их, что бы сэкономить 1Мб… «кучу ненужных библиотек» слишком размыто. Да, например ставиться libselinux, только проблема в том, что она в зависимостях у cron (он тоже не нужен?), passwd и т.п. И удалить ее не так уж и просто, а если хочется ломать зависимости, то зачем дебиан? Тогда lfs в самый раз, можно поставить по минимуму :) Еще есть libsqlite, но ее тянет aptitude. aptitude тоже удалим? Есть perl-base, но он тоже идет как пакет первой необходимости. В общем найти что можно выпилить практически нереально, не считая одного пакета manpages.
Смотреть, что стоит на уже готовом сервере смысла нет. Кто знает, как там разворачивали Debian. Я говорю именно про установку с netinst без сети с убиранием пары галок на этапе tasksel. Или с помощью debootstrap. # ls /usr/lib | wc -l
88 88 1238
Если это только ssh/ftp итд, то где информация, что вычищалось в системе?
Что надо вычищать при установки с netinst без интернета? Там в принципе ставятся только необходимый минимум. Можно конечно часть пакетов удалить и заменить например на busybox, только смысл?
После успешной установки нужно добавить в конец файла /etc/ssh/sshd_config строку для ограничения доступа:
AllowUsers root, user
root то зачем? Для чего придумывали su и sudo, что бы потом так спокойно под рутом по ssh заходили? Я вот наоборот первым делом PermitRootLogin no ставлю. А то ломятся всякие. Ну и вообще авторизацию по паролю запрещаю. Ключи как-то надежнее :)
Почему только? С помощью VLAN, грубо говоря, можно из одного Ethernet порта, сделать несколько изолированных.
И как бы, их данный девайс поддерживает?
Как бы на данный девайс можно поставить Linux. А у него поддержка простой маршрутизации и NAT в ядре, а для VPN полно софта.
Повторюсь, вопрос зачем задавать не стоит, я говорю лишь о технической возможности. Кто-то может придумает применение.
Это уже совсем другой вопрос. К тому же, цена на свитч 3его уровня несколько выше, чем на второго + 25$ :) Да и возможности у них несколько скромнее, чем у роутеров (NAT, VPN и т.п.).
Но и тут пара USB ;) А вообще одного порта для роутера действительно достаточно. Если подключить управляемый свитч с поддержкой VLAN, то посылаем через порт, к которому подключен роутер тегированный трафик, а остальные порты относим к нужным в ланам. Таким образом маршрутизируем трафик между вланами.
Так вот, мои тесты пока не позволяют этого добиться, по тому я попросил код, м.б. мой кривой :)
Отсюда соответственно вопрос, на чем это воспроизводилось? В Linux в принципе да, получается отловить, и если обработчик был зарегистрирован только в одном потоке, то поведение достаточно предсказуемое.
А под Win подобный код вообще ничего не ловит…
Примерчик бы с несколькими потоками… Т.к. у меня там получается не все так гладко. В частности первый вопрос, в каком потоке будет запущен обработчик?
Так что репозиторий (инструкций для установки каждой конкретной программы) все равно нужен.
Повторю, все эти удаления ломают зависимости и в apt уже при таком раскладе уже практически нет смысла. Так зачем все ломать?
Зачем? Взять другой дистрибутив не проще? Без debconf дебиан вообще остается дебианом? Можно хотя бы софт обновить? Или задача сделать что-то вроде ROM прошивки? Тогда точно дебиан просто не тот инструмент. Проще собрать статически тот же busybox и нужный ftp сервер.
Смотреть, что стоит на уже готовом сервере смысла нет. Кто знает, как там разворачивали Debian. Я говорю именно про установку с netinst без сети с убиранием пары галок на этапе tasksel. Или с помощью debootstrap.
# ls /usr/lib | wc -l
88 88 1238
Что надо вычищать при установки с netinst без интернета? Там в принципе ставятся только необходимый минимум. Можно конечно часть пакетов удалить и заменить например на busybox, только смысл?
root то зачем? Для чего придумывали su и sudo, что бы потом так спокойно под рутом по ssh заходили? Я вот наоборот первым делом PermitRootLogin no ставлю. А то ломятся всякие. Ну и вообще авторизацию по паролю запрещаю. Ключи как-то надежнее :)
Как бы на данный девайс можно поставить Linux. А у него поддержка простой маршрутизации и NAT в ядре, а для VPN полно софта.
Повторюсь, вопрос зачем задавать не стоит, я говорю лишь о технической возможности. Кто-то может придумает применение.