The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Раздел полезных советов: Как получать ответы на вопросы по п..."
Отправлено auto_tips, 06-Июл-18 10:21 
В [[https://www.opennet.ru/tips/3018_help_cheat.shtml прошлой заметке]] было показано как, пользуясь сервисом cheat.sh, можно получить краткую справку практически по любой популярной команде UNIX/Linux. Сервис использует для этого популярные репозитории шпаргалок (cheat sheets), такие как tldr, cheat и прочие.

Возможности сервиса cheat.sh были расширены, и теперь с его помощью можно получать не только подсказки по командам UNIX/Linux, но и получать ответы на любые вопросы по программированию.

В простейшем случае использование сервиса выглядит следующим образом:

    curl cheat.sh/python/append+file

Этот запрос возвращает ответ на вопрос, как дописать файл (append file) в python.

Вместо python в запросе можно указать другой язык программирования (из 55 поддерживаемых
сервисом в настоящий момент):

    curl cheat.sh/js/append+file
    curl cheat.sh/go/append+file

Возвращаемые запросы отформатированы по умолчанию как код на соотвествующем
языке программирования: текстовые пояснения оформлены как комментарии языка.
Их можно убрать полностью (опция Q) или оставить как незакомментированный текст:

(с комментариями)

    $ curl cht.sh/lua/merge+tables
    -- Lua - merge tables?

    for k,v in pairs(second_table) do first_table[k] = v end

    -- [Doug Currie] [so/q/1283388] [cc by-sa 3.0]

(без комментариев)

    $ curl cht.sh/lua/merge+tables?Q
    for k,v in pairs(second_table) do first_table[k] = v end

Сервис поддерживает множество других опций, описание которых можно получить по запросу /:help

    curl cht.sh/:help

Обратите внимание, что к сервису можно обращаться как по полному имени (cheat.sh),
так и по краткому имени cht.sh. Для запросов можно использовать оба протокола HTTP и HTTPS.


Примеры запросов:

    curl cht.sh/go/reverse+a+list
    curl cht.sh/python/random+list+elements
    curl cht.sh/js/parse+json
    curl cht.sh/lua/merge+tables
    curl cht.sh/clojure/variadic+function

Демонстрация: https://www.opennet.ru/opennews/pics_base/0_1530858949.gif


++ cht.sh: Клиент для комадной строки


Сервис не требует инсталляции никакого дополнительного программного обеспечения
за исключением curl (или его альтернатив, таких как wget, httpie или fetch),
однако у него существует одноимённый клиент, cht.sh, который упрощает использование
сервиса и делает его использование более удобным:

    $ cht.sh python append file

Клиент поддерживаем режим оболочки (шелла), в котором можно задавать вопросы напрямую,
не вводя каждый раз при этом название языка и не вызывая клиент:

    $ cht.sh --shell python
    python> append file
    ...
    python> generate random string
    ...
    python> parse json
    ...

В зкспериментальном режиме сервис поддерживает запросы и на других языках кроме английского:

    python> дописать файл
    python> скопировать файл
    python> переименовать файл
    python> рекурсивный обход каталога
    python> cd /lua
    lua> использовать внешнюю функцию
    lua> отсортировать таблицу
    js> cd /js
    js> асинхронное чтение файла

Все запросы, приведённые выше, произвольны (и все возвращают корректные ответы).

Сервис работает следующим образом: после получения запроса он пытается обработать его пользуясь
данными из доступных репозиториев шпаргалок, таких как tldr, cheat, learnxiny и так далее (а точнее,
их локальных копий, проиндексированных и находящихся в памяти, благодаря чему, в том числе,
достигается такая высокая скорость реакции). В простейших случаях, когда запросы односложны,
и являются, например, названием команд UNIX/Linux, этого оказывается достаточно.

Если же запрос обработать таким образом не удаётся, осуществляется поиск на внешних ресурсах
(в первую очередь stackoverflow.com и других сайтах stackexchange), и если подходящий ответ
найти удалось, он обрабатывается и возвращается пользователю. Код ответа форматируется,
как уже было сказано выше, таким образом, что текст в нём оформляется как комментарии,
код остаётся кодом, а внизу добавляется источник ответа, имя его автора и лицензия, по которой
он распространяется.

Если найденный для ответа вопрос не подходит, следующий можно посмотреть, добавив /номер после него:

    python> generate random string
    python> generate random string /1
    python> generate random string /2


Клиент cht.sh имеет предоставляет ряд других приятных возможностей, таких как:

* автопродолжение;
* история поиска;
* копирование в буфер обмена (C);

и ряда других (для просмотра нужно вызвать help в cht.sh).

Кроме этого к cheat.sh можно обращаться напрямую из текстового редактора.

Демонстрация: https://www.opennet.ru/opennews/pics_base/0_1530859122.gif


++ Доступ из редактора

Запросы к cheat.sh, а значит к StackOverflow и к прочим источникам информации, использующимся в cheat.sh,
можно отправлять напрямую из текстового редактора Vim или Emacs.

Для этого нужно установить дополнительные плагины (подробнее в cht.sh/:vim и в cht.sh/:emacs).

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

Предположим, что вы пишете программу на python и вы забыли, как лучше всего можно сгенерировать
случайную строку в нём.

Традиционным решением было бы:

* открыть браузер,
* в нём — google,
* ввести "generate random string",
* получить ссылку на stackoverflow,
* перейти по ней,
* скопировать найденный ответ в буфер обмена,
* вставить его в редактор,
* подправить его под конкретную программу.

Вместо этого, используя плагин cheat.sh-vim:

* ввести запрос прямо в буфере редактора;
* нажать <leader>KP (или <leader>KB, или <leader>KK).

Ответ будет вставлен в код, показан в отдельном буфере редактора (<leader>KB)
или во внешнем пейджере (<leader>KK).

Демонстрация возможностей плагина: https://www.opennet.ru/opennews/pics_base/0_1530859160.gif

++ Альтернативные решения

Существуют альтернативные решения, которые позволяют достичь похожих результатов:

* tldr  — подсказки по командам UNIX/Linux;
* cheat — подсказкт по командам UNIX/Linux;
* how2  — поиск ответов на stackoverflow из командной строки;
* howdoi — поиск ответов на stackexchange из командной строки.

Все вышеназванные утилиты хорошо справляются с названными задачами.
При этом cheat.sh обладает рядом преимуществом в сравнении с каждой из них:

* Не требует инсталляции, может использоваться везде, где есть curl/wget/httpie или любой HTTP-клиент;
* Предоставляет доступ как к шпаргалкам, так и к ответам на вопросы;
* Намного быстрее чем how2 и howdoi;
* Комментирует пояснительный текст в ответах;
* Может использоваться для автоматических запросов;
* Не требует актуализации репозиториев шпаргалок (как в случае с tldr и cheat);
* Поддерживает запросы на разных языках, в том числе на русском;
* Интеграция с текстовыми редакторами Vim и Emacs;
* Поддерживает Tab-completion (для bash, zsh и fish).

Недостатки (на данный момент):

* Не может работать в оффлайн-режиме (tldr и cheat могут; howdoi и how2 тоже нет).


++ Ссылки

* https://github.com/chubin/cheat.sh    &n... главный репозиторий проекта
* https://github.com/dbeniamine/cheat.sh-vim   ... плагин для Vim
* https://github.com/davep/cheat-sh.el    ... плагин для Emacs

* https://twitter.com/igor_chubin     ... — твиттер главного разработчика проекта (используется для анонса существенных обновлений проектов и новых проектов)

Другие подобные проекты (подмножество функций cheat.sh):

* https://github.com/tldr-pages/tldr    &n... подсказки для командной строки
* https://github.com/chrisallenlane/cheat   &nb... — подсказки для командной строки
* https://github.com/adambard/learnxinyminutes-docs — краткие учебники по языкам программирования
* https://github.com/gleitz/howdoi    &nbs... поиск ответов на вопросы по языкам программирования из командной строки
* https://github.com/santinic/how2    &nbs... поиск ответов на вопросы по языкам программирования из командной строки

Сервисы для терминала:

* curl wttr.in  — погода из терминала
* curl rate.sx ; curl rate.sx/btc — курс валют и криптовалют из терминала
* curl qrenco.de — сервис для генерация QR-кода в терминале
* ix.io, sprunge.us, ptpb.pw, 0x0.st, clbin.com — Pastebin для терминала
* curl ifcfg.me, curl ip-addr.es и множество других — определение внешнего IP-адреса в терминале
* https://github.com/chubin/awesome-console-services/ — полный список сервисов для терминала

URL: https://github.com/chubin/cheat.sh
Обсуждается: https://www.opennet.ru/tips/info/3070.shtml

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру