LINUX.ORG.RU
ФорумTalks

Переехал на кучу утилит переписаных на Rust

 , , ,


55

8

Тег «угадай автора по заголовку».

Q: Зачем?

A: Ради эксперимента, повысится комфорт пользования терминалом или нет.

Q: Причем тут Rust?

A: Ни при чем, но из-за нативности и отсутствия GC на нем толпа людей побежала переписывать что ни попадя. С таким же успехом можно было бы и npm install, но тормозило бы. Ближе opam install или go get

Теперь мой терминал по истине свистит и пердит. Даю список если кому надо.

  • alacritty - GPU ускоренный терминал.
  • alias cat=bat- cat с хорошей подсветкой синтаксиса и нумерацией строк и пейджером.
  • broot - навигатор по каталогам, который одновременно показывает дерево, но адекватно себя ведет с громадными каталогами, показывая их по чуть-чуть.
  • dust - утилита для исследования места занимаемого каталогами, сортирует деревья файлов начиная с самых больших каталогов.
  • alias ls="exa -l --group-directories-first" ls с хорошими дефолтами, tree встроено.
  • rip Утилита для удаления файлов с разными удобными фичами и восстановлением
  • hors "How do I parse float in javascript?" - находит короткий ответ в интернетах и отвечает. Чуть лучше работает чем оригинал - howdoi.
  • mdcat - cat для Markdown, для отображения удобочитаемой формы документа. Ссылки делает сносками.
  • alias grep=rg - очень быстрый и удобный grep
  • starship - shell command prompt, показывает кучу полезной информации в зависимости от контекста, например git branch если в репозитории, версии софта и ЯП если в каталогах с сорцами, hostname если зайти по ssh.
  • tokei - сборщик статистики по ЯП и строкам кода в деревьях исходников.
  • hyperfine - бенчмарк утилита, time на стероидах.
  • tldr- сокращенная версия man, показывает как чем пользоваться в примерах, а не выдавая полную справку. Страницы поддерживаются сообществом для громадного количества утилит. Изначальный проект - https://tldr.sh/
  • topgrade - универсальная утилита обновления. При запуске пытается обновить все что видит - системные пакеты, vim пакеты и так далее.
  • runiq - быстрый sort | uniq с разными алгоритмами внутри.
  • fd - быстрый и удобный find, удобно чтобы не вспоминать заковыристые ключи
  • fselect - поисковик файлов с SQL-like языком запросов
  • sd - как sed, только интуитивный
  • i3status-rs - Сразу i3status+i3blocks. Плюс батарейки к i3blocks, которые как я понял автор решил убрать.
  • onefetch - Вроде neofetch, но для сорцов. Просто запустите эту штуку с корня любого git репа, клонированого локально
  • wasmtime - JIT runtime для WASI стандарта. Пускалка WebAssembly приложений.
  • scriptisto - «shebang-интерпретатор» для компилируемых языков, прозрачно собирает и кеширует нативные сборки кода

Что не зашло совсем

Все вышеперечисленое ставится через cargo install <package_name> (кроме alacritty), название смотрите на страницах. Сам cargo и Rust ставятся через

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

P.S. Призываю остальных взять ЯП вашей секты и поставить такой эксперимент и отписаться. Да-да, расскажите как вы пользовались ls на Java. Пользователей emacs прошу не беспокоить

★★★★★

Последнее исправление: vertexua (всего исправлений: 11)

Да-да, расскажите как вы пользовались ls на Java.

Ну вообще не вижу ничего такого. Надо написать сервер, который будет принимать подключения, отрабатывать команду и отдавать результат и мелкую запускалку, её можно хоть на C написать, вся задача которой будет соединиться с сервером, передать ему вход и выплюнуть выход. С точки зрения юзера разница будет неощутима. Разве что будет висеть демон, сожравший некоторый объём памяти. Хз, может там уже придумали, как память у джавы отбирать, тогда вообще проблем не будет.

Legioner ★★★★★
()

Да-да, расскажите как вы пользовались ls на Java.

Учите матчасть.

import java.io.File;

public class Test {
    public static void main(String[] args) {
        File dir = new File(System.getProperty("user.dir"));
        for (String s: dir.list()){
            System.out.println(s);
        }
    }
}

А потом вылезайте на форум - народ смешить.

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

А теперь то же самое на Java 8.

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

JShell в помощь.

Сильно и долго у массовика-затейника (aka TC), видать, бомбит от Java, раз он всё время пытается что-то нам тут доказать.

Bioreactor ★★★★★
()
Последнее исправление: Bioreactor (всего исправлений: 1)

Использую только tokei(быстрее cloc) и hyperfine(не в курсе про альтернативы). Всё остальное на любителя. Ни одной полезной проги на Go пока не встречал.

В целом баловство, ибо CLI для наркоманов. Нужна нормальная GUI либа.

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

Ни одной полезной проги на Go пока не встречал.

Docker, Kubernetes, Terraform, Istio вот вся облачная фигня.

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

Ну я думал что ты в целом «го не нужен, ни одной проги на планетке еще не написали»

Докер кстати нужен на десктопе

vertexua ★★★★★
() автор топика
Последнее исправление: vertexua (всего исправлений: 2)
Ответ на: комментарий от Deleted

Оно все ставится в ~/.cargo/bin, добавляешь в $PATH. Ну конечно можно ставить в /usr/local/bin. Обычно все програмы из одного бинарника.

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

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

Повторяемая сборка для разных людей с разным софтом на машинах

vertexua ★★★★★
() автор топика

Очень интересно

Будет минутка попробую.

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

Да, но опять же, утилиту установил и все. А в этот демон новые утилиты нужно будет добавлять как модули. OSGi?

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

А теперь то же самое только с горами Gradle/Maven зависимостей в fat JAR. Ведь как только там появятся фичи, то старт программы будет не 50 мс (против с - 0.5 мс), а 400 мс и начнет бесить уже в консоли. Вон адекватные люди выше учитывают эти особенности Java и демон с сокетом предлагают

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

Что я не так делаю, что ls у меня в Java 9 .. 13 работает?

jshell> java.util.Arrays.asList((new java.io.File(System.getProperty("user.dir"))).list()).forEach(System.out::println);

Просто интересно Ваше мнение, как одного из самого отягощённого ЧСВ форумного «выпендрёжника»? (я использую цензурный термин для Вас)

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

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

Характеризуется повышенным шумовыделением при обсуждении какой-либо темы

Ну как бы не я ворвался в чужую тему на крыльях ночи размахивая мечами на тему защиты чести жабы.

Вопрос, вот вы реально этим пользуетесь каждый день?

jshell> java.util.Arrays.asList((new java.io.File(System.getProperty("user.dir"))).list()).forEach(System.out::println);

Вместо

$ ls
vertexua ★★★★★
() автор топика
Ответ на: комментарий от vertexua

а 400 мс

Откуда такие цифры?

Внутренний голос Вам нашептал?

и демон с сокетом предлагают

И?

Самые востребованные IDE написаны на Java, а не на хайповых недоязычках.

Смиритесь с этим и грызите монитор.

Вы просто смешны.

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

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

Это Вам в голову не приходило?

Или ЧСВ у Вас зашкаливает, а ответить по существу Вам нечего.

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

Никогда не имел дела с модулями OSGI, если честно. Я бы просто сделал жарки с каким-нибудь манифестом в корне, указывающем точки входа. Вроде в стандартной JDK такое делается через ServiceLoader.

Legioner ★★★★★
()
Последнее исправление: Legioner (всего исправлений: 2)
Ответ на: комментарий от Bioreactor

Ну 0.5 ms (exa) vs 50 ms (ваш хелло world) я померял сам.

А теперь беру так

$ docker run -it --run maven /bin/bash
# java --version
openjdk 11.0.4 2019-07-16
OpenJDK Runtime Environment 18.9 (build 11.0.4+11)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.4+11, mixed mode)
# time mvn
...
real    0m1.007s
user    0m2.412s
sys     0m0.194s

Делал time несколько раз. Утилита в сеть не ходит, просто командной строки штука, которая наверное просто поискала pom.xml

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

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

Надо же! А IDEA (PyCharm) и Eclipse написаны на «устаревшем» языке для «офисного планктона», а не для Ъ-кульхацкеров!

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

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

Их для плагином использует Eclipse, и насколько помню, NetBeans. Насчет IDEA не знаю.

Но да, технология не получила должного применения. Я писал на Java 5 лет в трех компаниях (и инвестбанки, и стартапы), ни разу не видел.

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

Ну я там отредактировал сообщение, подумав я решил, что нафиг не нужно это динамическое загружать/выгружать. Софт каждый день не ставишь, перезапустить этого демона в postinstall скрипте не должно быть проблемой. Только лишние сложности. Единственное, что мне в таком варианте не нравится, это пресловутая память. Напишу я какой-нибудь cat /dev/urandom | sort и пойдёт он жрать память. В случае обычной программы она свалится (ну или там в наркоманских линуксах OOM Killer прибьёт кого-нибудь рандомно лол), а тут непонятно, что будет. Если бы можно было в жаве запустить метод в сандбоксе, ограничив его потребление памяти, было бы самое то, но я таких технологий не знаю.

Legioner ★★★★★
()
Последнее исправление: Legioner (всего исправлений: 2)
Ответ на: комментарий от RazrFalcon

А я думал убунтовские репы самые большие. Но там из перечисленного только rg. Стоит ли переходить на генту? На vps-ках кажется ее не особо приветствуют

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

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

Разве не арч + aur?

Стоит ли переходить на генту?

Да мне без разницы. Я ставлю через cargo. Так что дистр не важен.

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

Отлично что сервер кто-то уже написал, все как в этом треде предлагают. Где широкое применение?

Кстати, разве не ты рассказывал что в гугло-фейсбуках одни мудаки, а нормальные ребята кодят на жабке в Москва Сити?

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

У нас в Manjaro всё есть в репах и AUR, ща понаставил, буду пробовать

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

Что я не так делаю, что ls у меня в Java 9 .. 13 работает?

Я уже вам хотел оставить ЛОР «на тему защиты чести жабы» (с), но просчитался. Не пугайте людей своими постами...

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

Орнул с

Making Java Practical for …

)))

Да я не спорю ни разу, я одобряю и советую именно этот костыль. Мы уже 10 минут его с Legioner обсуждаем. Что ты хочешь сказать то?

vertexua ★★★★★
() автор топика

alacritty - GPU ускоренный терминал

Не почувствовал разницы в скорости между ним и Konsole

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

Чел реально двинутый, он уже в своей реальности.

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

Вот тут я предлагаю переписать десктоп на Java:

3 темы, Карл! 2011й год

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

Ну, началась софистика, что Вас «не так поняли»...

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

Хватит клоунады.

Или, как говорил Ходжа Насреддин - «упал с ишака - посмейся сам со всеми»(С).

- Ходжа упал с осла!

- Ах, дети, дети! - сказал ходжа.- Да ведь если бы я не упал, то все равно пришлось бы с него слезть.

Так, что «слезайте с темы».

Я Вам сказал, что две самые популярные IDE написаны на Java.

И точка.

Bioreactor ★★★★★
()
Последнее исправление: Bioreactor (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.