LINUX.ORG.RU

Midnight Commander 4.8.16

 


2

2

Состоялся релиз консольного файлового менеджера Midnight Commander 4.8.16, включающий исправления множества ошибок, чистку кода и несколько новых функций.

Основные изменения:

  • Добавлена поддержка командной оболочки ash, улучшена работа с bash и fish.
  • Улучшен поиск файлов: при пустом имени файла теперь теперь выводятся все встретившиеся файлы; убрана опция «Search for content», поиск с учётом содержимого теперь отключается путём указания пустого значения в поле «Content» .
  • Различные исправления в работе списков в т. ч. их прокрутка колёсиком мыши.
  • Добавлена поддержка сжатия в форматах lzip и lz4.
  • Добавлена возможность отображения сжатых в формате xz патчей (patchfs).
  • В mc.ext добавлены шаблоны для initramfs/initrd.
  • Во встроенном текстовом редакторе добавлена подсветка синтаксиса языка Go. Для конфигов Puppet обновлены правила подсветки синтаксиса.
  • Улучшена документация по subshell и англоязычные man-страницы.

Проект на GitHub

>>> Подробности

★★★★★

Проверено: subwoofer ()
Последнее исправление: cetjs2 (всего исправлений: 7)

Ответ на: комментарий от Deleted

Заглянул в сорцы Glib, а там нет никакой оптимизации частных случаев

Тогда почему патчить только mc а не glib?

А насколько падает производительность для общего случая? 0.1% или 1%?

gag ★★★★★
()
Ответ на: комментарий от ananas

вы под процессом подразумевали thread в пределах mc, или я не вижу особой разницы с существующей реализацией.

Под процессом я подразумевал то, что под ним подразумевают уже лет 40: fork() + exec().

гонка тут возникнет только при крайне кривой реализации собственно процесса обрабатывающего запросы.

Гонка возникает просто по факту того, что предлагаемый вами способ «shell-скрипт обращается к процессу» должен хотя бы где-то хранить PID.

зато в существующей реализации есть одно очень большое преимущество - реализация vfs не привязана к определенному языку/библиотекам

А к какому языку привязан протокол 9P? O_O

я не разработчик mc, если что

Да? Ну ладно. :-D У меня почему-то твой ник с MC ассоциировался.

Deleted
()
Ответ на: комментарий от gag

Тогда почему патчить только mc а не glib?

1. Потому что под glib пишите патчи сами, а я гномофоб :-D

2. Потому что там не факт, что это будет оптимизацией для всех приложений. Если приложение нормализует сочинения размером с «Войну и мир», будет только падение производительности.

А насколько падает производительность для общего случая? 0.1% или 1%?

Рассмотрим худший вариант: если бы в конце имени каждого из этих 5400 файлов находился не ASCII-символ.

Итого в патченной версии проверка строки и вызовы g_strdup() занимают (округлённо) 2 200 000 инструкций. Из них вызовы g_strdup() занимают 1 600 000 инструкций. В рассматриваемом худшем случае провека бы всегда фейлилась в самом конце, и мы бы потратили 2 200 000 - 1 600 000 = 600 000 инструкций.

Вот эти 600 000 инструкций и есть падение производительности. Напомню, что сама Glib-овая нормализация заняла 22 000 000 инструкций.

Deleted
()
Ответ на: комментарий от anonymous

К большому сожалению, на гитхабе нельзя отключить пулл-реквесты. Поэтому народ посылает, но их никто не смотрит :-( если уж волшебный палец Линуса не помог, то не знаю, что можно с этим сделать... Issues отключить можно, по счастью, но, к сожалению, их не отключили, в итоге, народ не читает README @ открывает issue, и их тоже никто не смотрит.

Может это потому, что README содержит ссылку на несуществующую страницу http://www.midnight-commander.org/wiki/defectReports ?

Deleted
()

А кто-нибудь может пояснить как избавиться от фиктивных команд в истории под FreeBSD?

Feonis ★★★
()
Ответ на: комментарий от Deleted

гонка возникает просто по факту того, что предлагаемый вами способ «shell-скрипт обращается к процессу» должен хотя бы где-то хранить PID

и что? это все внутреннее дело реализации самого плагина, к собственно связке mc+плагин не имеющее никакого отношения.

А к какому языку привязан протокол 9P?

протокол - ни к какому. а вот его реализация привязана будет

ananas ★★★★★
()
Ответ на: комментарий от ananas

и что? это все внутреннее дело реализации самого плагина, к собственно связке mc+плагин не имеющее никакого отношения.

«Давайте в автобус будем пускать народ только через форточку. А то, что люди не пролазят, так это дело реализации самого хомо сапиенса.»

протокол - ни к какому. а вот его реализация привязана будет

Так до маразма дойдём, парсинг «протокола параметров в argv» в плагинах-скриптах тоже привязан к реализации языка.

Ладно, это всё лирика.

Не знаете, тут на форуме кто-нибудь из активных разработчиков? А то я только slavaz вспомнить смог, а он давно не появлялся тут.

Deleted
()

А кто-нибудь пробовал делать минималистичный mc, чтобы без наворотов и вмещалось в сотню-другую килобайт?

Quasar ★★★★★
()
Ответ на: комментарий от Quasar

А кто-нибудь пробовал делать минималистичный mc, чтобы без наворотов и вмещалось в сотню-другую килобайт?

Я пробовал воскресить deco и адаптировать под современные реалии, но ниасилил.

Deleted
()
Ответ на: комментарий от Deleted

Сдаётся мне, проще написать с нуля, чем deco воскресить.

Quasar ★★★★★
()
Ответ на: комментарий от Deleted

В связи с этим я поборол лень и ... багрепорт

Тогда, до кучи, надо и про сортировку каталога, и про wiki/defectReports. :-)

AS ★★★★★
()
Ответ на: комментарий от Deleted

Не знаете, тут на форуме кто-нибудь из активных разработчиков ? А то я только slavaz вспомнить смог, а он давно не появлялся тут.

Я тоже не помню. Плюс тему создали в разделе новости/OpenSource, а не форум/Midnight Commander. может, в новости и не заглядывают.

AS ★★★★★
()

убрана опция «Search for content», поиск с учётом содержимого теперь отключается путём указания пустого значения в поле «Content» .

Чёт крайне сомнительная фича

false ★★★★★
()

А кто-нибудь пробовал делать минималистичный mc, чтобы без наворотов и вмещалось в сотню-другую килобайт?

http://www.freshports.org/misc/mc-light/

Основан на старых исходниках mc, где кодовая база еще не была слишком раздута. Насколько помню, он даже glib не требует.

MihailZenkov
()
Ответ на: комментарий от Feonis

А какой шелл? Он поддерживает HISTIGNORE?

anonymous
()
Ответ на: комментарий от akk

Никак. Я с него и ушел, когда переходил с ko8-r на utf-8. Иначе бы на нем и остался. Некоторые моменты в нем даже были удобнее сделаны, чем в оригинальном mc.

IMHO там, где действительно мало ресурсов, юникоду в любом случае не место.

MihailZenkov
()

убрана опция «Search for content», поиск с учётом содержимого теперь отключается путём указания пустого значения в поле «Content» .

Это правильно. А порядок табстопов исправили?

andreyu ★★★★★
()

улучшена работа с bash и fish.

Крайне раздражающее кеширование файла перед отправкой файла через fish осталось?

andrewzvn
()
Ответ на: комментарий от x905

Спасибо, уже подсказали выше. Вообще, есть комбинация: Alt-?

Gonzo ★★★★★
()
Ответ на: комментарий от Gonzo

А кто подскажет, что означает М в комбинациях типа M-i, M-o ?

M — Meta key. Если у тебя на клавиатуре нет такой клавиши и ты ничего не делал с переназначением клавиш, то у тебя она назначена на Alt.

redgremlin ★★★★★
()
Ответ на: комментарий от Gonzo

M это клавиша Meta, нажимать надо Alt или Esc. Esc это запасной вариант, если переключение раскладки клавиатуры настроено на Alt+Shift то комбинации клавиш с Alt в Midnight Commander не работают. Причём процесс нажатия для Esc такой: нажимаем один раз Esc (удерживать не надо) и потом нажимаем сочетание Shift+? - это откроет окно поиска в файловой системе.

anonymous
()
Ответ на: комментарий от Gonzo

А кто подскажет, что означает М в комбинациях типа M-i, M-o ? Что нажимать? :)

На большинстве терминалов и в большинстве конфигураций M - это Alt.

Если с Alt не работает. Тогда Esc. Esc должен работать всегда.

Deleted
()
Ответ на: комментарий от redgremlin

Спасибо. С Альтом пользуюсь многими комбинациями, не знал просто, что M - это Альт.

Gonzo ★★★★★
()
Последнее исправление: Gonzo (всего исправлений: 1)
Ответ на: комментарий от anonymous

Понял, спасибо. На счет процесса нажатия в курсе :)

Gonzo ★★★★★
()
Ответ на: комментарий от x905

например поиск файлов и по содержимому в файлах
при этом формируется список найденных вхождений

find ... -exec grep -H ... {} \;

И работает быстрее, кстати. Но я вам не оппонирую, сам mc активно пользуюсь.

A-234 ★★★★★
()
Ответ на: комментарий от x905

например поиск файлов и по содержимому в файлах
при этом формируется список найденных вхождений

незаменим это значит, что в командной строке это будет более трудно сделать? Твой кейс решается одной командой

grep -rn 'вхождение' ./каталоги/файлы

autonomous ★★★★★
()
Ответ на: комментарий от anonymous

Так не факт, что нужно все исправлять. Да и подсветка синтаксиса не помешает. Опять же, обычно я не знаю точно, сколько строк мне придется дополнительно просмотреть вверх/вниз, что бы понять, что я нашел то, что хотел и понять как это поправить.

MihailZenkov
()
Ответ на: комментарий от anonymous

Такой вариант возможен, но:

1. mc выводит список файлов и можно сразу пропустить те, которые явно не являются искомыми.

2. mc выводит номера строк и позволяет сразу перейти к месту поиска, а так же сразу оценить количество совпадений. Иногда это очень удобно, так как позволяет пропустить близко расположенные совпадения. Такое часто происходит при просмотре кода: ищешь по имени функции/переменной/define и смотришь в каких функциях она используется и при частом совпадении переходишь сразу подальше.

MihailZenkov
()
Ответ на: комментарий от MihailZenkov

IMHO там, где действительно мало ресурсов, юникоду в любом случае не место.

Подразумевая, что нас интересует UTF-8 реализация и учитывая, когда изобрели utf-8, это вряд ли. Кстати, даже простейшая Си-прога

#include <stdio.h>

int main(int argc, char* argv[])
{
        if (argc != 2) {
                printf("Usage: %s <строка>\n", argv[0]);
                return 1;
        }
        printf("Вы ввели: %s\n", argv[1]);
        return 0;
}
даёт верный результат:
./test Абра-öäüß
Вы ввели: Абра-öäüß
Для итерации по «utf8 char» нужна ещё одна небольшая функция, она же будет использоваться для копирования.

gag ★★★★★
()
Ответ на: комментарий от Deleted

В связи с этим я поборол лень и зарегался на сайте проекта, чтобы багрепорт оставить

Вот так бы и сразу. А то у них там практически нет ресурсов, чтобы фиксить известные баги, не говоря уже о проведении их розыска по всяким лорам.

gag ★★★★★
()
Ответ на: комментарий от gag

Кстати, даже простейшая Си-прога даёт верный результат

Это всё фигня. Вы попробуйте создать универсальное решение задачи: «Дана строка utf-8. Сколько знакомест она займёт на экране?»

Там такие костыли в полезут в ходе реализации, что можно снимать фильм ужасов про восстание костылей.

Особенно мне нравится то место, в котором всегда неизбежно начинается «мы не знаем, как будет отображать терминал эту корейщину и сколько знакомест она займёт, так что давайте попробуем это угадать из значений переменных TERM и LANG». Невероятно увлекательный сюжет! Спилберг нервно курит в сторонке.

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.