Хотя регулярное выражение $ будет подсвечивать часть строки за последним символом. Только без дополнительного условия «использовать только если &l:fileformat is# "dos"» подсвечиваться конец будет всегда.
Если в файле везде CRNL, то никаким регулярным выражением вы ничего не сделаете: файл будет открываться с setlocal fileformat=dos с преобразованием CRNL полностью в перенос строки. Если нет, то ^M в конце и без подсветки обычно заметить несложно, в регуляных выражениях можно использовать \r.
Основные две проблемы с PAGER — это то, что git считает длинными командами всё («git сам перенаправляет длинный вывод» — это неправда, просто less’у можно сказать, чтобы он не возникал, если вывод не слишком длинный (= если он целиком помещается на экране)) и то, что после выхода less в терминале ничего не видно, при этом запустить команду в текущей оболочке из less не получится. alias -g удобнее bindkey, потому что в истории останется alias и его легко удалить и заменить на что‐нибудь ещё.
Исторически сложилось так, что pip package для ctrlk принадлежит не мне. В текущем package есть две недоработки — не указана зависимость от ez_setup, ее можно разрешить руками
Если вас не устраивает текущий владелец пакета, а добавить вас в качестве владельца он отказывается, то вы можете попросить людей из PyPI, чтобы они добавили вас сами: по этой ссылке я делал такое для powerline-status.
Одна из первых вещей, которые я сделал, когда начал серьёзно пользоваться git — это убрал нафиг перенаправление в PAGER, поставив core.page = cat. Мне часто нужно набрать в консоли что‐то, зависящее от вывода, перенаправленного в PAGER, но PAGER это делать мешает. Или посмотреть, что было выведено командой раньше, а что сейчас. Если мне нужен less, то написать после команды L (zsh: alias -g L='| less') не проблема, но если он мне не нужен (что чаще), то писать <code>|cat или эквивалентный alias неудобно.
Относительно «чем ниже — тем безопаснее»: находясь на минус третьем этаже, при пожаре на минус первом вы расстроитесь больше, чем в случае с 42-м этажом и пожаре на 40-м. С 42-го теоретически можно эвакуировать на вертолёте (кстати, а так кто-нибудь делает? Дело непростое: вертолёт не должен подлетать близко к зданию), до минус третьего придётся бурить (чего постараются всеми силами избежать: починка продырявленного здания влетит в копеечку).
DE — это комплекс программ: оконный менеджер, настройки системы, системное меню, куча мелких утилит вроде переключалки клавиатуры. Так что нет, они не могли использовать этот термин: explorer не обладает функциональностью DE.
В случае с таблицей виртуальных методов становятся недоступен ряд оптимизаций: inline функции из trait’а сделать не получится (или получится, но только вместе с inlin’ом print_slice, а я сомневаюсь, что компилятор сейчас на такое способен, даже если в конкретном случае такое возможно). Так что в худшем случае получите дополнительно оверхед на вызов функции (а то и двух, если шаблонная inlin’илась), плюс отсутствие оптимизаций результат inlin’а.
Здесь не научная статья. Никому низачем не нужно чёткого определения термина «язык общего назначения». Совсем. Умные люди отлично понимают нечёткие определения, тем более, что в обычном толковом словаре большинство именно такие.
Когда говорят «универсальный язык программирования» обычно имеют ввиду язык, который
Изначально предназначался для решения широкого спектра задач.
Является Тьюринг‐полным.
На котором при этом люди реально могут решить практически всё — от написания текстового редактора до 3D‐рендеринга. Разумеется, это «всё» они могли бы решить лучше (быстрее и/или с меньшими затратами ресурсов компьютера) на других языках… если бы умели на них писать, причём быстро.
При этом из «всего» на самом деле исключены узкоспециализированные задачи: написание прошивок, скриптование ПО, не поддерживающего язык, …
В общем, данный термин не следует воспринимать совсем уж буквально. Текст или речь, произведённые людьми вообще не стоит воспринимать буквально практически никогда — математические доказательства есть практически единственные тексты, автор которых предполагал или должен был предполагать их буквальную интерпретацию.
Это для Python (и для большинства остальных языков, где есть нечто подобное). В некоторых языках такое поведение будет неожиданным. Правда я из таких знаю только VimL¹, а это никак не образец хорошего внутреннего устройства. Про PHP не знаю.
¹ Ошибки, использующиеся вместо SyntaxError, можно отловить прямо на месте, т.к. в VimL команда всегда заканчивается в конце строки, если только используемый метод получения строк не предоставляет их в виде одной \n‐разделённой C’шной строки (особенность реализации, которую мне придётся поддерживать).
По этой же причине нельзя забывать про LOAD_GLOBAL (у вас его нету). Если значение n изменится после LOAD_GLOBAL, но перед STORE_GLOBAL, то результат будет некорректным. А это три промежутка, куда можно вклинится.
Здесь INPLACE_ADD будет делать ровно то же самое, что и BINARY_ADD. Опкодов два: INPLACE_ADD и STORE_FAST. Уберите STORE_FAST и получите, что ничего не изменилось.
Это не список, у которого определён __iadd__. Это неизменяемое целое.
Если это не GVim, то могут быть проблемы с кодировкой терминала. А GVim в Windows тоже на GTK? А то я вижу подозрительный файл src/gui_w32.c. Может ему нужна соответствующая &termencoding.
Впрочем, я не слишком хорошо знаю эту кухню с кодировками, особенно на Windows. У меня просто везде UTF-8. Хотя в тестах моих дополнений в Wine вроде set encoding=utf-8 и scriptencoding utf-8 во всех скриптах было достаточно.
Установка UTF-8 когда и к нечитабельному тексту где? Делать set encoding=utf-8 где‐либо, кроме vimrc, совершенно не рекомендуется, т.к. приводит к тому, что строки, уже хранящиеся в памяти, становятся неправильными.
И, кстати, Vim всегда брал и сейчас берёт кодировку из окружения. Я не помню, чтобы что‐то здесь менялось (что точно менялось — работа с именами файлов и, возможно, переменными окружения).
Насколько мне помнится, этот генератор изначально отсутствовал, находясь под запретом из‐за >21 века создания. Потом был переизобретён Великим Драконом, который, прокачав теорию, понял, что использовать его нельзя. Так что в книгах он упоминался, но не использовался. И в любом случае, вы говорили про материю. Генератор запретили раньше появления станции на Кванторе, и намного. А до латинян с дубликатором на Кванторе были хронофизики, они звезду не на материю перерабатывали.
На вершине стека вы в лучем случае получаете DivisionByZero. Полностью бесполезный, у вас там снизу 50 функций.
Там есть возможность с помощью макросов file! и line! получить номер строки в файле. Просто напишите свой try!, который будет не просто возвращать ошибку, а ещё и добавлять к ней информацию о том, где она пробрасывалась. Это вариант 3, но «кучу кода» пишет компилятор. Эти же макросы могут быть использованы и в месте генерации ошибки.
Локальные переменные вы, конечно, не получите (а, может, я просто плохо знаю макросы Rust). Но это всё же лучше, чем стандартный вариант.
Каким метатегам? Если вы про Content-Type заголовок в письмах или про определение типа содержимого по примитивным сигнатурам вида «если в начале файла %PDF-, то это application/pdf» (примерно так делает утилита file и все остальные, если он используют библиотеку libmagic), то злоумышленникам так даже легче будет (пользователи привыкли смотреть расширение, а тут javascript с .doc, причём расширение даже прятать не надо).
$будет подсвечивать часть строки за последним символом. Только без дополнительного условия «использовать только если&l:fileformat is# "dos"» подсвечиваться конец будет всегда.setlocal fileformat=dosс преобразованием CRNL полностью в перенос строки. Если нет, то^Mв конце и без подсветки обычно заметить несложно, в регуляных выражениях можно использовать\r.alias -gудобнееbindkey, потому что в истории останется alias и его легко удалить и заменить на что‐нибудь ещё.powerline-status.git— это убрал нафиг перенаправление в PAGER, поставивcore.page = cat. Мне часто нужно набрать в консоли что‐то, зависящее от вывода, перенаправленного в PAGER, но PAGER это делать мешает. Или посмотреть, что было выведено командой раньше, а что сейчас. Если мне нужен less, то написать после командыL(zsh:alias -g L='| less') не проблема, но если он мне не нужен (что чаще), то писать <code>|catили эквивалентный alias неудобно.print_slice, а я сомневаюсь, что компилятор сейчас на такое способен, даже если в конкретном случае такое возможно). Так что в худшем случае получите дополнительно оверхед на вызов функции (а то и двух, если шаблонная inlin’илась), плюс отсутствие оптимизаций результат inlin’а.- Изначально предназначался для решения широкого спектра задач.
- Является Тьюринг‐полным.
- На котором при этом люди реально могут решить практически всё — от написания текстового редактора до 3D‐рендеринга. Разумеется, это «всё» они могли бы решить лучше (быстрее и/или с меньшими затратами ресурсов компьютера) на других языках… если бы умели на них писать, причём быстро.
При этом из «всего» на самом деле исключены узкоспециализированные задачи: написание прошивок, скриптование ПО, не поддерживающего язык, …В общем, данный термин не следует воспринимать совсем уж буквально. Текст или речь, произведённые людьми вообще не стоит воспринимать буквально практически никогда — математические доказательства есть практически единственные тексты, автор которых предполагал или должен был предполагать их буквальную интерпретацию.
¹ Ошибки, использующиеся вместо SyntaxError, можно отловить прямо на месте, т.к. в VimL команда всегда заканчивается в конце строки, если только используемый метод получения строк не предоставляет их в виде одной
\n‐разделённой C’шной строки (особенность реализации, которую мне придётся поддерживать).LOAD_GLOBAL(у вас его нету). Если значениеnизменится послеLOAD_GLOBAL, но передSTORE_GLOBAL, то результат будет некорректным. А это три промежутка, куда можно вклинится.Это не список, у которого определён
__iadd__. Это неизменяемое целое.src/gui_w32.c. Может ему нужна соответствующая &termencoding.Впрочем, я не слишком хорошо знаю эту кухню с кодировками, особенно на Windows. У меня просто везде UTF-8. Хотя в тестах моих дополнений в Wine вроде
set encoding=utf-8иscriptencoding utf-8во всех скриптах было достаточно.set encoding=utf-8где‐либо, кроме vimrc, совершенно не рекомендуется, т.к. приводит к тому, что строки, уже хранящиеся в памяти, становятся неправильными.И, кстати, Vim всегда брал и сейчас берёт кодировку из окружения. Я не помню, чтобы что‐то здесь менялось (что точно менялось — работа с именами файлов и, возможно, переменными окружения).
* посредством предварительного преобразования оного в какой‐то особый вид энергии.
file!иline!получить номер строки в файле. Просто напишите свойtry!, который будет не просто возвращать ошибку, а ещё и добавлять к ней информацию о том, где она пробрасывалась. Это вариант 3, но «кучу кода» пишет компилятор. Эти же макросы могут быть использованы и в месте генерации ошибки.Локальные переменные вы, конечно, не получите (а, может, я просто плохо знаю макросы Rust). Но это всё же лучше, чем стандартный вариант.
%PDF-, то этоapplication/pdf» (примерно так делает утилитаfileи все остальные, если он используют библиотекуlibmagic), то злоумышленникам так даже легче будет (пользователи привыкли смотреть расширение, а тут javascript с.doc, причём расширение даже прятать не надо).