LINUX.ORG.RU

Сообщения s9gf4ult

 

intel hda определяется не та модель

Форум — Linux-hardware

Дело такое вобщем

/root # lspci| grep -ie aud
00:1b.0 Audio device: Intel Corporation N10/ICH 7 Family High Definition Audio Controller (rev 01)
в alsamixer пишет что определилась аудио карта VIA ID 4397, у коллеги на ровно таком же компьютере (готовая сборка мать одна) определяется VT1705.

Тащемта работало все до последнего обновления лол. Какая у меня была карта в alsamixer не помню ибо работало и было как то не нужно, но 99.9% что тоже VT1705.

Прописал в /etc/modprobe.d/alsa.conf такую опцию

options snd-hda-intel model=vt1705
В соответствии с документашкой вообще дожно быть auto

Че делать ?

s9gf4ult
()

перенаправление mediawiki ShortUrl

Форум — Admin

Короче, есть сайт с викой, на вике статьи, нужно генерить как можно более короткие ссылки до статей. Решил сделать так:

таким образом по ссылке вида http://www.domail.com/s/a можно будет попасть на нужную статю. Напоминаю что длинна ссылки критична.

Пока вот так

RewriteEngine On

#RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} !-d
#RewriteRule ^S/(.*)$ /index.php/Special:ShortUrl/$1 [NC,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

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

Я на пределе, башка взрывается от паганого mod_rewrite это какой то пи*дец, помогите.

 ,

s9gf4ult
()

c++ valgrind гонит или что то не так ?

Форум — Development
int main () {
    QTextStream out(stdout);
    out.setCodec(QTextCodec::codecForName("UTF-8"));

    QDateTime h = QDateTime::currentDateTime();
    out << h.toString() << "\n";
}

Вроде бы все прозрачно и утечек быть не должно, однако валгринд утверждает что

........
==5470==    by 0x5BCC6E6: ??? (in /usr/lib64/qt4/libQtCore.so.4.8.2)
==5470==    by 0x5B9176E: QLocalePrivate::updateSystemPrivate() (in /usr/lib64/qt4/libQtCore.so.4.8.2)
==5470==    by 0x5B9199A: ??? (in /usr/lib64/qt4/libQtCore.so.4.8.2)
==5470==    by 0x5B92C94: QLocale::system() (in /usr/lib64/qt4/libQtCore.so.4.8.2)
==5470==    by 0x5B7BF61: QDate::shortDayName(int) (in /usr/lib64/qt4/libQtCore.so.4.8.2)
==5470==    by 0x5B7F49A: QDateTime::toString(Qt::DateFormat) const (in /usr/lib64/qt4/libQtCore.so.4.8.2)
==5470==    by 0x4040E3: main (Main.cpp:47)

==5470== LEAK SUMMARY:
==5470==    definitely lost: 192 bytes in 2 blocks
==5470==    indirectly lost: 284 bytes in 6 blocks
==5470==      possibly lost: 0 bytes in 0 blocks
==5470==    still reachable: 61,290 bytes in 61 blocks
==5470==         suppressed: 0 bytes in 0 blocks
==5470== Reachable blocks (those to which a pointer was found) are not shown.
==5470== To see them, rerun with: --leak-check=full --show-reachable=yes
Где 47 строка это
    out << h.toString() << "\n";
Но ведь то что возвращается из toString - есть временный объект и должен уничтожиться после вычисления выражения (не помню где но было в стандарте). Что не так ?

 , , временный объект

s9gf4ult
()

не деструктятся шаред поинтеры

Форум — Development

Поясните по хардкору, почему список при деструктурировании не деструктит шаред поинтеры расположенные в нем

#include <QList>
#include <QSharedPointer>
#include <iostream>

#define LAFAFA 3
class Object {
  int data;
public:
  Object(int a) : data(a) {
    std::cout << "Object contstructed i: " << a << std::endl;
  };
  Object(const Object &cp) {
    this->data = cp.data;
    std::cout << "Object copied i: " << cp.data << std::endl;
  }
  ~Object() {
    std::cout << "Object desctructed i: " << this->data << std::endl;
  };
  void print() {
    std::cout << "Object i: " << this->data << std::endl;
  };
};

