evince
Решил закончить прерванное неделю назад обновление генты. Остался в том числе evince, который меня раньше вполне устраивал. Обновил... Лучше б не обновлял. Кто-нибудь знает как убрать этот блевотный планшетоинтерфейс и вернуть то, что было?
Решил закончить прерванное неделю назад обновление генты. Остался в том числе evince, который меня раньше вполне устраивал. Обновил... Лучше б не обновлял. Кто-нибудь знает как убрать этот блевотный планшетоинтерфейс и вернуть то, что было?
Давайте сделаем списочек из старых добрых фильмов, которые сейчас не стыдно посмотреть на больших экранах.
Начну:
Чужой (1979г.), чужие (1986г.) - если выкинуть некоторые сцены, то по декорациям даст фору многим современным фильмам. Сюда же можно отнести другие серии про чужого.
Хищник (1987г.) - тоже даст фору по декорациям.
Судья Дредд (1995г.) - тоже на славу постарались с декорациями.
Матрица (1999г.) - следующие части тоже хороши. Правда говорят в последней части концовку запороли.
Звездные войны: Эпизод 1 (1999г.)
Призрак в доспехах (1995г.) - Хоть и анимашка, но рисовка и сюжет годные
Vidocq (2001г.) - Год уже современнее, жанр скорее триллер с элементами фентези, но очень качественный фильм для своего времени.
З.ы.
Линукс тут при том, что линуксоиды ерунду не посоветуют.
Смирившись с неизбежностью перетащил продакшен на Blender 2.71. Снова вернулся к целшейдингу и аниме. Freestyle стал ещё няшней и удобней. Топологию модели делал под subsurf и с прицелом на корректное затенение оной. Следующей ступенью будут morph targets на шейпах чтобы можно было настраивать форму лица, ну и естественно фэйсриг.
>>> Просмотр (1920x1080, 1144 Kb)
«{Super,Alt,Shift,Control}+?» вызывает попап
сам виджет: https://github.com/actionless/awesome_config/blob/devel/actionless/hotkeys.lua (там дикий ужас, не было времени сделать красиво, хотелось по-скорее увидеть как оно будет работать)
пример файла с самими хоткеями: https://github.com/actionless/awesome_config/blob/devel/config/keys.lua
PNG почему-то не захотело загружаться:
>>> Просмотр (1600x900, 323 Kb)
Сабж. Надо, чтобы более-менее вписалось в такое оформление.
Долгое время изучал Wiki, но на многие вопросы так и не нашел ответов, поэтому начал изучать lua код. И в результате этого изучения, родилась эта статья(перенесена на wiki). Опытные, подскажите, может где то есть возможность оптимизировать описанный код.
Панель задач - отображает по умолчанию клиенты с активного тега/тегов.
Перед началом работы скопируйте библиотеки в домашний каталог, если до сих пор этого не сделали.
mkdir -p ~/.config/awesome/themes
cp /etc/xdg/awesome/rc.lua ~/.config/awesome/rc.lua
cp -R /usr/share/awesome/lib/* ~/.config/awesome/
cp -R /usr/share/awesome/themes/* ~/.config/awesome/themes/
Вообще, за обработку панели задач отвечает файл awful/widget/tasklist.lua
Так что если возникнет желание ознакомится со всеми возможностями панели задач, изучите этот файл. Также для работы этого файла потребуются другие библиотеки lua (вызываемые оттуда функции и т.д.), они прописаны в начале файла, это те самые require. Имейте в виду, что код для 3.4 и 3.5 в библиотеке tasklist, как и названия функций в них довольно существенно отличается.
==Управление списком задач==
Для управления открытми клиентами существуют следующие клавиши:
Mod4 + Shift + r - Перерисовать активное окно.
Mod4 + m - Развернуть на весь экран.
Mod4 + n - Свернуть.
Mod4 + Control + n - Восстановить.
Mod4 + f - Полноэкранный режим.
Mod4 + Shift + c - Убить выбранный клиент.
Mod4 + t - Прикрепить поверх всех.
==Разбираем rc.lua==
Разбирая rc.lua можно обнаружить следующий код, связанный с панелью задач
mytasklist = {} --создаем таблицу панели задач
mytasklist.buttons = awful.util.table.join( --прикрепляем клавиши мыши к панели задач
awful.button({ }, 1, function (c) --нажатие левой кнопки
if c == client.focus then --свернуть/развернуть приложение
c.minimized = true
else
-- Without this, the following
-- :isvisible() makes no sense
c.minimized = false
if not c:isvisible() then
awful.tag.viewonly(c:tags()[1])
end
-- This will also un-minimize
-- the client, if needed
client.focus = c
c:raise()
end
end),
awful.button({ }, 3, function () --нажатие правой клавиши
if instance then --отображает список всех клиентов/приложений
instance:hide()
instance = nil
else
instance = awful.menu.clients({
theme = { width = 250 }
})
end
end),
awful.button({ }, 4, function () --колесо прокрутки
awful.client.focus.byidx(1) --перейти на следующий клиент
if client.focus then client.focus:raise() end
end),
awful.button({ }, 5, function () --колесо прокрутки
awful.client.focus.byidx(-1) --перейти на предыдущий клиент
if client.focus then client.focus:raise() end
end))
....
-- Create a tasklist widget - создание виджета tasklist
mytasklist[s] = awful.widget.tasklist(s, awful.widget.tasklist.filter.currenttags, mytasklist.buttons)
....
layout:set_middle(mytasklist[s]) --Располагаем список задач в центре панели
--awful.button({ }, 4, function () --колесо прокрутки
-- awful.client.focus.byidx(1) --перейти на следующий клиент
-- if client.focus then client.focus:raise() end
-- end),
--awful.button({ }, 5, function () --колесо прокрутки
-- awful.client.focus.byidx(-1) --перейти на предыдущий клиент
-- if client.focus then client.focus:raise() end
-- end))
И добавьте завершающую скобку после закомментированного кода, иначе выдаст ошибку
)
===Варианты для правой кнопки мыши===
====Закрыть приложение====
Для того, чтобы при нажатии правой кнопки мыши мы могли закрывать приложение (как в OpenBox или Tint2), а не открывать список меню, переделайте код (или закомментируйте его, если вы не планируете использовать правую клавишу для панели задач).
awful.button({ }, 3, function ()
if instance then
instance:hide()
instance = nil
else
instance = awful.menu.clients({
theme = { width = 250 }
})
end
end),
awful.button({ }, 3, function (c)
c:kill()
end ),
====Альтернативное меню====
Если вас не устраивает стандартное контекстное меню в панели задач, то вы можете его заменить, на то, которое нужно именно вам, далее приводится лишь один из возможных вариантов. Для начала заменим стандартный вызов awful.button на следующий:
awful.button({ }, 3, function (c)
if instance then
instance:hide()
instance = nil
else
instance = context_menu(c)
end
end ),
function context_menu(c)
if c.minimized then --меняем текст элемента меню в зависимости от состояния
cli_min = "Развернуть"
else
cli_min = "Свернуть"
end
if c.ontop then
cli_top = "★ Поверх всех"
else
cli_top = " Поверх всех"
end
if awful.client.floating.get(c) then
cli_float = "★ Floating"
else
cli_float = " Floating"
end
--создаем список тегов(в виде подменю), для перемещения клиента на другой тег
tag_menu = { }
for i,t in pairs(tags.names) do
if not tags[c.screen][i].selected then --удаляем из списка выбранный тег/теги
table.insert(tag_menu, { tostring(t), function() awful.client.movetotag(tags[c.screen][i]) end } )
end
end
taskmenu = awful.menu({ items = { { "Переместить на", tag_menu },
{ cli_min, function() c.minimized = not c.minimized end },
{ "Fullscreen", function() c.fullscreen = not c.fullscreen end, beautiful.layout_fullscreen },
{ cli_float, function() awful.client.floating.toggle(c) end },
{ cli_top, function() c.ontop = not c.ontop end },
{ "Закрыть", function() c:kill() end },
width = 150
} )
taskmenu:show()
return taskmenu
end
==Отобразить только иконки или текст==
Если вас не устраивает отображение текста и иконок одновременно (например вы большой любитель Unity или Win7), то можно настроить Awesome для отображения только иконок или только текста у приложений. Есть один недостаток, если для приложения не назначено иконки, то соответсвенно и отображать будет нечего (у меня такая ситуация наблюдалась с терминалом xterm, если у вас похожая ситуация, то назначьте иконку по умолчанию для приложений не имеющих собственных иконок(описано ниже).
Откройте ~/.config/awesome/awful/widget/tasklist.lua и в функции widget_tasklist_label_common() (для 3.4) или tasklist_label (для 3.5) замените return text, bg.... на следующий код:
return not theme.tasklist_only_icon and text or '', bg, status_image, not tasklist_disable_icon and c.icon or nil
Затем, создайте переменную в вашем theme.lua со следующим содержанием:
--для отображения только иконок
theme.tasklist_only_icon = true
--для отображения только текста
tasklist_disable_icon = true
Примечание: Не определяйте как одновременно обе этих переменных, иначе вы вообще не увидите своих задач.
Есть еще один способ убрать текст в Awesome 3.4 (к сожалению в 3.5 код вызываемой функции был изменен и поэтому этот способ в нем не работает), но здесь все манипуляции мы будем производить только с файлом rc.lua. Найдите следующий код:
mytasklist[s] = awful.widget.tasklist(function(c)
return awful.widget.tasklist.label.currenttags(c, s)
end, mytasklist.buttons)
mytasklist[s] = awful.widget.tasklist(function(c)
local task = { awful.widget.tasklist.label.currenttags(c, s) }
return '', task[2], task[3], task[4]
end, mytasklist.buttons)
Аналогичным способом можно удалить и иконки в Awesome 3.4. Откройте ваш rc.lua, найдите
mytasklist[s] = awful.widget.tasklist(function(c)
return awful.widget.tasklist.label.currenttags(c, s)
end, mytasklist.buttons)
mytasklist[s] = awful.widget.tasklist(function(c)
local task = { awful.widget.tasklist.label.currenttags(c, s) }
return task[1], task[2], task[3], nil
end, mytasklist.buttons)
==Иконка по умолчанию==
Для некоторых приложений не установлены иконки по умочанию (обычно это терминалы), и если вы, например, используете только иконки в панели задач, или используете отображение приложений в тегах, то приложения без иконок вы просто не увидите. Для решения этой проблемы отредактируйте функцию "tasklist_update" в файле ~/.config/awesome/awful/widget/tasklist.lua. В функции tasklist_update перед строкой table.insert вставьте следующий код:
if not c.icon then
c.icon = capi.image("path/to/icon/default_icon.png")
end
==Настройка внешнего вида==
Для настройки панели задач, в theme.lua вы можете определить следующие переменные:
===Awesome 3.5===
theme.tasklist_fg_normal - цвет текста панели задач, если значение не определено, то используется значение theme.fg_normal
theme.tasklist_bg_normal - цвет фона панели задач, если значение не определено, то используется значение theme.bg_normal
theme.tasklist_fg_focus - цвет текста активного приложения, если значение не определено, используется значение theme.fg_focus
theme.tasklist_bg_focus - цвет фона активного приложения, если значение не определено, то используется значение theme.bg_focus
theme.tasklist_fg_urgent - цвет текста «срочного» приложения, если не определено, то будет использоваться значение из theme.fg_urgent
theme.tasklist_bg_urgent цвет фона «срочного» приложения, если не определено, то будет использоваться значение theme.bg_urgent
theme.tasklist_fg_minimize - цвет текста свернутого приложения, если не определено, то будет использоваться значение из theme.fg_minimize
theme.tasklist_bg_minimize - цвет фона свернутого приложения, если не определено, то будет использоваться значение из theme.bg_minimize
theme.bg_image_normal - позволяет установить изображение для неактивных в данный момент клиентов
theme.bg_image_focus - позволяет установить фоновое изображение для активного клиента
theme.bg_image_urgent - позволяет установить фоновое изображения для «срочного» клиента
theme.bg_image_minimize - позволяет установить фоновое изображение для свернутого клиента
theme.tasklist_disable_icon - позволяет отключить отображение иконок, если значение равно true
theme.tasklist_font - шрифт для панели задач, если не определено, то будет испльзоватся шрифт из theme.font
theme.tasklist_sticky - позволяет установить текст для «липкого» клиента, если значение не установлено, то используется «▪»
theme.tasklist_ontop - позволяет установить текст/символ для приложения «поверх всех», если значение не установлено, то используется '⌃'
theme.tasklist_floating - текст для приложения в «плавающем» режиме, если значение не установлено, то используется '✈'
theme.tasklist_maximized_horizontal - текст для развернутого по горизонтали приложения, если на установлено, то используется '⬌'
theme.tasklist_maximized_vertical - текст для приложения развернутого по вертикали, если на установлено, то используется '⬍'
===Awesome 3.4===
Здесь возможностей по настройке намного меньше, это еще одна причина перейти на более новую версию.
theme.tasklist_fg_focus - цвет текста активного приложения, если значение не определено, используется значение theme.fg_focus
theme.tasklist_bg_focus - цвет фона активного приложения, если значение не определено, то используется значение theme.bg_focus
theme.tasklist_fg_urgent - цвет текста "срочного" приложения, если не определено, то будет использоваться значение из theme.fg_urgent
theme.tasklist_bg_urgent цвет фона "срочного" приложения, если не определено, то будет использоваться значение theme.bg_urgent
theme.tasklist_fg_minimize - цвет текста свернутого приложения, если не определено, то будет использоваться значение из theme.fg_minimize
theme.tasklist_bg_minimize - цвет фона свернутого приложения, если не определено, то будет использоваться значение из theme.bg_minimize
theme.tasklist_floating_icon - иконка для приложения в "плавающем" режиме
theme.tasklist_font - шрифт для панели задач, если не определено, то будет испльзоватся шрифт из theme.font
===Высота панели ===
Если вас не устраивает стандартная высота панели задач, то ее можно изменить, для этого найдите в rc.lua код отвечающий за создание контейнера mywibox и измените его следующим образом:
mywibox[s] = awful.wibox({ position = "top", height = 24, screen = s })
bottomwibox = {}
bottomwibox[s] = awful.wibox({ position = "bottom", height = 27, screen = s })
bottomwibox[s].widget = {
{
mylauncher,
layout = awful.widget.layout.horizontal.leftright
},
mytasklist[s],
layout = awful.widget.layout.horizontal.rightleft
}
==Порядок открытых приложений==
По умолчанию новое приложение отображается слева от открытых ранее. Но если вы привыкли к другому, например в Gnome или KDE, то можно настроить, чтобы вновь открываемые приложения открывались справа, т.е. список задач был отсортирован по запуску, где первым в списке будет первое открытое приложение, а последним соответственно последнее. Для этого необходимо открыть файл ~/.config/awesome/awful/widget/tasklist.lua. Все манипуляции с этими файлами лучше всего делать когда они находится в домашнем каталоге, чтобы если вы что-то испортите, можно было их легко восстановить. Итак, найдите в этом файле функцию "function tasklist_update" в ней есть следующая строка:
"'Awesome 3.4"'
table.insert(shownclients,c)
table.insert(shownclients, 1, c)
table.insert(clients, c)
table.insert(clients, 1, c)
==Ширина приложений в списке задач ==
Если вас не устраивает, то, что одно запущенное приложение можент занимать все доступное пространоство, на панели задач, то это поведение можно немного изменить. Для этого потребуется отредактировать файл ~/.config/awesome/awful/widget/tasklist.lua
===Awesome 3.4===
Найдите функцию new, в ней необхоидмо изменить
layout = layout.horizontal.flex
layout = layout.horizontal.leftright
Найдите функцию tasklist.new затем замените
local w = base_widget or flex.horizontal()
local w = base_widget or fixed.horizontal()
local fixed = require("wibox.layout.fixed")
Правда ширина каждого клиента будет зависеть от названия, в принципе это тоже можно поправить если вам требуется фиксированная ширина клиентов, для этого нужно изменить в файле tasklist.lua функцию widget_tasklist_label_common (3.4) или tasklist_label (в 3.5): В начало файла поместите
local string = string
if #name >20 then
name = string.sub(name,1,20)
end
Есть еще один ньюанс, при изменении испльзуемой схемы(layout), приложения теперь перестают масштабироваться, и в результате их теперь на панель входит штук 5, конечно это можно изменить, но изменений потребуется достаточно много и они уже выходят за рамки данной статьи.
==Список клиентов ==
По умолчанию в файле rc.lua для обработки списка клиентов для tasklist используется следующий код:
Awesome 3.5
mytasklist[s] = awful.widget.tasklist(s, awful.widget.tasklist.filter.currenttags, mytasklist.buttons)
Awesome 3.4
mytasklist[s] = awful.widget.tasklist(function(c)
return awful.widget.tasklist.label.currenttags(c,s)
end, mytasklist.button)
Awesome 3.4
awful.widget.tasklist.label.allscreen - для отображения клиентов со всех экранов
awful.widget.tasklist.label.alltags - для отображения клиентов со всех тегов текущего экрана
awful.widget.tasklist.label.currenttags - для отображения клиентов с текущего тега
awful.widget.tasklist.label.focused - для оторажения только клиентов в фокусе
Awesome 3.5
awful.widget.tasklist.filter.allscreen - для отображения клиентов со всех экранов
awful.widget.tasklist.filter.alltags - для отображения клиентов со всех тегов текущего экрана
awful.widget.tasklist.filter.currenttags - для отображения клиентов с текущего тега
awful.widget.tasklist.filter.minimizedcurrenttags - для отображения свернутых клиентов на текущем теге
awful.widget.tasklist.filter.focused - для оторажения только клиентов в фокусе
Awesome 3.5 - tasklist.lua - function tasklist_update
if not (c.skip_taskbar or c.hidden
or c.type == "splash" or c.type == "dock" or c.type == "desktop")
and filter(c, s) then
table.insert(clients, c)
end
==Сигналы==
Сигналы - это система сообщений которую рассылает ядро Awesome для управления виджетами, клиентами, тегами и т.д. Подробне ознакомится с системой сигналов вы можете [Signals/ru|здесь]. Итак, поддерживаются следующие сигналы:
tag.attached_connect_signal(screen, "property::selected", u)
tag.attached_connect_signal(screen, "property::activated", u)
capi.client.connect_signal("property::urgent", u)
capi.client.connect_signal("property::sticky", u)
capi.client.connect_signal("property::ontop", u)
capi.client.connect_signal("property::floating", u)
capi.client.connect_signal("property::maximized_horizontal", u)
capi.client.connect_signal("property::maximized_vertical", u)
capi.client.connect_signal("property::minimized", u)
capi.client.connect_signal("property::name", u)
capi.client.connect_signal("property::icon_name", u)
capi.client.connect_signal("property::icon", u)
capi.client.connect_signal("property::skip_taskbar", u)
capi.client.connect_signal("property::screen", u)
capi.client.connect_signal("property::hidden", u)
capi.client.connect_signal("tagged", u)
capi.client.connect_signal("untagged", u)
capi.client.connect_signal("unmanage", u)
capi.client.connect_signal("list", u)
capi.client.connect_signal("focus", u)
capi.client.connect_signal("unfocus", u)
u = function () tasklist_update(screen, w, buttons, filter, data, style, uf) end
Господа музыканты, какие хорошие DAW'ы есть на Linux? Есть ли что-то кроме Rosegarden? Желательно, чтобы этот DAW был относительно стабилен, поддерживал VST и вообще был удобен.
Или всё же использовать Rosegarden? На моей памяти он слишком уж часто вылетал.
И вообще, насколько целесообразно использовать Linux для создания музыки? Какие могут возникнуть проблемы?
ШГ: PT Sans, monoOne, патчи из убунты
GTK: «numix color changer» — маленький скриптик который перекрашивает тему вместе с svg-шками в заданные цвета, ну и в самой темке табы поменял на более приятные глазу. Цвета поставил как в любимой Shiki Nouveau Noble
В осоме цвета стоят те же.
переписал asyncshell (cast unlog1c) — теперь больше нет необходимости хранить временные файлы
так же наконец-таки нашел время распихать огромный конфиг осома по модулям, жить стало гораздо приятнее после этого :)
всё еще продолжаю рефакторить виджеты, теперь, имхо, у них чуть более интуитивные интерфейсы и разумные дефолты
добавил виджет для netctl/netctl-auto, добавил возможность выбрать бэкенд для музыкального виджета (т.к. на разных машинах стоят разные плеера)
кстати, такие огромные рамки — не столько для украшения, но помогают мне быстрее найти активное окно, когда используется несколько дисплеев
сам конфиг здесь: https://github.com/actionless/awesome_config но там еще много чистить надо
так пока и не дошли руки сделать попап с хоткеями.
>>> Просмотр (1440x900, 585 Kb)
Какие плагины вы используете, чтобы превратить vim в IDE для ________ (вписать язык)?
Интересует:
И общее для всех языков:
Ссылки:
Пытаюсь заюзать http://lists.gnu.org/archive/html/gnu-emacs-sources/2007-06/msg00037.html
Все сделал по рецепту вверху сообщения, еще добавил -L russian к параметру -m, уже в дебагере сижу, вызывается у меня (call-process ...), и возвращает 2, я так понимаю, что это возврат команды enca. И тут я вообще не понимаю, что происходит. Вызов из шелла «enca -m -L russian /home/user/header.h» работает.
Данный call-process в дебаге имеет вид:
(call-process "/usr/bin/enca" target enca-buffer nil "-m" "-L russian")
step >>>
call-process("/usr/bin/enca" "/home/user/header.h" #<buffer *enca*> nil "-m" "-L russian")
Вместо буфера enca-buffer подставлял '(:file «/tmp/123») - создается пустой файл. Явно ошибка запуска самой enca.
Подскажите, куда копать, пожалуйста
Вышли окончательные шесть статей каталога. На своей страничке я разместил постоянные ссылки.
Добавлены части, охватывают следующие разделы: Хобби или работа (литература, музыка, рецепты, шахматы, игры и финансы), Графика (вставка и создание), Таблицы и Плавающие объекты, Вёрстка, Справочно-поисковый аппарат издания (оглавление, колонтитулы, сноски, библиография и алфавитный указатель) и Программирование в среде LaTeX.
( читать дальше... )
Вот так и живу.
Монтаж, графика, цветокоррекция, 3д, сведение, и многое другое)))
http://wstaw.org/m/2014/03/20/screen1.jpeg
http://wstaw.org/m/2014/03/20/screen3.jpeg
http://wstaw.org/m/2014/03/20/screen6.jpeg
http://wstaw.org/m/2014/03/20/screen4.jpeg
http://wstaw.org/m/2014/03/20/screen5.jpeg
Значки - https://github.com/megabaks/stuff/tree/master/x11-themes/compass
Цвет - Krita-Blender.colors http://bpaste.net/show/191141/
Плазма - Tibana
Обои, заставки - Excalibur
Шрифты - Droid Sans
>>> Просмотр (1600x900, 96 Kb)
Долго сидел на i3wm, но после его падений при использовании двух мониторов и внезапного решения проблемы с невозможностью переключить табы в Осоме, когда язык клавиатуры «не английский» я решил-таки настроить Осом.
Итак.
> awesome -v
awesome devel (The Fox)
• Build: for x86_64 by gcc version 4.8.2 (abuild@build33)
• Compiled against Lua 5.2.2 (running with Lua 5.2)
• D-Bus support: ✔
В планах:
1) возможно, заюзать плагин почты, но хочется сделать это так, чтобы в отдельном файле, чтобы его в gitignore положить. Если подскажете, как - буду рад;
2) допилить менюшку Осома, чтобы были самые пользуемые приложения;
3) есть трабла с индикатором раскладки клавиатуры. sbxkb, который я юзаю, падает при рестартах Осома (когда нужно их сделать). А может, и не только при рестартах. В общем, как видите - на скрине нет индикатора: я уже забил. Хочется найти какой-нибудь виджет для этих целей, чтобы не зависеть от падающих поделок;
4) да вроде все.
Я пока доволен.
Ах, да! Мой конфиг базируется здесь: https://bitbucket.org/bvn13/awesome/overview
>>> Просмотр (1366x768, 126 Kb)
Вот уже почти месяц наслаждаюсь использованием Генты. Сегодня обнаружилась непонятка. Скомпилился virtualbox, а меню kde его нет, в чем дело, товарищи?! :\
Некоторое время назад взялся за сабж. Я выбрал его именно потому, что слышал очень много отзывов о том, что это «только о программировании» и «ничего лишнего». Я несколько разочарован.
Первое, не самое важное, но тем не менее. Авторы взяли в качестве ЯП scheme, мотивируя это тем, что синтаксис очень прост для освоения новичком. Синтаксис то да, прост, но семантика не так уж и проста, и совершенно непонятно, почему было не взять любое другое подмножество лиспа, или даже бейсика, ведь для демонстрации принципов о которых там рассказывается вовсе не требуется сомнительное «волшебство» замыканий и продолжений. На одном синтаксисе далеко не уедешь, а семантику scheme (до глав о метаяз. абстракции) там не рассматривают вообще, и при этом заявляется, что низкий порог вхождения гарантирован. Это, мягко говоря, неправда.
Но самое главное — там слишком много воды. Для рассмотрения достаточно простых вещей, там берутся сложные, избыточные примеры. Например, главы о банковских счетах. Ведь основная мысль там — проблема разделения ресурса. Нахрена спрашивается было городить левые процедуры, вроде withdraw, get-money, put-money и проч. (названия там другие, но не суть), если для демонстрации идеи достаточно было change-balance и check-balance. Ведь основная проблема - в том чтобы посмотреть, а потом снять, чтобы другой объект не изменил в промежутке между двумя операциями. Вместо того, чтобы концентрироваться на основной вычислительной проблеме, на нас выливают тонны воды, в которой расмотреть основную мысль не очень то и просто.
Баланс только для примера. Вообще, вся книга написана тяжелым избыточным языком. Примеры нарочито переусложнены и перегружены ненужными (для прояснения текущей идеи) свистоперделками.
В связи с этим, хочу спросить, существует ли другая, возможно, более старая даже, книжка о программировании (и только о нем — не о типах, не об особенностях той или иной парадигмы и пр.), но только без демагогии?
UPD Забыл сказать, что я в корне не принимаю такие подходы, как «Структурное программирование», что-то в стиле «Something considered harmful» «не отстрели себе яйца», и языки заточенные под компиляцию. Поэтому подобные вещи не предлагать:)
Привет.
Подскажите, как заставить org-mode + texlive «печатать» кириллицу?
дистрибутив linuxmint, «extra», «кириллические» и «ru» пакеты для texlive установлены.
.emacs
(require 'color-theme)
(setq tab-width 4)
(setq indent-tabs-mode nil)
(custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(inhibit-startup-screen t))
(custom-set-faces
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(default ((t (:family "DejaVu Sans Mono" :foundry "unknown" :slant normal :weight normal :height 99 :width normal)))))
(progn (color-theme-initialize)
(color-theme-xemacs))
Которое называется emacs. Как? Любые методы, кроме установки систем ввода типа scim приветствуются (X11/KDE)
Выбрана тема natural_gentoo, фреймбуффер uvesafb, использую splashutils.
Grub.cfg: video=uvesafb:1600x1200-32,mtrr:3,ywrap splash=verbose,theme:natural_gentoo
Когда во время загрузки взлетает fbcondecor, всё нормально. Потом запускается KDM, если переключусь на tty, выглядит вот так: http://i.imgur.com/IPs1gX5.png. Если заново задам декорацию командой (видна на втором скрине), выглядит вот так (как надо): http://i.imgur.com/g4spLQU.png. После переключения туда-сюда на иксы и обратно - все опять сбрасывается к кривому виду. Драйвера Nvidia. Что делать, господа?
http://wiki.gentoo.org/wiki/Fbsplash
За декорации консоли отвечает splashutils, а в мануале по настройке сказано, что для использования всего этого необходим initramfs. Мне не нужен splash, хотелось бы только декорации консоли во фреймбуффере, и без initramfs. Есть ли способы достичь желаемого?
← предыдущие | следующие → |