Русский
Русский
English
Статистика
Реклама

Горячие клавиши

Почему клавиатура всегда быстрее мыши

27.05.2021 10:19:54 | Автор: admin

Тепловая карта с клавиатуры высокоинтеллектуальных программистов, источник: r/ProgrammerHumor/

Много говорилось об удовольствии, которое испытываешь при работе в консоли. Это не случайно: так задумано отцами-основателями Unix. Возникает странное ощущение, что это самый правильный способ взаимодействия с компьютером.

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

В чём же дело?

Экзотический манипулятор


Изначально трекболы использовались для особых профессиональных приложений: например, для систем управления радарами. Мышь как перевёрнутый трекбол, накрытый коробкой, придумали в 1980-е годы. В то время программисты не совсем понимали, зачем компьютеру мышь, если код пишется в виде машинных команд, а взаимодействие с мейнфреймом целиком происходит в консоли.

Необычные манипуляторы с колёсиком стоили в районе 400 долларов. Затем вышел революционный компьютер Apple Lisa один из первых ПК с графическим интерфейсом. Компания Apple демпинговала она снизила стоимость манипулятора до 25 долларов и сделала сексуальный дизайн с одной кнопкой. Мышь из профессионального аксессуара превратилась в массовый гаджет.


Apple Lisa. Очень элегантный дизайн для своего времени

С тех пор мышь и GUI стали прочно ассоциироваться с компьютерами Apple и модным оконным интерфейсом.

Вскоре появилась Windows. Затем первые игры с поддержкой мыши, например, для более точного движения персонажа Возникает впечатление, что компьютерные игры постоянно стимулировали технический прогресс, в том числе производительность CPU, GPU, ёмкость накопителей, популярность мышей и других экзотических манипуляторов.

Геймеры вечно недовольны текущей производительностью персональных компьютеров и непрерывно требуют от индустрии наращивать мощность железа. Если посмотреть, кто собирает самые производительные конфигурации ПК и покупает самые мощные версии десктопных процессоров, то это будут сотни любителей рекордных FPS, парочка учёных с машинным обучением и один программист, который каждый день что-то билдит и компилирует. Да и то, трём последним персонажам компьютер нужен конкретно для работы, так что они не всегда вкладываются собственными деньгами, как геймеры.

Если бы не компьютерные игры, то производители процессоров могли сосредоточиться исключительно на серверных CPU. В самом деле, армия бухгалтеров, экономистов и прочих офисных клерков спокойно посидят на компьютерах 20-летней давности, которые их полностью устраивают. Они вообще не в курсе, какое железо стоит внутри процессора (так они называют системный блок). Зато не отрывают руку от любимой мышки. Отними у офисного клерка мышь и он будет несколько минут тупо пялиться в монитор и бессмысленно дёргать рукой, не в силах совершить ни одного полезного действия, словно под седативными веществами.

В наше время редко встретишь компьютер без мыши. А вот удовольствие от работы в консоли осталось.

На форумах и в блогах пользователи Linux делятся любимыми однострочниками и другими трюками, которые повышают эффективность рабочего процесса. Есть даже отличный сайт с голосованием за однострочники.

Крутые однострочники


Вот некоторые примеры интересного использования программ Linux.

ps aux | convert label:@- process.png

Команда конвертирует выдачу из консоли в изображение. Например, чтобы поделиться с коллегами в виде скриншота. Сама идея скриншотить текст некоторым кажется концептуально неправильной, но в некоторых случаях так просто быстрее и удобнее. В наше время с распространением смартфонов и планшетов скриншоты становятся чуть ли не стандартом для копирования текста с экрана, что немного печалит, если воспринимать это как намёк на закат универсальных компьютеров

Примечание. Утилита convert входит в пакет ImageMagick, так что нужно сначала его установить.

А вообще, текст из консоли можно быстро запостить через интернет-сервис вроде termbin.com (это как pastebin, только для консоли):

ps aux | nc termbin.com 9999

Как обычно, с алиасом для частого использования:

alias tb='nc termbin.com 9999'

Следующая:

curl ipinfo.io

Это если хотите узнать свой внешний IP-адрес через сервис ipinfo.io.

git log --format='%aN' | sort -u

Очень удобная команда, если работаете над опенсорсным проектом и хотите посмотреть контрибуторов.

history | awk '{print $2}' | sort | uniq -c | sort -rn | head

Отсортированный список самых часто запускаемых команд (тоже полезно добавить в алиасы, чтобы запускать в пару нажатий).

ls -d */

Листинг только директорий. Полезная команда, которой тоже хорошо бы присвоить алиас для быстрого использования.

du -hs */ | sort -hr | head

Эта команда показывает только 10 крупнейших директорий в текущем каталоге.

ss -p

Просмотр, какие приложения потребляют трафик (утилиты iftop и nethogs дают более подробную информацию).

rm -f !(test.txt)

Команда удаляет из директории все файлы, кроме одного, указанного в скобках. Это работает после включения расширенной глобуляции в баше (shopt -s extglob).

python3 -m http.server

Запускает http-сервер и начинает отдавать файлы. Удобно, если хотите пошарить какой-то html-файл по сети.

screen -S the-screen-name

Создание экран-сессии.

screen -x the-screen-name

Подключение к экран-сессии. Такую сессию можно принудительно создать у пользователя после его авторизации в системе и наблюдать, что происходит на его экране. Полезно, если кто-то подключился к вашему серверу, а вы хотите посмотреть, чем он занимается.

Утилита screen поставляется по умолчанию со многими дистрибутивами Linux, хотя не со всеми.

alias copy='xclip -i -selection clipboard'

cat file.txt | copy

Копирование файла в буфер обмена, когда первый однострочник прописан как алиас copy в баше.

sudo !!

Запустить последнюю команду под рутом, если в предыдущей команде вы забыли набрать sudo. У этой команды первое место в рейтинге однострочников.

Конечно, здесь просто примеры. Прелесть линуксовой консоли в том, что можно самому придумать такую последовательность команд, которую никто вообще никогда не использовал, но вам нужен именно этот конвейер в данной ситуации.

Горячие клавиши как наследие консоли


В графических программах под Windows тоже зачастую хочется сделать работу горячими клавишами, не трогая этот эппловский манипулятор. На самом деле использование горячих клавиш очень ускоряет рабочий процесс в любой программе.

Алиасы bash служат той же цели: выполнить команду с наименьшим количеством усилий, то есть с наименьшим количеством нажатий клавиш.

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

Если подняться на более высокий уровень абстракций, то горячие клавиши в графических интерфейсах это в каком-то смысле дальний потомок консоли, некое историческое эхо. С горячими клавишами, однострочниками и алиасами в баше человек становится быстрее компьютера приходится делать паузы, чтобы дождаться результата выполнения команд. CPU загружен практически на 100%.

Это фундаментальное преимущество клавиатуры как инструмента для ввода команд по сравнению с любыми манипуляторами. В этом же и сила консоли.

Конечно, не все команды вызываются хоткеями. Иногда требуется переместить графический объект на экране Тогда нужен курсор. Но если хоткей существует, он без вариантов быстрее, чем аналогичное действие мышью в меню. Горячие клавиши живое доказательство, что команды с клавиатуры запускаются быстрее.

В общем, из этого факта может родиться предположение, что отцы-основатели Unix всё-таки были правы, а их наследие живёт во всех операционных системах. Графическая оболочка просто тонкий слой абстракции поверх мощного фундамента, который они построили. Ведь мы помним, что macOS тоже основана на Unix и относится к семейству *nix-систем.

Ну а окошки и другие элементы графического интерфейса Windows, по мнению Apple, это вторичный продукт, скопированный с интерфейса Lisa (см. судебный процесс Apple против Microsoft c 1988 по 1994 гг).

Суд отклонил иск Apple к Microsoft. Но некоторые вещи обращают на себя внимание. Например, команда open . в консоли macOS открывает Finder в текущей директории. В Windows то же самое делает команда start . (Finder здесь называется Explorer). Окна в macOS закрываются крестиком в левом верхнем углу, а в Windows в правом углу. Возможно, на примере таких деталей Билл Гейтс доказал суду, что у него оригинальный графический интерфейс, который сильно отличается от macOS.

