All streams
Search
Write a publication
Pull to refresh
40
0
Павлов Николай Александрович @ZyXI

Инженер

Send message
Ага. А если вам по каким‐либо причинам надо использовать vim -u /path/to/.vimrc (например, хотите запустить vim с вашим vimrc на чужой машине или избежать использования системного /etc/vim/vimrc//etc/vimrc (зависит от дистрибутива)), то никакое название файла вам не поможет: с -u Vim запускается в режиме совместимости, если нет -N (про который легко забыть). Так что лучше воспользоваться замечательным принципом Python «явное лучше скрытого» и не говорить о ненужности.
Command-T тоже ищет в буферах. Точнее, он ищет либо там, либо там.

Command-T плох тем, что в issues уже весьма давно лежит патч, позволяющий расширять Command-T (т.е. использовать свою функцию создания списка), но никаких средств расширения нет до сих пор. В CtrlP они есть, причём с неплохим API. Когда мне надо было написать расширение для Command-T пришлось делать так: унаследоваться от главного класса, перед показом списка заменить глобальную переменную на экземпляр наследника, после показа вернуть всё как было. Вероятно, можно было изменить исходный экземпляр (хранится в $command_t), но я категорически не люблю monkey patching.

Command-T имеет часть, написаную на C, прослойку на VimL и большое количество кода на Ruby. CtrlP — полностью VimL, а потому работает медленнее.

Command-T не поддерживает не‐ASCII. Не знаю, как у CtrlP, но со стороны авторов Command-T можно было поддержать Unicode простым проходом по всему списку и созданием привязки для каждого нового найденного там символа.

Вообще, если бы мне не пришлось просмотреть исходный код обоих, я бы, наверное, использовал CtrlP. Но ужас с кучей глобальных переменных, сокращёнными до нельзя именами команд, принудительной установкой в modeline неудобных мне опций и, возможно, чем‐то ещё (смотрел давно) не выглядит как дополнение, которое может быть хорошим.
На habrahabr в комментариях такой шрифт, что дефисоминус и минус на одном уровне

Кто‐нибудь мне объяснит, зачем в предпросмотре было делать другой шрифт?

textarea: textarea hyphen-minus/hyphen comparison.
Комментарий: Comment hyphen-minus/hyphen comparison.
Предпросмотр: Preview hyphen-minus/hyphen comparison.
Лучше тогда возьмите таблицу символов и напишите минус. То, что выше, — называется «дефисоминус» (U+002D — это HYPHEN-MINUS (PDF на unicode.org)), а не минус и не дефис. Или обрамляйте формулы в <code></code>, как обычно делаю я:

4 + 2n + 4(n − 1) = 6n — вариант с минусом.
4 + 2n + 4(n - 1) = 6n — вариант с <code></code>.
4 + 2n + 4(n − 1) = 6n — вариант и с тем, и с другим.

+-−
+−- — сравнение (первым идёт дефисоминус, все соседние чёрточки различаются).

+-−
+−- — сравнение для <code></code>.

На habrahabr в комментариях такой шрифт, что дефисоминус и минус на одном уровне, но вот так у меня в textarea: разная высота. Для шрифтов, не предназначенных для набора программ, такая разница — самое обычное дело. Но горизонтальная черта в плюсе и в минусе всегда находится на одном уровне + минус всегда имеет ширину цифры (плюса) (конечно, зависит от шрифта, но это общепринятые нормы).
Для бо́льшей совместимости лучше писать next(gen), а не gen.next(). Дело в том, что в Python 3 заметили и устранили нестандартность метода .next: этот метод «магический» (точнее, управляет поведением встроенных возможностей языка) аналогично прочим вроде .__iter__, .__gt__; но при этом в Python 2 он пишется без обрамляющих __. В Python 3 метода next у итераторов нет, вместо него используется __next__. Таким образом,
In [92]: gen = (x for x in range(0, 100*10000))
In [93]: gen.next()

покажет AttributeError в Python 3, а
In [92]: gen = (x for x in range(0, 100*10000))
In [93]: gen.__next__()

— то же самое в Python 2. next(gen) будет работать везде.
Менять настройку encoding где бы то ни было после того, как куда‐либо в память Vim попала хотя бы одна не‐ASCII строка — нельзя. Это написано прямо в справке: второй абзац :h 'encoding'.

Удивительно, что при наличии настроек для кодировки файла, терминала, вывода на печать и внутреннего представления, нет отдельной настройки для кодировки окружения.

И, кстати, не используйте set для установки сложных значений. Есть let:
let &l:makeprg='c:\bin\make.exe $* | c:\bin\iconv\iconv.exe -c -f CP866 -t CP1251'
Тем не менее, говорить о том, что в Python 3 конвертации не произошло, не следует. Если вы говорите, что её не произошло, то это намекает на то, что она могла произойти. Но на самом деле конвертации не произошло, потому что в Python 3 объединили два типа.
Неверно. Смотрите TRANSLATING.md, там есть ссылка на официальную площадку с переводом на launchpad и обещание сделать merge, когда перевод будет завершён. Судя по наличию автора статьи, на которую сослался shpaker, в списке «Contributors to this translation» на launchpad, это именно тот перевод, который обозначен в статье.
Нашёл ошибку: слова с несколькими ASCII апострофами (U+0027, ') превращаются в слова с одним Unicode апострофом (U+2019, &rsquo;) и оставшимися неизменёнными ASCII апострофами на месте всех апострофов, кроме первого.
На согласных ударение не ставится. Если больших букв больше одной в начале слова и одной в середине, то правило однозначно неприменимо (почти наверняка это сокращение вроде «МежДелМаш»). Кроме того, вариант с выделением более однозначен: «айфон» люди не пишут. Правда и намного более редок.

Я предлагаю разбить это правило на два: это правило для известного списка слов (слова вида «бо́льш*» я видел записанными в таком виде намного чаще, чем все остальные слова вместе взятые) и для любых слов и оставить включённым по‐умолчанию только первое.
Так я наоборот прошу, чтобы большие буквы в середине заменялись на ударение, а не наоборот, потому что «наоборот», как вы правильно заметили, портит текст.
Есть ещё одно правило, которое хотелось бы видеть: очень часто «бо́льших» пишут как «бОльших» или «больших»/«больших»: т.е. заменяют ударение в слове на большую букву или разного рода выделение (первое чаще).
// В zsh есть аналог try-finally с возможностью проигнорировать ошибки (но без полноценного catch).

Вообще‐то в сообщении, на который вы отвечаете, try-catch приводился в качестве аналогии. Ваш ответ соответствует сообщению, на который вы отвечаете, не более, чем абзац выше соответствует вашему сообщению.

Если бы в качестве аналогии было приведено «это как переходить дорогу, никогда не глядя на светофор», вы бы тоже сказали «Какие светофоры… прогуляйся на улице при чем тут баш?!»?
А если нам при этом нужен seek, то только zsh и =(command) — тоже process substitution, но вместо pipe подставляет временный файл.
Так вам и говорят про ситуацию, когда выход из main() не равен нулю.

Не про пустой результат, а про код возврата.

Попробуйте с set -o pipefail сделать (true | cat) && echo True || echo False, а потом замените true на false. В случае с true будет выведено «True», в случае с false — «False», но без set -o pipefail в обоих случаях будет «True». При этом ни true, ни false ничего не пишут в stdout
Никого не волнует, создаёт ли git checkout -b ветки, вызывает для этого git branch или скачивает vim (с +python), python, pygit2 и libgit2 и по этой цепочке делает своё дело. Вызовом git checkout -b создаются ветки? Да. Значит git checkout создаёт ветки.

git status не умеет --name-status. В особенности для произвольных ревизий. Хотя, если подумать, то с разницей в информации и формате в выводе, он и не должен уметь. Просто status в git объединяет hg resolve --list и hg status. В mercurial hg status от diff --name-status ушёл недалеко и то только для текущего дерева (для двух ревизий — фактически полные аналоги).

Обычно у меня одно место куда я делаю push. И другое одно, откуда делаю pull. git — не единственная система, имеющая remotes или аналог. Мне удобно не писать куда я хочу сделать push/pull. С mercurial я не пишу. Что‐то мне подсказывает, что, используй я bazaar, я бы тоже не писал. Почему вообще в git так радикально не любят -o/--option в нескольких ключевых местах? hg push origin --bookmark upstream сразу даёт понятие о том, что и куда вы толкаете. git push origin upstream — нет. Насколько мне известно, mercurial использует только однотипные аргументы без -o/--option: два файла тут встретиться могут, ревизия и файл — никогда.

hg incoming ничего не загружает в репозиторий. Это не git fetch. При этом коммиты можно просмотреть полностью, вплоть до diff’ов. Конечно, в последнем случае они физически загружаются (и ещё раз при hg pull). Но в репозиторий не попадают. Если я сделаю git fetch, то мне придётся думать, как удалить ненужные изменения. А потом ещё придётся самостоятельно делать fast‐forward для нужных. Может здесь и есть команда вроде hg rollback, но я её не знаю.

А про линуксы мне говорить не надо. Я просто ничего не уча установил себе Ubuntu. Именно по этому принципу¹. Потом почти так же² пересел на Gentoo, в процессе правда читая handbook.

Кроме того, как я сказал, замечания не фатальные. За исключение API и hook’ов. А также справки для инопланетян и необходимости знания кишок. Подтянется libgit2, будет гораздо лучше, я и сейчас её начинаю использовать.

Проблемы из третьего предложения (справка и кишки) меня уже слабо волнуют. Но это причина, по которой я не буду советовать git ни одному из новичков. Тем более, что git позволяет новичку отстрелить себе ногу с максимальной эффективностью: удалить всё и у себя, и на том конце. Неизменяемая история после git меня уже слегка раздражает, но 1. над этим работают и 2. это давало уверенность в том, что фатально я ничего не напорчу. (Давало: сейчас такую уверенность даёт опыт работы с обеими системами.)

¹ В Windows по совершенно непонятным причинам через несколько дней после установки начинал тормозить интернет. В Ubuntu он не тормозил. Вторая часть мотивации: linux — это не так как у всех, а потому круто (как несложно догадаться, решение принималось ещё в школе). Ни одного linux‐гуру вокруг не было, только такие же разговоры от других школьников, которые его где‐то видели. «Совершенно непонятные причины» также замечательно характеризуют уровень компьютерного знания.
² Только на этот раз было не «надо», а «интересно». И вторая часть ещё никуда не делась. Ну и проблемы от неопытности я себе тоже создал. Не такие большие, как были в Windows, и не причина перейти на что‐то радикально новое, но тоже не сахар.
Поддерживаю, было бы хорошо. У меня абсолютно все собственные проекты либо на bitbucket, либо на sourceforge (второе — по историческим причинам). На github только форки чужих проектов. Либо вовсе доступ к upstream на запись без собственного форка.
Как? Выйдя из «машины» и повернув её на бок?
Имелось ввиду большее число наименований команд в меньшее число наименований. Разумеется, при этом абсолютное число команд при трансляции конкретной последовательности возрастает.
2. dd по‐умолчанию считает именно с десятичными приставками. Судя по справке, использовать двоичные приставки пользователь сам может. А сказать программе, чтобы вывод производился не в СИ — нет. Другие утилиты вроде ls выводят по‐умолчанию с двоичными приставками, но могут быть проинструктированы использовать десятичные. Ktorrent использует двоичные, но и пишет явно «КиБ». Как настроить — не знаю. Opera (12) использует двоичные, но пишет «KB». Firefox поступает так же. Chorium не показывает размер в загрузках, так что ничего сказать не могу. rtorrent тоже использует двоичные, но пишет MB.

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity