LINUX.ORG.RU

Сообщения SeTSeR

 

Рассчёт массива чисел Фибоначчи в compile-time C++

На примере задачи о числах Фибоначчи хочу освоить программирование на плюсовых шаблонах. Задача - найти n-ное число Фибоначчи. Когда n известно, никаких проблем нет, решение понятно:

template<int n>
class Fibonacci {
public:
    static const int value = Fibonacci<n-1>::value + Fibonacci<n-2>::value;
};

template<>
class Fibonacci {
public:
    static const int value = 1;
};

template<>
class Fibonacci {
public:
    static const int value = 1;
};

Но n в момент компиляции неизвестно, известно лишь, что оно не больше 45. Поэтому я хотел бы насчитать все числа до 45-го и забить в массив, а потом выдать n-ное. Как это реализовать на шаблонах или constexpr?

 , ,

SeTSeR
()

Перехват нажатий клавиш в gtk2hs

Есть пара вопросов по Haskell и Gtk2hs:

Во-первых, как правильно перехватывать нажатия клавиш в Gtk2Hs? Дока предлагает на keyPressEvent повесить функцию, которая с помощью tryEvent будет формировать событие, отвечающее нажатию обрабатываемой клавиши. Как это вообще работает и что делать, если нужно обработать нажатия нескольких клавиш?

Во-вторых, сейчас моя программа представлена как цепочка состояний, характеризуемых несколькими значениями. Собственно программа - функция, рекурсивно запускающая переход к следующему состоянию. Каким образом из функции перехвата нажатия клавиши можно в этой цепочке подменить состояние?

Ну и вот код того, что я там понаписал: http://pastebin.com/nq9DwWG4

 ,

SeTSeR
()

HP Pavillion не выходит из сна

При установке Gentoo столкнулся с несколькими проблемами: Во-первых, у меня как-то криво работает systemd suspend. В сон комп уходит, но не просыпается(не включается экран, на клавиатуру/мышь реакции никакой). Логи systemd смотрел, запись о суспенде там есть, о выходе из него - нет. Не подскажете, куда смотреть? В гугле искал, ничего не нашёл.

Во-вторых, не работает гибернация. Просто дропается на первый экран(где должен быть tty1/tty0). Своп раздел создал, в fstab прописал, в командную строку ядра тоже.

В-третьих, при загрузке GRUB почему-то не переключается на выхлоп ядра/systemd. Даже после загрузки по Ctrl-F{1..6} висит «Загружается Linux $(uname -r)»

Гибернация работает нормально, а насчёт третьей проблемы - я ССЗБ, отключил поддержку фреймбуфера.

Ноут вот этот

Ядро 4.1.15-gentoo-r1

setser@gentoo ~ $ sudo lspci | grep Display
01:00.0 Display controller: Advanced Micro Devices, Inc. [AMD/ATI] Topaz XT [Radeon R7 M260/M265]
setser@gentoo ~ $ sudo lspci | grep VGA
00:01.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Richland [Radeon HD 8610G]

Gentoo stable

 , , ,

SeTSeR
()

Анализ ГПСЧ на Haskell

Дан линейный конгруэнтный ГПСЧ:

x_n = (a*x_{n-1}+b*x_{n-2}) mod m

Где a, b, c, m - константы, заранее неизвестные.

gen :: Int -> Int -> Int -> Int -> Int -> Int -> Int

И для этого генератора надо вычислить период, т. е. написать функцию:

period :: (Int -> Int -> Int) -> Int

В принципе, рабочий вариант этой функции у меня уже был, но он использовал списки, а по заданию это запрещено. Как это более-менее красиво реализовать без списков? Пока в голову приходят только итеративные варианты, которые реализовывать не очень красиво.

 

SeTSeR
()

Не работает звук в Gentoo под VMWare

subj

Что я делал для решения: 1) Пытался поставить VMWare Tools. В процессе установки не скомпилился ни один модуль, причину понять нее могу, make выдаёт знаки вопроса вместо ошибок. Видимо, неправильная кодировка, но я не знаю, как это фиксить. После этого демон запускается, но ни звука, ни ресайза дисплея нет, vmware-user выдаёт:

could not open /proc/fs/vmblock/dev
2) Снёс vmware tools, поставил open-vm-tools. Тут уже не запускается демон vmware-tools. Вернее запускается, но выдаёт ошибку и фич гостевой системы опять нет. Попробовал запустить вручную, нашёл, что не может загрузиться модуль fuse. Когда пытаюсь загрузить сей модуль, выдаёт ошибку и предлагает посмотреть в dmesg. Там я вижу сиё:
fuse: Unknown symbol pv_irq_ops (err 0)
fuse: Unknown symbol pv_lock_ops (err 0)
fuse: Unknown symbol pv_irq_ops (err 0)
fuse: Unknown symbol pv_lock_ops (err 0)
fuse: Unknown symbol pv_irq_ops (err 0)
fuse: Unknown symbol pv_lock_ops (err 0)
fuse: Unknown symbol pv_irq_ops (err 0)
fuse: Unknown symbol pv_lock_ops (err 0)
fuse: Unknown symbol pv_irq_ops (err 0)
fuse: Unknown symbol pv_lock_ops (err 0)
Модуль для звуковой карточки скомпилен и работает, alsasound тоже. Подскажите, где я делаю глупость?

 ,

SeTSeR
()

Распределение размера в Gtk::Box

Каким образом можно отрегулировать распределение высоты между элементами в Gtk::Box?

Как видно из скрина, на кнопку и строку с полями выделяется слишком много места по вертикали, поэтому на гистограмму места не хватает. Каким образом можно перераспределить место между элементами? Доки курил, нужного не нашёл. http://itmages.ru/image/view/3364773/e77537bc

Ещё одна проблема - это то, что не отображается последняя Gtk::Entry. Вот код: http://pastebin.com/sm8mawFt

 , ,

SeTSeR
()

XMonad иконки для воркспейсов

Можно ли в XMonad+XMobar присобачить иконки вместо названий для воркспейсов, и если да, то как?

 ,

SeTSeR
()

Сгенерировать имя для скриншота Haskell

Надо сгенерить имя для скриншота в конфиге XMonad.
Для генерации берётся префикс, к нему добавляются дата и время и расширение .png. Дату и время можно получить только из монады IO. Как это оформить? В посте мешанина, поэтому вот код:

getCurrentDateAndTime :: ClockTime -> String
getCurrentDateAndTime = formatCalendarTime defaultTimeLocale "%c" . toUTCTime

genname :: String -> String
genname name = "~/screenshots/xmonad-" ++ name ++ ".png"

genfilename :: String
genfilename = genname $ getClockTime >>= getCurrentDateAndTime
myKeys = [ ("<Print>"		, spawn $ "imagemagick import " ++ genfilename 				)
	 , ("M-r"		, spawn "xmonad --restart"  		  				)
	 , ("M-j"		, prevWS		    	          				)
	 , ("M-k"		, nextWS		    	          				)
	 , ("M-f"		, spawn "firefox-bin"	    	          				)
	 , ("M-s"		, spawn "gksudo /usr/bin/pm-suspend"      				)
	 , ("C-M-r"		, spawn "gksudo /usr/bin/shutdown -r now" 				)
	 , ("C-M-s"		, spawn "gksudo /usr/bin/shutdown -h now" 				)
	 ]

 ,

SeTSeR
()

ШГ в Firefox на некоторых сайтах

На некоторых сайтах в некоторых местах FF выдаёт мыло вместо шрифтов.
Вот пример(кнопка new repository):
http://rghost.ru/8lSsgyMDr

Как бороться?

Firefox из пакета www-client/firefox-bin-40.0.2

 ,

SeTSeR
()

Kernel panic при выключении

Установлена Gentoo с systemd. При каждом выключении происходит kernel panic. В journalctl всё чисто, крах ядра происходит уже после отработки цели Shutdown. Как бороться?

 , ,

SeTSeR
()

Wayland: не запускаются приложения

Пробую сабж на Gentoo. При попытке запуска любых приложений ничего не происходит. weston-terminal сегфолтится, иксовые приложения выдают нечто вроде:

[23:43:34.313] forked X server, pid 736
glamor: EGL version 1.4 (DRI2):
Failed to link: error: shader uses too many input components (44 > 40)

(EE) 
Fatal server error:
(EE) GLSL link failure
(EE) 
[23:43:34.412] xserver crashing too fast: 256
Cannot open display
child 735 exited

emerge --info wayland:

=================================================================
                        Package Settings
=================================================================

dev-libs/wayland-1.6.1::gentoo was built with the following:
USE="-doc -static-libs"

emerge --info weston:

=================================================================
                        Package Settings
=================================================================

dev-libs/weston-1.6.1::gentoo was built with the following:

USE="X dbus drm editor egl fbdev launch opengl resize-optimization suid systemd wayland-compositor xwayland -colord -examples (-gles2) -headless -rdp (-rpi) -screen-sharing -static-libs -test -unwind"

 , ,

SeTSeR
()

Установка Slackware из существующей системы

Подскажите, какие есть способы установки Slackware из-под существующей Gentoo без ребута? На данный момент юзаю QEMU, но на моём ноуте это очень медленно.

 , ,

SeTSeR
()

RSS подписка на новые темы