int main (int argc, char ** argv) {
  {
    std::cout << std::endl;
    std::cout << "=========== Just Objects ===================" << std::endl;
    QList<Object> one;
    for (int i=0; i < LAFAFA; i++) {
      one.append(Object(i));
    }
    std::cout << "<<<< cycle finished" << std::endl;
  };
  {
    std::cout << std::endl;
    std::cout << "============ Shared pointers ===============" << std::endl;
    QList<QSharedPointer<Object> > fuck;
    for (int i=0; i < LAFAFA; i++) {
      fuck.append(*(new QSharedPointer<Object>(new Object(i))));
    };
    std::cout << "<<<< cycle finished" << std::endl;
  };
  {
    std::cout << std::endl;
    std::cout << "============ Test Shp ======================" << std::endl;
    QSharedPointer<Object> test = QSharedPointer<Object>(new Object(10));
  }
};
вывод


=========== Just Objects ===================
Object contstructed i: 0
Object copied i: 0
Object desctructed i: 0
Object contstructed i: 1
Object copied i: 1
Object desctructed i: 1
Object contstructed i: 2
Object copied i: 2
Object desctructed i: 2
<<<< cycle finished
Object desctructed i: 2
Object desctructed i: 1
Object desctructed i: 0

============ Shared pointers ===============
Object contstructed i: 0
Object contstructed i: 1
Object contstructed i: 2
<<<< cycle finished

============ Test Shp ======================
Object contstructed i: 10
Object desctructed i: 10
В доках по QList сказано что

Destroys the list. References to the values in the list and all iterators of this list become invalid.

 , ,

s9gf4ult
()

вытеснять остановленные процессы в своп

Форум — Admin

Есть ли способ заставить ядро более охотно вытяснять остановленные процессы в своп ?

Просто когда компилируется что то действительно тяжелое, то памяти не хватает и приходится на время останавливать сборку, при этом память освобождается крайне туго. GCC отжирает свои 50% памяти и никак не хочет уходить в своп сколько его не вытесняй файрфоксами. А хочется еще и место под кэш чтобы не трещать винтом.

Про swappiness знаю, не особо помогает, ядро похоже вообще не учитывает состояние процесса когда решает какие страницы сбосить в своп, когда запрашиваются те, что уже в свопе... по крайней мере похоже на это.

 , swapping

s9gf4ult
()

Сломался gtk

Форум — Desktop

У кого нибудь наблюдается такое ? не могу собрать gtk на двух машинах после недавнего обновления, на трекер уже запостил, может кто нашел решение раньше ?

Так собирается портовая версия

>>> Source configured.
>>> Compiling source in /mnt/btrfs/portage/dev-haskell/gtk-0.12.0/work/gtk-0.12.0 ...
./setup build
Building gtk-0.12.0...
Preprocessing library gtk-0.12.0...

dist/build/Graphics/UI/Gtk.hs:1:1:
    Ambiguous module name `Prelude':
      it was found in multiple packages: base haskell98-2.0.0.1
 * ERROR: dev-haskell/gtk-0.12.0 failed (compile phase):
 *   setup build failed
....................

А вот так из оверлея

[203 of 207] Compiling Graphics.UI.Gtk.Misc.DrawingArea ( dist/build/Graphics/UI/Gtk/Misc/DrawingArea.hs, dist/build/Graphics/UI/Gtk/Misc/DrawingArea.p_o )
[204 of 207] Compiling Graphics.UI.Gtk.General.IconTheme ( dist/build/Graphics/UI/Gtk/General/IconTheme.hs, dist/build/Graphics/UI/Gtk/General/IconTheme.p_o )
[205 of 207] Compiling Graphics.UI.Gtk.General.IconFactory ( dist/build/Graphics/UI/Gtk/General/IconFactory.hs, dist/build/Graphics/UI/Gtk/General/IconFactory.p_o )
[206 of 207] Compiling Graphics.UI.Gtk.General.General ( dist/build/Graphics/UI/Gtk/General/General.hs, dist/build/Graphics/UI/Gtk/General/General.p_o )
[207 of 207] Compiling Graphics.UI.Gtk  ( dist/build/Graphics/UI/Gtk.hs, dist/build/Graphics/UI/Gtk.p_o )

In file included from Graphics/UI/Gtk/General/hsgthread.c:29:0: 

/usr/include/glib-2.0/glib/gthread.h:28:2:
     error: #error "Only <glib.h> can be included directly."
 * ERROR: dev-haskell/gtk-0.12.3 failed (compile phase):
 *   setup build failed
 * 
 * Call stack:
 *     ebuild.sh, line   85:  Called src_compile

 , , ,

s9gf4ult
()

как это делается правильно ?

Форум — Development
wah :: Int -> IO ()
wah count = do rnds <- sequence $ replicate count $ randomRIO (0, 59)
               time <- getZonedTime
               let times = map (loctime $ zonedTimeToLocalTime time) rnds
               costs <- sequence $ replicate count $ randomRIO (100, 200 :: Int)
               volumes <- sequence $ replicate count $ randomRIO (10, 20)
               let candles = map (\(t, c, v) -> (Tick t c v)) $ zip3 times costs volumes
               let cnd = mconcat candles
               putStrLn $ fromMaybe "Undefined" $ getCandleColor cnd >>= return . show
               putStrLn $ "open is " ++ (show $ candleOpenCost cnd)
  where
(zonedTimeToLocalTime time) rnd}
    loctime :: LocalTime -> Int -> LocalTime
    loctime time rnd = time {localTimeOfDay = tofday (localTimeOfDay time) rnd}
    tofday :: TimeOfDay -> Int -> TimeOfDay
    tofday time rnd = time {todSec = topico rnd}
    topico :: Int -> Pico
    topico val = (toEnum val * (fromInteger $ resolution $ ((toEnum val) :: Pico)))

Собственно что мы тут видим ? функция которая в начале генерирует список случайных чисел и этот список использует для создания списка элементов LocalTime где оригинальная секунда заменена на число из списка. То что делает функция дальше нас не волнует.

Есть такая фишка в хаскеле можно писать

..... = var {something = newvalue}
и это выражение вернет ту же структуру только с подставленным значением в указанное поле. А как подобное сделать для вложенных структур ? сейчас сделано извращение в where блоке, но сдается мне это не правильно.

PS:: особо доставляет функция topico которая «правильно» преобразует Int в Pico умножая его на размерность Pico (простой toEnum возвращает милиардные доли секунды, правильный хаскель такое правильный).

 expression,

s9gf4ult
()

[haskell][создать хитрую монаду]

Форум — Development

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

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

Вот быдлокод того что уже есть

module Main where

import Control.Monad.Trans.RWS
import Control.Monad.RWS.Class
import Data.Monoid
import Control.Arrow ((&&&))

data Bottle a = Bottle {getSize :: a,
                        getMax :: a} deriving Show

getFree :: (Num a) => Bottle a -> a
getFree b = (getMax b) - (getSize b)

emptyBottle :: (Num a) => Bottle a -> Bottle a
emptyBottle (Bottle {getSize = _, getMax = m}) = Bottle {getSize = 0, getMax = m}

fillBottle :: (Ord a, Num a) => a -> Bottle a -> Bottle a
fillBottle am (Bottle {getSize = s, getMax = m}) = Bottle {getSize = max 0 $ min m $ am + s, getMax = m}

data Action a = Flow {getFrom :: Bottle a,
                      getTo :: Bottle a,
                      getAmount :: a}
              | Fill {getWhat :: Bottle a,
                      getAmount :: a}
              | Empty {getWhat :: Bottle a,
                       getAmount :: a} deriving Show
                      

type SolveMonad m a ret = RWST () (Endo [Action a]) (Bottle a, Bottle a) m ret

endotell :: (Monad m) => [Action a] -> SolveMonad m a ()
endotell a = tell $ Endo $ (++ a)

     
leftToRight, rightToLeft :: (Monad m, Num a, Ord a) => SolveMonad m a ()
leftToRight = do
  (l, r) <- get
  if (getFree r) >= (getSize l)
    then do endotell [(Flow {getFrom = l, getTo = r, getAmount = (getSize l)})]
            put (emptyBottle l, fillBottle (getSize l) r)
    else do endotell [(Flow {getFrom = l, getTo = r, getAmount = (getFree r)})]
            put (fillBottle (negate $ getFree r) l, fillBottle (getSize l) r)

execSwapped :: (Monad m) => SolveMonad m a () -> SolveMonad m a ()
execSwapped mex = do
  modify (snd &&& fst)
  mex
  modify (snd &&& fst)

rightToLeft = execSwapped leftToRight

fillLeft, fillRight :: (Monad m, Num a, Ord a) => SolveMonad m a ()
fillLeft = do
  (l, r) <- get
  put (fillBottle (getFree l) l, r)

fillRight = execSwapped fillLeft

emptyLeft, emptyRight :: (Monad m, Num a) => SolveMonad m a ()
emptyLeft = do
  (l, r) <- get
  put (emptyBottle l, r)
emptyRight = execSwapped emptyLeft

Собственно тут описаны только действия которые можно совершать на емкостями, перелить из одной в другую пока в одной не кончится либо другая не наполниться, опустошить либо наполнить одну из бутылок.

Хочу теперь монаду, которая похожа на RWS но совершает действия НАД моей RWS, то есть чтобы оператор >>= в этой монаде выполнял дополнительную проверку на то, что в одном из сосудов нужное нам количество жидкости (то есть проверял состояние) и останавливал вычисление как нибудь, то есть хочу вот такое

magic :: SomeMagicType
magic = do
  lift fillLeft
  lift leftToRight
  (l, r) <- get
  if (isFull r) then do
    lift emptyRight
    else return ()               -- ну как то так, типа то еще не знаю точного
  magic

а потом вычислять это нечто как то вот так

(runMagic magic) (\(l, r) -> r == 3 || l == 3)

и получить свою RWS монаду в которую потом подставить окружение и состоятие, но как такое сделать ? Готовую монаду проверки состояния не нагуглил чето. Или может это инчаче делается ?

 , monad

s9gf4ult
()

[haskell][Monad Transformers]

Форум — Development

Лор, а расскажи как комбинировать монад трансформеры в do нотации, вот надуманная монада в вакууме скомбининрованны ReaderT и StateT так что при разывертывании значения из оберточных типов мы в список [Int] добавляем длинну другого списка [a].

appendLength :: Monad m => ReaderT [a] (StateT [Int] m) ()
appendLength = ReaderT $ \cont -> (StateT $ \st -> return ((), (length cont:st)))

и работает типа так

*Main System.IO.Unsafe> (runStateT $ runReaderT appendLength ["yeah", "fuck"]) [6, 10]
((),[2,6,10])

Сказал Йода по левое плечо что выражение это в DO нотации записать можно.

 

s9gf4ult
()

Смена планировщика

Форум — Admin

А как мне в рантайме сменить планировщик ? Не IO scheduler, а планировщик задач, хочу менять между BFS и CFS по ходу работы. Генточку собирать лучше на CFS а гаматься на BFS вот и делема.

s9gf4ult
()

[haskell][Тормоза]

Форум — Development

Принципиально не понимаю в чем тут дело. Короче. Вот модуль создания N-грамм из текста и генерации по ним произволного текста


{-# LANGUAGE FlexibleInstances, TypeSynonymInstances, BangPatterns #-}
module NGram where

import System.Random
import Control.Monad.Trans.Maybe
import Control.Monad.Trans.Class
import qualified Data.Map as M
import Control.Arrow
import Data.List (inits, tails, foldl')
import System.Environment

-- На самом деле не случайный а в зависимости от поданного числа. сдесь первый
-- аргумент это число по которому будет выбираться элемент, а в списке кортежей
-- первый элемент кортежа есть относительное значение вероятности для выброки
getRandomElement :: (Num a, Ord a) => a -> [(a, b)] -> Maybe b
getRandomElement _ [] = Nothing
getRandomElement elem xs = let el = min elem $ probSum xs
                           in Just $ snd $ head $ filter (\((l, g), ret) -> el >= l && el <= g) lowHighList
    where
    -- probSum :: (Ord a, Num a) => [(a, b)] -> a
    probSum = sum . map fst
    -- lowHighList :: (Random a, Num a, Ord a) => [((a, a), b)]
    lowHighList = map (((\x -> (probSum x) - (last $ map fst x)) &&& probSum) &&& (last . map snd)) $
                   tail $ inits xs

-- Указываем длинну нграммы и список элементов (строку) получаем словарь где
-- ключем является строка а значением ее относительная вероятность появления
makeNgram :: (Ord a, Num b) => Int -> [a] -> M.Map [a] b
makeNgram n str = foldl' foldf M.empty $ nlists n str
  where
    foldf m s = M.insertWith (+) s 1 m
    nlists :: Int -> [a] -> [[a]]
    nlists n str = map (take n)
                   $ take (length str + 1 - n)
                   $ tails str

-- Эта функция использует только одно IO действие - взятие случайного числа
generateSeq :: (Random b, Ord b, Num b) => Int -> M.Map [a] b -> MaybeT IO [a]
generateSeq amount ng = do
  let mlist = map (snd &&& fst) $ M.toList ng
  let fsum = sum $ map fst mlist
  gen <- lift newStdGen          -- вот тут
  let rnds = take amount $ randomRs (0, fsum) gen
  MaybeT . return $ (mapM (\x -> getRandomElement x mlist) rnds) >>= return . concat

А вот программа которая пользуя этот модуль просто выводит N-грамму на стандартный вывод

module Main where

import Control.Monad.Trans.Maybe
import Control.Monad.Trans.Class (lift)
import Data.Map as M
import System.Environment
import System.IO
import NGram

main = do
  a <- getArgs
  if length a /= 2
    then usage
    else do let len = read $ a !! 0
            cont <- readFile $ a !! 1
            let result = show ((makeNgram len cont) :: M.Map String Double)
            putStrLn result
              

usage :: IO ()
usage = putStrLn "Need 2 arguments :: length filename"

Вот так эта программа отрабатывает

18:39 razor@localhost /home/razor/projs/haskell/ngrams % du -h data.txt          
12K     data.txt
18:40 razor@localhost /home/razor/projs/haskell/ngrams % time ./nggen 4 data.txt > out
./nggen 4 data.txt > out  0,06s user 0,01s system 80% cpu 0,082 total

первым парметром мы подали длинну N-граммы а вторым указали файло с данными для обработки. Заметим что время работы всего 0.01сек. Далее делаем программу которая вместо голой N-граммы выводит текст сгенерированный на ее еснове

module Main where

import System.Environment
import System.IO
import Control.Monad.Trans.Maybe (runMaybeT)
import Control.Monad.Trans.Class (lift)
import Control.DeepSeq
import Data.Map as M
import NGram
  

main = runMaybeT $ do
  args <- lift $ getArgs
  if length args /= 3
    then lift usage
    else do let len = read $ args !! 0
            let amount = read $ args !! 1
            hfile <- lift $ openFile (args !! 2) ReadMode
            cont <- lift $ hGetContents hfile
            cont `deepseq` lift $ hClose hfile
            out <- generateSeq amount $ (makeNgram len cont :: M.Map String Int)
            lift $ putStrLn out

usage :: IO ()
usage = putStrLn "Need 3 arguments length, amount and filename"

И вот так она работает

18:43 razor@localhost /home/razor/projs/haskell/ngrams % time ./ngfilter 4 2 data.txt > out
./ngfilter 4 2 data.txt > out  4,05s user 0,01s system 99% cpu 4,067 total
18:45 razor@localhost /home/razor/projs/haskell/ngrams % time ./ngfilter 4 3 data.txt > out
./ngfilter 4 3 data.txt > out  16,85s user 0,05s system 99% cpu 16,930 total
18:45 razor@localhost /home/razor/projs/haskell/ngrams % time ./ngfilter 4 10 data.txt > out
./ngfilter 4 10 data.txt > out  40,86s user 0,11s system 99% cpu 41,044 total

От количества выведенных Нграмм (второй аргумент) время работы зависит прямо скажем странно. То есть либо Нграмма вычисляется не один раз либо я не знаю даже что. deepseq почему то не дает эффекта строгости. Прозреваю что тут дело в IO но где именно ?

Нграммы перепер отсюда http://habrahabr.ru/post/135127/

 ,

s9gf4ult
()

мышь в иксах, опять

Форум — Desktop

Господа! Кто нибудь разбирался как работает в иксах это гребаное ускорение мыши и вообще фильтация ввода мыши?

Раньше в выводе xinput была опция Acceleration Profile, которую я ставил в 0, и да, я играю в игрушки в частности в Nexuiz. В стреллялках с ускорением играть не возможно.

Обновились иксы, подозреваю что после перехода на 1.11 эта опция пропала:

Razer Razer Diamondback 3G              	id=8	[slave  pointer  (2)]
	Reporting 3 classes:
		Class originated from: 8
		Buttons supported: 15
		Button labels: Button Left Button Middle Button Right Button Wheel Up Button Wheel Down Button Horiz Wheel Left Button Horiz Wheel Right Button Side Button Extra Button Forward Button Back Button Unknown Button Unknown Button Unknown Button Unknown
		Button state:
		Class originated from: 8
		Detail for Valuator 0:
		  Label: Rel X
		  Range: -1.000000 - -1.000000
		  Resolution: 1 units/m
		  Mode: relative
		Class originated from: 8
		Detail for Valuator 1:
		  Label: Rel Y
		  Range: -1.000000 - -1.000000
		  Resolution: 1 units/m
		  Mode: relative

Никаких параметров нах !

Еще хотелось бы поменять множитель перемещения мыши (то есть зависимость между координатой мыши и курсора остается линейной, а меняется только масштаб отображения), ну или скорость мыши, наверно так будет сказать более по человечески. Этой опции тоже нет, когда то была опция - матрица отображения координат мыши в координаты курсора, по умолчанию была еденичная матрица, но если ее менять, то тоже ниего не менялось и я забил тогда на это

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

s9gf4ult
()

и снова [orm] для [cl]

Форум — Development

Работать по началу буду с PostgreSQL однако хотелось бы кроссбдшное решение (хотя это не известно наверняка нужно ли будет).

Посмотрел три варианта работы с базой:

  • Postmodern: заточен исключительно под PostgreSQL, нет ORM, из достоинств: поддержка процедур на стороне БД и всяких плюшек постгресса.
  • Elephant: я правильно понял что он только с беркли дб работает ?
  • CLSQL: отличный ORM, очень понравилось как сделано отображение классов в таблицы или вьюхи (в зависимости от самого класса). Пугают сообщения на lisper.ru о «перманетных проблемах» с этой либой.
  • cl-perec: не понятно как с этим работать, да и не зарелизилось еще. Тянет по зависимости все пакеты с этого ихнего dwin.hu с собственным логером (я решил пользовать log5) и кучей других пакетов собственной реализации этой компании лисперов.

Что в данный момент наиболее удачный вариант для работы с бозой ? Хочеться ORM и кроссбазовость на вроде как в CLSQL или SqlAlchemy, что используется в джанге. Но про CLSQL написано выше. Какие возникнуть могут проблемы с тем или иным пакетом ? Или есть другие варианты ?

 

s9gf4ult
()

[common-lisp][realpath]

Форум — Development

Есть ли в Common Lisp аналог realpath ?

s9gf4ult
()

[restas]404

Форум — Development

Начал как всегда с хеловорда опубликованного на сайте restas

(asdf:operate 'asdf:load-op '#:restas)

(restas:define-module #:restas.hello-world
  (:use :cl))

(in-package #:restas.hello-world)

(restas:define-route main ("")
  "<h1>Hello world!</h1>")

(restas:start '#:restas.hello-world :port 8080)
Это работает, заходишь на 127.0.0.1:8080 и видишь текст «Hello world». Теперь делаем проект более правильно, разбиваем на файлы, делаем определение системы, маршруты выносим в отдельный файл:

cat hello-world.asd

(defsystem #:hello-world
  :depends-on (#:restas)
  :components ((:file "package")
               (:file "main" :depends-on ("routes" "package"))
               (:file "routes" :depends-on ("package"))))

cat package.lisp

(restas:define-module #:restas.hello-world
  (:use :cl)
  (:export #:main))

cat routes.lisp

(in-package #:restas.hello-world)

(restas:define-route main ("")
  "<h1>Hello world!</h1>")

cat main.lisp

(in-package #:restas.hello-world)

(defun main()
  (restas:start '#:restas.hello-world :port 8080))

Теперь делаем

(restas.hello-world:main)
выполняется без ошибок, заходим на 127.0.0.1:8080 и видим
Not Found
The requested URL / was not found on this server
статус 404.

ЧЯДНТ ?

А еще restas-wiki тоже не работает, возвращает 500 если зайти на порт открырый вот так

(restas:start #:restas.wiki :port 8081)
И кстати: если происходит ошибка сервера, как узнать что именно не так ?

s9gf4ult
()

использование squashfs

Форум — Admin

Итак.

Задача: раздавать по ftp содержимое двух squashfs архивов, так чтобы клиенты видели в корне ftp два каталога а в них содержимое архивов.

Че сделал: засквашил то что было нужно, сложил архивы на сервер, места на сервере почти в притык, смонтировал... и тут проблема: пользователю ftp не доступно содержимое смонтированных архивов так как они были сделаны на другой системе и у файлов были другие владельцы ( я тогда вообще не подумал о том что возникнет такая проблема с правами) и права с UID которых в этой системе даже нет. Смонтировать squashfs с опцией uid=ftp не получилось, эта фс игнорирует этот параметр.

Вопрос: как без перепаковки скваша (места нет) дать пользователю ftp доступ к содержимому архивов ?

s9gf4ult
()

на каком PV лежит конкретный LV

Форум — Admin

Как узнать на каком / каких PV лежит LV /dev/somevg/somelv ?

Поехали.

s9gf4ult
()

завести voip через jabber

Форум — Desktop

Кто нибудь делал сабж? когда собеседники за двумя натами каждый за своим. Нужен прямой коннект двух клиентов ? что делать чтобы заработало например в гаджиме или в Psi в чем угодно Подробную инструкцию пожалуйста.

s9gf4ult
()

VIA Technologies Inc. VT1720/24 не видится карта в алсе

Форум — Linux-hardware

вводная

>>lspci | grep -ie audio
00:04.0 Multimedia audio controller: nVidia Corporation CK804 AC'97 Audio Controller (rev a2)
01:07.0 Multimedia audio controller: VIA Technologies Inc. VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (rev 01)
01:08.0 Multimedia audio controller: Creative Labs SB X-Fi

>>lsmod
Module                  Size  Used by
fuse                   54612  3 
nvidia              11751522  30 
snd_ice1724            98893  0 
snd_rawmidi            14868  1 snd_ice1724
snd_ice17xx_ak4xxx      2052  1 snd_ice1724
snd_ak4xxx_adda         6676  2 snd_ice1724,snd_ice17xx_ak4xxx
snd_ak4114              6585  1 snd_ice1724
snd_pt2258              2480  1 snd_ice1724
snd_i2c                 3384  2 snd_ice1724,snd_pt2258
k8temp                  3067  0 
snd_ak4113              6176  1 snd_ice1724

alsaconf скрипт выполнен, однако звуковуху не видно в alsamixer

Вот http://pastebin.com/5Dgb7sYB alsa-info выхлоп. Че подскажите, может в ядре драйвер наконфигурячил не так ?

s9gf4ult
()

pygtk нарисовать OLAP

Форум — Development

Можно ли ? Есть библиотеки GOffice и Gtk+Extra в обоих есть виждет Grid (это типа таблицы как в екселе) с помощью этого виджета в принципе можно нарисовать OLAP куб, но биндингов для питона нема. Че делать ?

s9gf4ult
()

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