Скопирован графический интерфейс или нет, формально неизвестно. Но факт в том, что это просто тонкая оболочка над системой. Так же как и мышка удобный, но совсем не обязательный аксессуар.



На правах рекламы


Наша компания предлагает аренду VPS для совершенно любых проектов. Создайте собственный тарифный план в пару кликов, максимальная конфигурация позволит разместить практически любой проект 128 ядер CPU, 512 ГБ RAM, 4000 ГБ NVMe!

Присоединяйтесь к нашему чату в Telegram.

Подробнее..

Создание удобного и наглядного keymaphotkey для PyCharm или любой другой программы

30.03.2021 00:12:15 | Автор: admin

Предисловие

Современные программы имеют богатый функционал. Беда в том, что на хорошее овладение этим богатым функционалом уходят килограммы времени.

Некоторые приемы и лайфхаки могут здорово сократить эти самые затраты времени на изучение практически любой программы.

Эта история началась с покорения CAD-системы 3D-моделирования NX от компании Siemens. Большая, навороченная, с множеством возможностей, модулей, команд, кнопок и менюшек программа, в которой на данный момент трудится добрая половина инженеров-конструкторов-авиастроителей Руси-матушки.

Конечно, чтобы не шокировать обилием значков и команд, в программе есть так называемые "роли". Например в роли для начинающего показано ровно столько команд и менюшек, чтобы смоделировать что-нибудь квадратное/угловатое/простое. Потом, по мере прокачки навыков в этой программе, начинаешь открывать для себя новые кнопки, новые возможности и т.д. И для таких случаев, есть "роль" пожирнее и повкуснее. Однако, в этом вашем авиастроении детали настолько замученные и закрученные, что в конце концов начинает не хватать и "Расширенной роли с полными меню", и тут начинается... весь экран программы в кнопках и т.д. и т.п.
Со временем у каждого конструктора складывается характерный для него "стиль" работы в CAD-системе. Наиболее часто используемые кнопки вытаскиваются "поближе", редкие кнопки наоборот пропадают с "инструментальных панелей". И тут, к тебе подходит коллега, просит подойти к его компьютеру и чего-нибудь помочь с какой-нибудь там подсечкой на профиле. А там все команды в других местах, все по другому и не там где у тебя, в голове начинается дикий скрип.

А потом подходит другой коллега и третий и пятый. И третий и пятый, и пятьдесят пятый раз в многочисленных выпадающих менюшках поиск нужной команды. ПАМАГИТИ.

Hotkey или создание панацеи

Критическая масса для создания серьезного решения этой проблемы была набрана быстро). Идея была в том, чтобы настроить горячие клавиши на 99% используемых в повседневной практике команд, и установить их вообще всем, и более никогда мучительно не вспоминать ГДЕ она, нужная кнопка. Идея в том, чтобы создать универсальный интерфейс, максимально удобный и для всех, но не задевающий "инструментальные панели".

Пошли первые потуги. Стоит отдать должное, в CAD-системе NX почти на все команды есть иконки. Иконки показывают суть команды.

Итак, первый этап это сбор иконок из программы. Если на какую-либо команду нет иконки, ничто не мешает воспользоваться готовыми например с сайта https://www.flaticon.com/. А если иконка есть, то на помощь приходят такие классные программы как: скриншотер Greenshot для вырезания области экрана, и графический редактор GIMP для обрезания иконки уже "поточнее". Т.к. перепечатывание названий over9000 команд дело не самое бодрое и веселое, то крайне полезной может оказаться программа для распознавания текста с выделенной области экрана CaptureToText. Все opensourse.

Далее создаем Word-файл, в нем табличку. В одной колонке будут названия команд, в другой иконки, в третьей перевод названия команд на великий и могучий для всяких там (как и автор) слабо понимающих энглиш лангуаге.

Так уж сложилось, что все современные программы при невообразимо богатом функционале и пугающем количестве команд, в большинстве своем имеют весьма слабый набор горячих клавиш/hotkey. И даже те комбинации, которые идут "из коробки", доставляют мало удовольствия, потому что требуют обе руки, а иногда и ноги для нажатия. Это связано с тем, что используется идеология "первой буквы" команды. Например, Ctrl+P=Print(печать), Ctrl+O=Open(Открыть). Этот подход в создании горячих клавиш и эффективном взаимодействии с программой весьма и весьма и весьма ограничен количеством букв в алфавите. А количество возможных комбинаций для самой обычной клавиатуры оно же за 4 сотки переваливает.

В CAD-приложениях 3D-моделирования так вообще, исключительно-желательно не отрывать правой руки от мышки/трекбола... особенно на чемпионатах по профмастерству в авиастроении.

Т.е. для графических редакторов или программ 3D-моделирования ТРЕБУЕТСЯ, чтобы все бинды были так сказать на "левой свободной руке".

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

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

Ну а дальше, начинаем перетаскивать из таблицы со всеми командами/иконками в таблицу нашей клавиатуры в соответствующие ячейки. Из первой таблицы убывает, вторая таблица заполняется. Перекомпоновываем команды согласно принципов удобства нажимания, удобства запоминания, смежности выполняемых действий, общности, в общем, создаем наглядную карту/keymap для программы.

СОВЕТ: сразу проверяйте как нажимается та или иная комбинация, потому что есть зоны не самые удобные для нажатия одной рукой, например Ctrl+Alt+Shift+6 требует минимум длинных и гибких пальцев и владения слепым десятипальцевым кунг-фу набора текста).

На скриншоте показан вариант таблицы для PyCharm, т.е. без ряда с модификатором Shift, потому что Shift+буква=БОЛЬШАЯ БУКВА. Однако, такого ограничения нет в графических редакторах. В конце концов, получится первый экспериментальный вариант keymap, который будет много интереснее в обращении нежели огромной длины плохочитаемый список комбинаций.

Человеческая голова хорошо запоминает местоположение и плохо списки. Поэтому распечатав keymap на листочке A4 и повесив рядом с монитором, за пару месяцев руки сами потянутся в поисках нужной комбинации. Я гарантирую это. В скриншоте ниже keymap/208 комбинаций на PyCharm.

Наработки/исходники

После того как мегатаблица Менделеева с комбинациями готова, начинается самое скучное - забить все комбинации в программу.

Потом конечно период озарений и перекомпоновки, допиливания, но это все будут мелкие улучшения.

Итог

Для NX такой keymap на 160 комбинаций делал около двух недель и назвал BFR= BigFuc*ingRole, потому что по времени совпало с созданием некоей ракеты от некоей частной космокомпании). Долго потому что в первый раз, все вкривь и вкось, и вообще начал не оттуда, не в той программе, без нужного софта и не так, в общем, поиск он и есть поиск.

Зато сейчас у многих конструкторов на ЭМЗ им. В.М. Мясищева такая штука есть и приносит удовольствие от использования каждый день. В скором времени надеюсь поделится с остальными авиаторами.

Когда приходят молодые ребята, только только после университета где их "учили" компасу 3де/автосаду/сад системам там всяким, сразу учатся и осваивают NX "на комбинациях" и это оказалось очень даже удобно и продуктивно. Потому что запомнить 160 комбинаций много проще и быстрее, чем запомнить 160 путей по менюшкам до нужной команды (особенно когда подсказка перед глазами на а4 распечатанная висит). И если кому-то, что-то показать, то просто идешь за его рабочий комп и комбинациями хлоп хлоп. Единая универсальная система и всё тут.

На PyCharm keymap на 208 комбинаций сделал за пару тройку вечеров. Осваиваю только.

Заключение

Конечно, хотелось бы, чтобы спустя время, в любой сложной программе появилось окошко с такой вот мегатаблицей команд и иконок, и переназначение комбинаций осуществлялось простым перетаскиванием нужной иконки в нужную ячейку, а не как сейчас: "окно, а в нём список команд длиной с рулон туалетной бумаги". Вот это был бы EpicWin.

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru