Насколько мне известно, поддержка OpenJDK и JAVA, а также других подключаемых модулей NPAPI, таких как Flash и т. д., прекращена в большинстве современных браузеров по соображениям безопасности и конфиденциальности. Проверьте ссылку ниже для справки:
https://en.wikipedia.org/wiki/NPAPI#Support/deprecation
Еще о поддержке NPAPI. В той же статье есть список других браузеров, которые все еще поддерживают эти плагины. Из этого списка Waterfox очень близок к Firefox -, на самом деле он основан на Firefox -и по-прежнему поддерживает JAVA -, что означает, что он также может поддерживать OpenJDK.
Нестандартная -утилита rev
полезна в ситуациях, когда легче выразить или выполнить операцию с одного направления строки, но это противоположно тому, что у вас есть.
Например, для получения последней вкладки -поля с разделителями из строк текста с помощьюcut
(при условии, что текст поступает на стандартный ввод):
rev | cut -f 1 | rev
Поскольку нет способа выразить «последнее поле» в cut
, проще поменять местами строки и вместо этого получить первое поле. Можно, конечно, утверждать, что использование awk -F '\t' '{ print $NF }'
было бы лучшим решением, но мы не всегда думаем о лучших решениях в первую очередь.
(в настоящее время )принятый ответ на Как вырезать (выбрать )поле из строки текста, считая с конца? использует этот подход с rev
, а второй ответ -показывает альтернативные подходы.
Другой пример — вставить запятые в большие целые числа так, чтобы 12345678
стало12,345,678
(исходными цифрами в группах по три справа):
echo '12345678' | rev | sed -e 's/.../&,/g' -e 's/,$//' | rev
См. также Для чего вы используете перестановку строк? на сайте SoftwareEngineering SE для получения дополнительных примеров.
В качестве конкретного примера, rev
является полезным инструментом для обратной комплементарности последовательности ДНК, что часто делается в биоинформатике.
Помните, что ДНК представляет собой двухцепочечный полимер, состоящий из нуклеотидов. Обычно ДНК моделируется просто первой буквой ее нуклеотидов (A, C, G, T ). Если «последовательность» одной цепи известна, то известна и другая цепь, поскольку A всегда соединяется с T, а C всегда соединяется с G. Таким образом, последовательность двухцепочечной ДНК может быть такой:
ACGTGTCAT
TGCACAGTA
Еще одна вещь о ДНК и двух цепях -они имеют направленность и часто "читаются" от 5'-конца к 3'-концу. Нити имеют антипараллельную направленность и поэтому читаются в противоположных направлениях -, см. диаграмму ниже.
5' ACGTGTCAT 3'
3' TGCACAGTA 5'
Теперь -часто бывает полезно определить одну цепь по другой, а поскольку последовательности могут быть довольно длинными (тысячами или миллионами нуклеотидов ), это делается программно. Один из удобных способов сделать это — использоватьrev
(и tr
):
echo ACGTGTCAT | tr ACGT TGCA | rev
ATGACACGT
Во времена, когда терминалы, поддерживающие биди -(и даже до UTF -8 ), еще не существовали, его можно было использовать для отображения текстовых файлов на иврите (преобразовать символы в форму их представления ), преобразовав их из логической направленности в физическую.