Вряд ли; судя по всему, этот мем родился в англоязычных интернетах (искать самый первый такой ролик, думаю, не стоит того, чтобы тратить на это время).
Вот тут, если интересно, подборка 25 лучших пародий по версии The Telegraph на октябрь 2009 г.
Вы меня просите вспомнить, с какими приключениями было связано одновременное обновление мира и ядра?
Нет, я спрашивал, для чего нужна вторая перезагрузка, т.к. вы выше говорили, «что не обязательно загружаться в single-mode, правда понадобятся две перезагрузки.»
За 10 лет использования своей методики помню о нескольких случаях. [...]
Я понимаю, да, случается, к сожалению, что система с новыми ядром и/или миром не встает. Но это ведь отлавливается сразу же (после первой перезагрузки), нет?
Понятное дело, что если что-то пошло не так, дополнительного шаманства и перезагрузок может понадобиться даже больше одной, однако речь изначально шла про штатную (обычную) ситуацию.
Еще как юзают; многие от портов уже практически совсем отказались, даже те, кому нужны кастомные пакеты (для этого есть poudriere). Благо, pkg уже давно не «ng». ;-)
Все поддерживаемые системы, включая восьмёрку, на него перевели. И оно действительно работает и вполне пригодно для продакшна. Обо всех проблемах и пожеланиях сообщайте, пожалуйста, в трекер на гитхабе.
Простите, а зачем две перезагрузки? На старой системе (multi-user mode): make -jX buildworld buildkernel ; su ; make installkernel ; (возможно, понадобится mergemaster -p, но обычно нет) ; make installworld ; mergemaster -Fi ; reboot. И мы в новой системе (в single-user нигде не переходим, ребутимся один раз в самом конце).
Я уже и не вспомню сейчас, откуда эта рекомендация изначально там взялась. Возможно, это имеет смысл для того, чтобы изменения в сервисах (rc) вступили в силу без перезагрузки (при выходе из сингла по ^D). Но так как обычно вместе с миром пересобирают заодно и ядро, ребут в любом случае понадобится. Так что имхо в 99% случаев можно смело говорить make installworld в обычном (многопользовательском) режиме.
Это вы знаете, что a больше нигде не используется. Компилятор или анализатор же видят, что в функцию передается указатель на некий объект. Чтобы им прийти к тому же выводу, что вы, им понадобится полностью отследить время жизни объекта, где, кем и как он используется. Это теоретически возможно в относительно простых случаях (как ваш), но вообще-то уже на грани возможностей анализатора. Такие ошибки намного лучше отлавливаются тем же валгриндом (динамически).
Так и есть, примерно об этом был мой недавний комментарий:
В то же время, раст выглядит очень привлекательным именно за счет того, за что его ругают функциональщики — если на первых порах он был скорее больше похож на «ML с плюсами», то сейчас всё чаще говорят о «C++ done the right way». Спорить с этим тяжело, ибо история показывает, что императивно-ориентированный синтаксис — очень сильный буст к популярности. (Тут уместно вспомнить ремарки о чутье Гвидо по поводу того, как должен выглядеть питон.)
Кажется, понимаю, о чем вы. Действительно, вряд ли компилятор будет анализировать весь жизненный путь объекта и следить, в какие функции и в какой последовательности он передается и как там используется. А вот PVS-студия могла бы (если еще не может).
Как я понимаю, Vim и Emacs это два архаичных линуксовых текстовых редактора,
Не совсем так; вернее, совсем не так. :-) Vim и Emacs — это современные многофункциональные и расширяемые редакторы, поддерживающие множество платформ, операционных систем, конфигураций и сценариев использования.
Не знаю про PVS-студию, но вообще-то такая проверка есть практически в любом современном компиляторе, разве что не включена по умолчанию. То есть, конечно, PVS тоже может на это ругаться, но мне кажется, нацелен несколько на иной класс ошибок (которые компиляторами обычно не ловятся).
На машинах, где есть vim, запускаю и его тоже. Просто mcedit ставится вместе с миднайтом, который сам по себе полезная штука и чаще уже есть в системе.
Самого разного. :-) Если придерживаться некоторых правил оформления кода, то можно быстро находить, например, определения функций (vs. вызовы): достаточно лишь отделять спецификацию возвращаемого значения от имени переводом строки, и искать (или грепать) по ^function_name. (Так, кстати, принято во FreeBSD.)
При этом, если понадобится что-то глобально зарефакторить (т.е. обычным поиском не уже обойтись, нужно понимать грамматику), всегда можно запустить на раз «умную» IDE'шку или по-быстрому написать ad-hoc утилиту на основе какого-нибудь Clang AST-парсера.
Имхо всё это лишь дело привычки, ну и каких-то навыков, конечно.
У многих, я видел, vim настроен и обмазан плагинами так, что практически соответствует IDE'шкам: то есть там и ctags, и fuzzy-поиск, вот это всё. Кто-то же просто использует vim как редактор в MSVS.
Иначе говоря, можно вполне редактировать текст как в классическом vi, не отказываясь при этом от возможностей, предоставляемых IDE (или реализуя их в той или иной степени через плагины vim'а).
В основе редактирования поведения классических Unix'ов лежит редактирование конфигов и здесь уверенное владение vi, как редактором, присутствующим во всех системах, служит очень большую пользу.
Так и есть. В свое время пришлось выучить vi (и слезть с joe) именно потому, что на SunOS его (joe) не было. Поплевался несколько дней, затем проникся и подсел (видимо, уже на всю жизнь).
Вот тут, если интересно, подборка 25 лучших пародий по версии The Telegraph на октябрь 2009 г.
Я понимаю, да, случается, к сожалению, что система с новыми ядром и/или миром не встает. Но это ведь отлавливается сразу же (после первой перезагрузки), нет?
Понятное дело, что если что-то пошло не так, дополнительного шаманства и перезагрузок может понадобиться даже больше одной, однако речь изначально шла про штатную (обычную) ситуацию.
pkgуже давно не «ng». ;-)Все поддерживаемые системы, включая восьмёрку, на него перевели. И оно действительно работает и вполне пригодно для продакшна. Обо всех проблемах и пожеланиях сообщайте, пожалуйста, в трекер на гитхабе.
А можете привести пример ситуации/проблемы, которую бы не отловила первая перезагрузка?
make -jX buildworld buildkernel ; su ; make installkernel ;(возможно, понадобитсяmergemaster -p, но обычно нет); make installworld ; mergemaster -Fi ; reboot. И мы в новой системе (в single-user нигде не переходим, ребутимся один раз в самом конце).^D). Но так как обычно вместе с миром пересобирают заодно и ядро, ребут в любом случае понадобится. Так что имхо в 99% случаев можно смело говорить make installworld в обычном (многопользовательском) режиме.aбольше нигде не используется. Компилятор или анализатор же видят, что в функцию передается указатель на некий объект. Чтобы им прийти к тому же выводу, что вы, им понадобится полностью отследить время жизни объекта, где, кем и как он используется. Это теоретически возможно в относительно простых случаях (как ваш), но вообще-то уже на грани возможностей анализатора. Такие ошибки намного лучше отлавливаются тем же валгриндом (динамически).Сам я лично уже давно забил на переход в sinlge-user при пересборке (точнее, установке) ядра+мира, ибо всё и так работает.
blog.des.no/2013/09/local-caching-resolver-in-freebsd-10/
blog.des.no/2013/09/dns-in-freebsd-10/
blog.des.no/2013/09/dns-again-a-clarification/
^function_name. (Так, кстати, принято во FreeBSD.)При этом, если понадобится что-то глобально зарефакторить (т.е. обычным поиском не уже обойтись, нужно понимать грамматику), всегда можно запустить на раз «умную» IDE'шку или по-быстрому написать ad-hoc утилиту на основе какого-нибудь Clang AST-парсера.
Имхо всё это лишь дело привычки, ну и каких-то навыков, конечно.
Иначе говоря, можно вполне редактировать текст как в классическом vi, не отказываясь при этом от возможностей, предоставляемых IDE (или реализуя их в той или иной степени через плагины vim'а).