Ещё одно неортодоксальное мнение: для всего этого есть Emacs.
EXWM позволяет использовать Emacs как Tiling WM, причём относительно быстрый.
eww, w3 – встроенные текстовые браузеры. Но тут, признаю, трудно жить без хотя бы Firefox/Midori/Chromium.
mu4e, Gnus – почтовые клиенты. Текстовые, но красивые (особенно если сами заморочитесь с кастомизацией). Mu4e — быстрее, Gnus — универсальнее (он вообще как приложение для чтения Usernet News создавался, а дорос до полноценного почтовика).
Установщики пакетов часто с Emacs интегрируются, можно выбрать тот, что побыстрее, и использоывать с удобным интерфейсом: pacman, Guix, и явно можно найти ещё. А вообще, для Emacs есть огромная база пакетов, MELPA, в которой можно найти клиенты для Reddit, Twitter, Telegram, IRC; режимы для редактирования почти всех существующих на Земле языков программирования; и множество маленьких утилиток, облегчающих жизнь.
EMMS – встроенный плеер, использующий консольные бэкэнды для проигрывания музыки. Простой, но мощный.
А вот с VLC на территории VLC состязаться пока ничего не может, хоть я и слышал про видео-расширения для EMMS :)
Текстовый редактор? Дайте подумать… Emacs?
И да, я осознаю, что такая экосистема очень специфична и не всем подойдёт. Но то, что вышеперечисленные расширения Emacs даже из терминала запускаются и удобно используются, важно — мы же здесь о легковесности и эффективности говорим, а Emacs в это может.
А ещё скоро (в следующей версии, 28) завезут нативную компиляцию, так оно будет совсем мгновенно работать...
Всё бы хорошо здесь, но ведь почему-то AdBlock-сервисы блокируют этот адрес. Как рассказано здесь, "googlesyndication" — это та часть Гугловской рекламы, что хранит и передаёт на тот же YouTube информацию о профиле пользователя, и его предпочтениях.
А для чего мы все используем AdBlock? Уверен, не только ради блокировки назойливой рекламы, но и для того, чтобы никто не мог в твою личную интернет-жизнь полезть своими немытыми руками и навесить на неё ярлычок, причисляя тебя к той или иной категории покупателей или иным образом воздействуя на тебя. Whitelist-ить сайт, против которого ставится AdBlock — как минимум нелогично.
Выбор, разумеется, за вами, но старинная мантра "Работает — не лезь" в случае AdBlock-ов верна, как нигде.
К сожалению, туториалов по StumpWM и переходу на него я не могу вспомнить, (кроме небольшого гайда) но это компенсируется относительной простотой использования и качеством документации, которая представлена двумя ресурсами: StumpWM Wiki и StumpWM Manual.
Мануал особенно хорош — благодаря нему я себе, при наличии свободного времени, постоянно что-то новое выхакиваю, к примеру, как-то за полчаса написал простенькую реализацию цветового обозначения заряда батареи, в альтернативу той, что поставляется среди контрибьюторских плагинов. Плагины, кстати, заметно облегчают настройку и с их помощью можно дотянуть до уровня комфортности того же хомячкового XFCE, которым я раньше (до просветления подаренного Лиспом до желания попробовать более продуктивные инструменты) счастливо пользовался.
Но разумеется, как и в случае с Emacs, лучший способ хорошо кастомизировать свой WM — скоммуниз позаимствовать у других кусочки, которые понравятся. И здесь Вики уже неплохо помогает, приводя список файлов конфигурации, которые их авторы выложили на GitHub (здесь с моими добавлениями и мнениями):
Также, поскольку для настройки используется Common Lisp, могут пригодиться курительные мануалы и туториалы по этому богатому языку, которые можно найти в боковом меню сабреддита, посвящённого Common Lisp — r/Common_Lisp.
Здесь казалось бы, отличный момент для меня поделиться своим конфигом, который содержит неплохое количество озарений и ещё больше еретических костылей, но я его выложу только через этак полгода, когда польностью перейду на максимально лисповую экосистему (GuixSD + StumpWM + Emacs + Konqueror/Next), приведу все конфиги в порядок, а заодно и статью на Хабр в процессе напишу, быть может.
А пока — на здоровье! Надеюсь, вам со StumpWM будет так же комфортно, как и мне.
Статья хороша как ликбез по Linux — лично я почерпнул что-то новое, за что благодарен автору.
Но вот именно решение задачи, на примере которой проводились бенчмарки, заставляет немного поволноваться. Причина возможного беспокойства — то, что определение чётности-нечётности работает только для two's complement целых чисел, представленных в памяти последовательностью битов. Здесь есть две вещи которые могу пойти не так:
Представление целых чисел со знаком в системе может быть в форме one's complement, при которой отлицательные числа инвертируются (00000001 (+1) -> 11111110 (-1)), что делает невозможным и некорректным определение чётности через бинарное AND единицы с младшим битом. Да, здесь можно справедливо заявить, что one's complement представление уже никем не используется, но нет, и нет. Вероятность мала, но она есть.
Числа в используемом языке/библиотеке/whatever могут представляться ну совсем не в виде последовательности битов ограниченной длины. В Common Lisp, который я всей душой люблю, в том числе за его систему типов, нет чётко специфицированного метода хранения bignum-ов, и число может, в зависимости от реализации языка, храниться даже в куче, по частям. Операции же над отдельными битами bignum-ов, в силу их реализации, часто превращаются в непредсказуемые числа, потому что программист мог не учитывать, к примеру, нули в начале числа, коих много, и получить при их инвертировании, к примеру, негативный ответ (вспоминаем, как работает two's complement и one's complement представление). Может случиться и такое, что определённая реализация определённого языка будет использовать младшие биты числа для какой-то своей нужды (что звучит подозрительно, но не значит, что кто-то так не сделает), а не для представления, собственно, низших битов числа, и при этом сможет допустить прямое взаимодействие с ними (нет программ без багов — есть только те, где их пока что не нашли).
Все эти риски могут рано или поздно выстрелить, потому рекомендация использовать модуло в общем случае для определения чётности относительно оправдана.
Пользуюсь StumpWM, чувствую себя в нём отлично, тем более что он имеет схожий пользовательский опыт с Emacs, которым я уже относительно давно болею.
Из плюсов отмечу:
+ Весьма быстрый
+ Гибкая настройка, вплоть до изменения кода самого WM из конфиг-файла
+ Common Lisp как язык настройки, что позволяет втянуть существующую кодовую базу прямо в WM. Есть у меня даже безумный проект написать небольшой плагин с онлайн-переводчиком, доступным по горячей клавише.
+ Вдохновлён Emacs, соответственно, нацелен на продуктивность и настраиваемость.
Разумеется, есть и минусы:
— Не все функции и хаки задокументированы, но пользователи некоторые из них переоткрывают, поэтому чужие конфиги помогают здорово. А все мы порой страдаем эффективной прокрастинацией а-ля "А настрою-ка я свой WM/редактор/whatever", так что вас впереди ждёт много открытий, если вы начинаете пользоваться StumpWM.
— Common Lisp, который является отдельным языком, который придётся учить, если ещё не знаете.
— Вдохновлён Emacs, поэтому многие вещи могут казаться странными.
Резюмируя: StumpWM как менеджер окон хорош, но на полную он начинает работать в руках людей, которые знают хотя бы один язык из семейства Lisp, со всеми вытекающими: хакинг, метапрограммирование, compile-time computing.
Здравствуйте! Статья действительно хороша для выявления недостатков в объяснении тем с нуля, сам делал подобные ошибки, пытаясь знакомых учить основам программирования.
Но комментарий этот я пишу не только из благодарности, но из **хакерского чувства челленджа**, вызванного данной цитатой:
Если у вас есть идея, как решить эту задачу без цикла каким-то еще способом, напишите, пожалуйста, в комментариях.
Текст задачи:
Пользователь вводит число Х. Вывести в столбик числа от 0 до 9 и поставить знак '+' напротив того числа, которое равно Х.
Исходный код для решения задачи на языке Arc (краткий до невозможности диалект Lisp), как на первом попавшемся под руку языке, ниже:
(def mark-input (num)
; Определяем template -- шаблон строки на вывод
(let template "0 \n1 \n2 \n3 \n4 \n5 \n6 \n7 \n8 \n9 \n"
(if (and (>= num 0) (<= num 9))
; Если число находится в промежутке 0-9,
; то вписываем '+' в template[(num*3) + 1]
; (Почему? Посмотрите на template
; и расположение символов в нём).
(= (template (+ 1 (* num 3))) #\+))
; Выводим итоговую строку. Не спрашивайте, откуда nil.
(pr template) nil))
Ещё одно неортодоксальное мнение: для всего этого есть Emacs.
И да, я осознаю, что такая экосистема очень специфична и не всем подойдёт. Но то, что вышеперечисленные расширения Emacs даже из терминала запускаются и удобно используются, важно — мы же здесь о легковесности и эффективности говорим, а Emacs в это может.
А ещё скоро (в следующей версии, 28) завезут нативную компиляцию, так оно будет совсем мгновенно работать...
Всё бы хорошо здесь, но ведь почему-то AdBlock-сервисы блокируют этот адрес. Как рассказано здесь, "googlesyndication" — это та часть Гугловской рекламы, что хранит и передаёт на тот же YouTube информацию о профиле пользователя, и его предпочтениях.
А для чего мы все используем AdBlock? Уверен, не только ради блокировки назойливой рекламы, но и для того, чтобы никто не мог в твою личную интернет-жизнь полезть своими немытыми руками и навесить на неё ярлычок, причисляя тебя к той или иной категории покупателей или иным образом воздействуя на тебя. Whitelist-ить сайт, против которого ставится AdBlock — как минимум нелогично.
Выбор, разумеется, за вами, но старинная мантра "Работает — не лезь" в случае AdBlock-ов верна, как нигде.
К сожалению, туториалов по StumpWM и переходу на него я не могу вспомнить, (кроме небольшого гайда) но это компенсируется относительной простотой использования и качеством документации, которая представлена двумя ресурсами: StumpWM Wiki и StumpWM Manual.
Мануал особенно хорош — благодаря нему я себе, при наличии свободного времени, постоянно что-то новое выхакиваю, к примеру, как-то за полчаса написал простенькую реализацию цветового обозначения заряда батареи, в альтернативу той, что поставляется среди контрибьюторских плагинов. Плагины, кстати, заметно облегчают настройку и с их помощью можно дотянуть до уровня комфортности того же хомячкового XFCE, которым я раньше (
до просветления подаренного Лиспомдо желания попробовать более продуктивные инструменты) счастливо пользовался.Но разумеется, как и в случае с Emacs, лучший способ хорошо кастомизировать свой WM —
скоммунизпозаимствовать у других кусочки, которые понравятся. И здесь Вики уже неплохо помогает, приводя список файлов конфигурации, которые их авторы выложили на GitHub (здесь с моими добавлениями и мнениями):Также, поскольку для настройки используется Common Lisp, могут пригодиться курительные мануалы и туториалы по этому богатому языку, которые можно найти в боковом меню сабреддита, посвящённого Common Lisp — r/Common_Lisp.
Здесь казалось бы, отличный момент для меня поделиться своим конфигом, который содержит неплохое количество озарений и ещё больше еретических костылей, но я его выложу только через этак полгода, когда польностью перейду на максимально лисповую экосистему (GuixSD + StumpWM + Emacs + Konqueror/Next), приведу все конфиги в порядок, а заодно и статью на Хабр в процессе напишу, быть может.
А пока — на здоровье! Надеюсь, вам со StumpWM будет так же комфортно, как и мне.
Статья хороша как ликбез по Linux — лично я почерпнул что-то новое, за что благодарен автору.
Но вот именно решение задачи, на примере которой проводились бенчмарки, заставляет немного поволноваться. Причина возможного беспокойства — то, что определение чётности-нечётности работает только для two's complement целых чисел, представленных в памяти последовательностью битов. Здесь есть две вещи которые могу пойти не так:
Все эти риски могут рано или поздно выстрелить, потому рекомендация использовать модуло в общем случае для определения чётности относительно оправдана.
Пользуюсь StumpWM, чувствую себя в нём отлично, тем более что он имеет схожий пользовательский опыт с Emacs, которым я уже относительно давно болею.
Из плюсов отмечу:
+ Весьма быстрый
+ Гибкая настройка, вплоть до изменения кода самого WM из конфиг-файла
+ Common Lisp как язык настройки, что позволяет втянуть существующую кодовую базу прямо в WM. Есть у меня даже безумный проект написать небольшой плагин с онлайн-переводчиком, доступным по горячей клавише.
+ Вдохновлён Emacs, соответственно, нацелен на продуктивность и настраиваемость.
Разумеется, есть и минусы:
— Не все функции и хаки задокументированы, но пользователи некоторые из них переоткрывают, поэтому чужие конфиги помогают здорово. А все мы порой страдаем эффективной прокрастинацией а-ля "А настрою-ка я свой WM/редактор/whatever", так что вас впереди ждёт много открытий, если вы начинаете пользоваться StumpWM.
— Common Lisp, который является отдельным языком, который придётся учить, если ещё не знаете.
— Вдохновлён Emacs, поэтому многие вещи могут казаться странными.
Резюмируя: StumpWM как менеджер окон хорош, но на полную он начинает работать в руках людей, которые знают хотя бы один язык из семейства Lisp, со всеми вытекающими: хакинг, метапрограммирование, compile-time computing.
Но комментарий этот я пишу не только из благодарности, но из **хакерского чувства челленджа**, вызванного данной цитатой:
Текст задачи:
Исходный код для решения задачи на языке Arc (краткий до невозможности диалект Lisp), как на первом попавшемся под руку языке, ниже: