Светлый вариант декораций окон breeze?
В 5-ой плазме у активного окна тёмно-серый заголовок, а у неактивного - белый. Есть ли вариант бриза (или другой сочетающейся с ним темы) со ВСЕГДА белым заголовком?
()
В 5-ой плазме у активного окна тёмно-серый заголовок, а у неактивного - белый. Есть ли вариант бриза (или другой сочетающейся с ним темы) со ВСЕГДА белым заголовком?
Есть задача - пройтись по текстовому файлу и найти максимальное число одинаковых последовательно идущих строчек. Задача весьма синтетическая, просто надо продемонстрировать, что
Решение в лоб на IORef
-ах (m1.hs):
module Main where
import Data.IORef
import Control.Monad (forM)
main :: IO ()
main = do
input <- getContents
lastLine <- newIORef (Nothing)
counter <- newIORef (0)
result <- newIORef (0)
let incr = modifyIORef counter (\x -> x `seq` x+1)
reset s = do c <- readIORef counter
r <- readIORef result
writeIORef result (max c r)
writeIORef lastLine (Just s)
writeIORef counter 1
forM (lines input) $ \line -> do
ml <- readIORef lastLine
case ml of
(Just s) -> if s == line then incr else reset line
Nothing -> reset line
r <- readIORef result
putStrLn $ "Largest subsequence of equal lines: " ++ show r
Более модное решение с трансформером StateT
(m2.hs):
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
module Main where
import Control.Monad (forM)
import Control.Monad.State.Strict
data AppContext = AppContext { ctxLastLine :: Maybe String
, ctxCounter :: Integer
, ctxResult :: Integer
}
initialContext :: AppContext
initialContext = AppContext { ctxLastLine = Nothing
, ctxCounter = 0
, ctxResult = 0
}
newtype App a = App (StateT AppContext IO a)
deriving (Monad, MonadIO, MonadState AppContext)
runApp (App app) = execStateT app
incr :: App ()
incr = do
cnt <- gets ctxCounter
modify $ \s -> s { ctxCounter = cnt+1 }
reset :: String -> App ()
reset l = do
cnt <- gets ctxCounter
res <- gets ctxResult
modify $ \s -> s { ctxLastLine = Just l
, ctxCounter = 1
, ctxResult = max res cnt
}
processLine :: String -> App ()
processLine line = do
ll <- gets ctxLastLine
case ll of
(Just s) -> if line == s then incr else reset line
Nothing -> reset line
main :: IO ()
main = do
input <- getContents
s <- runApp (forM (lines input) processLine) initialContext
putStrLn $ "Largest subsequence of equal lines: " ++ show (ctxResult s)
Интересно, как поведут себя оба варианта на обработке, скажем, «Улисс» Джойса (txt, 1.6 MB):
[dmatveev@localhost memq]$ ghc --make m1.hs -rtsopts -prof
[1 of 1] Compiling Main ( m1.hs, m1.o )
Linking m1 ...
[dmatveev@localhost memq]$ ghc --make m2.hs -rtsopts -prof
[1 of 1] Compiling Main ( m2.hs, m2.o )
Linking m2 ...
[dmatveev@localhost memq]$ du -sh ulysses.txt
1.6M ulysses.txt
[dmatveev@localhost memq]$ wc -l ulysses.txt
33055 ulysses.txt
[dmatveev@localhost memq]$ time cat ulysses.txt | ./m1 +RTS -hd -i0.001
Largest subsequence of equal lines: 5
real 0m1.599s
user 0m1.577s
sys 0m0.021s
[dmatveev@localhost memq]$ time cat ulysses.txt | ./m2 +RTS -hd -i0.001
Largest subsequence of equal lines: 5
real 0m19.360s
user 0m19.123s
sys 0m0.091s
ШОК! Посмотрим, что там с памятью:
[dmatveev@localhost memq]$ hp2ps -e8in -c m1.hp
[dmatveev@localhost memq]$ hp2ps -e8in -c m2.hp
Очевидно, что во втором примере что-то течёт, а я что-то глобально упустил.
Вопросы:
З.Ы. Да, я знаю, что на awk это решается проще и быстрее, суть-то не в этом, а в вопросе №3. Извините за неровный почерк.
Какие плагины вы используете, чтобы превратить vim в IDE для ________ (вписать язык)?
Интересует:
И общее для всех языков:
Ссылки:
Из-за закрытого магазина одному из разработчиков не удалось купить ещё одну планку оперативы, поэтому он решил сесть и исправить несколько багов:
The other day I went to buy a DDR stick but the shop was closed so the only solution was to sit down and fix some memory hungry applications.
В результате:
Также Dan Vratil и Vishesh Handa тяжело работают над потреблением памяти и производительностью nepomuk и akonadi.
https://blogs.kde.org/2013/07/18/memory-usage-improvements-411
Мне кажется, что в идеале данная программа должна действовать на основе нейронной сети.
Я представляю это себе примерно так:
Есть плэйлист с музыкой, и есть меломан, который ежедневно слушает музыку.
Причем плэйлист постоянно автоматически изменяется, подстраиваясь под предпочтения меломана. Так например, программа замечает, что наш меломан любит часто прослушивать один и тот же трек. Как следствие, этот трек занимает более высокую позицию в плэйлисте.
Иногда программа предлагает для разнообразия некий произвольный малопопулярный трек, дабы наш меломан слишком не зацикливался на одном и том же.
Также может быть, что после прослушивания трека меломану предлагается поставить оценку от 1 до 5 прослушанному треку. Что разумеется, тоже повлияет на его позицию в плэйлисте.
Есть ли программы с подобной фичей вообще и под Linux в частности?
http://tylerneylon.com/a/learn-lua/
Список из кусков кода с комментариями. Предполагается, что читатель умеет программировать хоть на чём-нибудь :)
Автор - Tyler Neylon
З.Ы. lua используется, например, в скриптах для nmap и wireshark
Посоветуйте годных ресурсов по С++. Желательно на русском (но не обязательно). Спасибо.
Здравствуйте.
В поисках DE без злополучного тиринга перепробовал много чего и остановился на unity.
Шрифты не менял, да и вся наружность практически дефолт.
Как ставил:
Были проблемки http://forums.gentoo.org/viewtopic-p-7264466.html#7264466, но их уже решили.
Что обрадовало — тиринга не следа, окошечки двигаю плавненько, ничего не рвет, не дергает. Вообщем, по такому случаю можно даже забыть про Ъ и наутилус пользовать вместо dolphin. Конечно, мне, как пользователю кде, многое непривычно и не хватает настроек, но! все работает! Еще работает enlightenment, но unity нравится больше (наверно потому что централизованнее).
+ почему-то в добавок заработали все FN клавиши на моем g75)))
Так что всем, у кого проблемы с тирингом — советую.
>>> Просмотр (1600x900, 561 Kb)
Камрады, на ноуте стоит винда и убунту, при установке выделил ей всего 20 Гб, собственно вопрос, есть ли какие-то не сильно извращенные методы увеличения раздела без переустановки?