LINUX.ORG.RU

Сообщения s9gf4ult

 

Организовать быстрый доступ к документации

Собственно, сабж.

На данный момент решение такое: открыто много вкладок в фоксе (около 40), с помощью tabhunter быстро переключаюсь на нужную вкладку по названию (в котором содержится имя модуля - что мне и надо).

В принципе, все работает, но смущает:

  • Фокс начинает со временем жрать много памяти, приходится перезапускать (после перезапуска влкадки не загружаются благодаря фоксовой ленивой загрузке вкладок, что вызывает не потребеление памяти)
  • Костыльное решение.

Пробовал использовать поиск по истории, но

  • Доступ к нужной странице медленее
  • Поиск происходит по всей истории, а мне нужна только документация, то есть, только определенный набор страниц. Часто приходится искать в куче мусора
  • Все равно приходится открывать несколько вкладок для одновременного доступа к нескольким страницам

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

Какие есть варианты? Может есть специальные гравицапы для этого? Может можно организовать это в емаксе?

 , , ,

s9gf4ult
()

Завести джойстик

У меня есть джойстик, вернее геймпард.

Драйвер его определил:

.........
UDEV  [2164337.664696] add      /devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.6/1-1.6:1.0/0003:0079:0006.0003/input/input16 (input)
UDEV  [2164337.706169] add      /devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.6/1-1.6:1.0/0003:0079:0006.0003/input/input16/event10 (input)

делаю `cat /dev/input/event10` жму кнопки, вижу мусор в конслои - значит все нормально.

Теперь вопрос: как его использовать? Я думал, что иксы будут понимать события от джойстика как обычные иксовые события, которые можно использовать внутри программ, но это не так. Кнопку джойстика нельзя забиндить на что нибудь, программа qjoypad тоже говорит, что джойстиков в системе нет. Игры (на самом деле одна: Nexuiz), тоже не реагируют на нажатия.

ЧЯДНТ??

s9gf4ult
()

Зависимые ресурсы

Смотри, лор, есть соединение до базы Connection, а также тип представляющий запрос Statement

data Connection
data Statement

Не будем вдаваться в подробности устройства этих типов. Важно только что они хранят MVar на состояние соединения и запроса соответственно. Над Connection есть методы

disconnect :: Connection -> IO ()
prepare :: Connection -> Query -> IO Statement
connStatus :: Connection -> IO ConnStatus

Полый список опять же не важен. И методы над Statement:

finish :: Statement -> IO ()
statementStatus :: Statement -> IO StatementStatus

Полный список тоже не важен.

Теперь представим, что мы наделали много Statement из одного Connection, и закрыли соединение (disconnect). Работа со Statement при закрытом соединении не возможна, это понятно. Возникает вопрос: должен ли метод disconnect автоматически закрывать все Statement (finish) перед самим дисконнектом, или нет? Если да, то как это лучше сделать?

Если использовать ResourceT, то правильный порядок освобождения ресурсов не гарантируется, так? Значит надо как-то это обрабатывать, либо в методе finish проверять состояние Connection перед финализацией Statement, и ничего не делать, если соединение уже закрыто (в этом случае клиентская библиотека уже очистила все дочерние запросы сама). Либо хранить в Connection список ленивых ссылок на все дочерние Statement и финализировать их перед disconnect в обязательном порядке.

Жду советов, вобщем.

 , ,

s9gf4ult
()

NetworkManager настройка keyfile

Где найти подробную доку по ключам конфигурации плагина keyfile ? Ну я понимаю, что там структура конфы совпадает с внутренним представлением (или как правильно?) соединения и его свойств, но где документация по ней то ?

[connection]
id=Auto eth0
uuid=27afa607-ee36-43f0-b8c3-9d245cdc4bb3
type=802-3-ethernet
autoconnect=true
timestamp=0

[ipv4]
method=auto

[802-3-ethernet]
mac-address=0:23:5a:47:1f:71

Вот пример конфы из доки.

 , ,

s9gf4ult
()

Документация по ключам конфигурации NM ?

Раскурил архитектуру NM, вот тут в доках сказано

https://live.gnome.org/NetworkManager/SystemSettings

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

[connection]
id=Auto eth0
uuid=27afa607-ee36-43f0-b8c3-9d245cdc4bb3
type=802-3-ethernet
autoconnect=true
timestamp=0

[ipv4]
method=auto

[802-3-ethernet]
mac-address=0:23:5a:47:1f:71

Представлен пример конфы для keyfile, структур конфигурции вдимо совпадает с представлением NM о соединениях, а где взять полную документацю по ключам конфигурации для каждой секции, и какие секции бывают ?

DBus API как то не похоже на то что мне нужно ...

 , ,

s9gf4ult
()

Ограничить размер кэша для файловой системы / директории / процесса.

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

swapiness уже уменьшил, сейчас стоит на 30, хоть это и не должно никак помочь в данной ситуации. Рамы 8Gb , из них все программы занимают обычно не более 2Gb, так что ограничение кэша вполне разумно было бы.

 , , ,

s9gf4ult
()

mod_geoip2 на apache-2.2 не определяет город

Поставил по интрукции http://dev.maxmind.com/geoip/mod_geoip2 однако переменной GEOIP_CITY не наблюдаю, есть GEOIP_CONTINENT_CODE и GEOIP_COUNTRY_NAME, но города нет.

Вот мой конфиг

<IfModule geoip_module>
GeoIPDBFile /usr/local/share/GeoIP/GeoIP.dat MemoryCache
GeoIPDBFile /usr/local/share/GeoIP/GeoLiteCity.dat MemoryCache
GeoIPEnableUTF8 On
GeoIPOutput All
GeoIPScanProxyHeaders On
GeoIPUseLastXForwardedForIP On
</IfModule>

Что еще нужно включить чтобы заработало определение города ?

Да, в виртуальном хосте geoip включен

<VirtualHost ....>

....

    <Directory /var/www/html/site>
        <IfModule geoip_module>
            GeoIPEnable On
        </IfModule>
...

 , ,

s9gf4ult
()

Haskell и обработка исключений.

Вот у меня такой странный вопрос: почему IO функции выбрасывают ошибки ? Я имею в виду зачем делать error в IO вообще ?

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

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

Ну действительно: разве это ошибка, когда файл не удается прочесть ? Разве должна программа из-за этого падать ? Я понимаю, что есть средства обработки ошибок, но эти средства позволяют лишь отловить ошибку и сделать некие действия, но не более. Ведь если прерывать вычисление, то теряются все монадные профиты.

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

ignoreErrors :: [EitherT IO a] -> IO [a]
ignoreErrors x = do
  y <- sequence $ map runEitherT x
  return $ rights y
При этом монада нам гарантирует, что никакая ленивость не помешает нам отловить все ошибки ввода-вывода которые могут возникнуть, что все монадические действия вычислятся как минимум до конструктора Either, ведь могут существовать и другие исключения, не только те, что связаны с вводом-выводом, но и некоторые исключения в вычислениях. Все это будет отловлено в тот момент, когда мы просто паттернматчим результат runEitherT с Left или с Right.

Если задача стоит просто выполнить действия и гарантировать, отсутсвтвие исключений во всех вычислениях, то это просто sequence или sequence_, в зависимости от того, нужен нам результат вычислений, или нет.

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

Отсюда у меня вопрос: о чем думали создатели хаскеля, когда вообще включали error в стандартную библиотеку, использовали ее во всех функциях (деление на ноль) и давали пользователю ей пользоваться. Взгляните на все библиотеки, они все используют выбрасывание ошибок, вместо обработки исключений. Либо я чего-то не понимаю, и выбрасывать ошибку - очень удобно и правильно, либо это фейл проектировщиков ?

Дискач.

PS. haters gonna hate

 , ,

s9gf4ult
()

Изменить шрифт подсветки ссылок в Vimperator

В Vimperator есть такая штука, нажимаешь f и возле каждой ссылки появляются цифры на желтом фоне для навигации по ссылкам с клавиатуры. Хочу изменить размер шрифта, да и сам шрифт тоже. Дефолтовый - страшный ШГ, 0 сливается с 8, 8 сливается с 9, кошмар короче. Идеально было бы как в Vimium - цифры + буквы, но последний многого не умеет, по этому не подходит. В документаци не нашел (может плохо искал).

 , vimium,

s9gf4ult
()

Как определить почему Squid не кеширует ?

Squid-3.1 настроен как кэширующий прокси, ускоряющий сайт, который крутится на апаче. И сквидак безбожно мажет мимо кэша.

Не могу определить причину промахов

Cache-Control	s-maxage=20000, must-revalidate, max-age=0
Connection	close
Content-Language	ru
Content-Type	text/html; charset=UTF-8
Date	Tue, 09 Apr 2013 12:18:26 GMT
Last-Modified	Tue, 09 Apr 2013 08:12:53 GMT
Server	Apache/2.2.24 (Amazon)
Vary	Accept-Encoding,Cookie
Via	1.0 ip-10-50-79-19.eu-west-1.compute.internal (squid/3.1.10)
X-Cache	MISS from ip-10-50-79-19.eu-west-1.compute.internal
X-Cache-Lookup	MISS from ip-10-50-79-19.eu-west-1.compute.internal:80
X-Powered-By	PHP/5.3.20
x-content-type-options	nosniff

Это то что я получаю в заголовках ответа, в логах тоже MISS и апач получает запросы на обработку, так что сомнений в промахах нет.

конфа сквида

acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1

acl web_ports port 80
acl purge method PURGE


http_access allow manager localhost
http_access deny manager

http_access allow web_ports all

http_access allow purge localhost
http_access deny purge

http_access deny all



http_port 10.50.79.19:80 accel defaultsite=ec2-54-228-113-248.eu-west-1.compute.amazonaws.com vhost ignore-cc tcpkeepalive=60
cache_peer 127.0.0.1 parent 8080 0 no-digest no-query originserver round-robin name=wiki


cache_dir aufs /var/spool/squid/cache 500 16 256

refresh_pattern -i ^http: 5 100% 1440 

digest_generation off
#debug_options ALL,1 11,3 31,3 65,3
debug_options ALL,1 31,5 65,5

Если есть на лоре Squid-боги, помогите определить причину промахов. Очень надо чтобы именно эту страницу он кешировал, потому как тяжелая очень, Апач помирает.

В логах cache.log безсвязный бред, определить причину промахов по нему не могу, или не знаю как.

 , , ,

s9gf4ult
()

portage не собирает

Тупое название для темы, но именно это я и наблюдаю.

 * IMPORTANT: 10 news items need reading for repository 'gentoo'.
 * Use eselect news to read news items.

Calculating dependencies... done!
*** Resuming merge...
>>> Verifying ebuild manifests
>>> Running pre-merge checks for x11-base/xorg-server-1.14.0
>>> Emerging (1 of 45) app-shells/zsh-5.0.2-r1
>>> Emerging (2 of 45) dev-libs/boost-1.52.0-r6
>>> Failed to emerge app-shells/zsh-5.0.2-r1, Log file:
>>>  '/home/portage/portage/app-shells/zsh-5.0.2-r1/temp/build.log'

И ничего не происходит, ничего в логах /var/log/portage/elog и /var/log/messages, по показаниям top нагрузки на процессор нет, то есть, ничего на самом деле не собирается. Где смотреть что происходит и на чем затык ?

 ,

s9gf4ult
()

Apache перестает отвечать после нагрузки

Есть один апач, конфигурация стандартная, никаких лишних модулей, после нагрузки таким вот образом

/usr/sbin/ab -c10 -n500 http://172.16.5.83
Сначала некоторое время отвечает на запросы наромально, но потом наедается, и перестает отвечать на запросы, никакой нагрузки в top, никакой реакции, соединение с сервером утсановить можно, но страничку он не отдает. Страничку генерирует mod_php, сайт - на базе mediawiki. После перезагрузки апача страничка снова отдается. Логи пустые, LogLevel debug, и ничего.

apache-2.2.24 php-5.3.23

00_default_ssl_vhost.conf

<IfDefine DEFAULT_VHOST>
Listen 80
<VirtualHost *:80>
        ServerName localhost
        Include /etc/apache2/vhosts.d/default_vhost.include
        <IfModule mpm_peruser_module>
                ServerEnvironment apache apache
        </IfModule>
</VirtualHost>
</IfDefine>

default_vhost.include

ServerAdmin root@localhost
DocumentRoot "/home/razor/work/qrgorod"
<Directory "/home/razor/work/qrgorod">
        Options Indexes FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
</Directory>

Параметры запуска

-D DEFAULT_VHOST -D INFO -D LANGUAGE -D PHP5

Конфа до тупости минимальная

Гуголь молчит. Что делать ?

 ,

s9gf4ult
()

Дилема, выбор работы

Начну с того, что мне предложили работу в одной фирме, суть работы - доработка и модернизация програмы для аппаратов плазменной и лазерной резки (здоровые такие столы с рукой сверху, режут листы металла). На аппаратах стоит линукс с реалтаймовым ядром + самописные модули и ПО для управления. По описанию работодателя работа просто захватывющая, да и сам я тоже так думаю, всегда хотел попробовать системное программирование, да и вообще, программы, работающие с железом. Работы будет много, сначала буду GUI допиливать и в железо лезть не буду, но потом ... ну ты понял.

А я сейчас работаю в другой фирме и занимаюсь веб программированием. Фирма в которой сейчас работаю, в принципе нравится, веб кодинг, тоже нравится (пишем на рельсах и пыхе). Предполагается создание нового роекта, короче, работа тоже есть.

У меня в связи с этим вопрос: есть ли тут люди, работающие в подобной сфере (микроконтроллеры, всякое реалтаймовое ПО, встраиваемая техника), оправдала ли работа ваши ожидания ? Делали роботов как на картинке ? Интересно ли системное программирование, или это унылое ковыряние в сишных какашках с беспорядочной лапшой кода ?

Надеюсь вопрос мой правильно понят

UPD: Всем начавшим бредить по поводу веб кодера на месте системщика, похардкору появняю: работу предлагают по рекомендации человека, с которым я очень хорошо знаком IRL, от этого человека они, возможно, узнали мои интересы, интересуюсь не только тупым веб кодингом. Программистом себя считаю хорошим, кругозор у меня большой, от жабы с питоном до хаскеля/лиспа, для себя пилю проект на хаскеле, и вообще, ВЕБ программистов не бывает: бывают либо программисты, либо code monkey не важно в какой отрасли.

 , ,

s9gf4ult
()

Linux-3.8.2 таблица nat теперь в отдельной опции ?

Собрал новое ядро 3.8.2 и обнаружил, что нет таблицы nat. Очень удивился и полез в конфиг. Не помню была ли там опция

CONFIG_NF_NAT_IPV4

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

Это в ядре опция сублимировалась/переименовалась, или конфигуратор тупанул ?

Если не я один такой слоупок, то вот вам предупреждение.

 , kernel-3.8, ,

s9gf4ult
()

Вышел Firefox 19

А где новость, я не понял ?

s9gf4ult
()

lvm не видно устройств в /dev

Полетел сервер, на борту была Centos-5.5, загружаюсь с sysresccd-3.3.0, vgdisplay pvdisplay показывают наличие группы и разделов, но в /dev нет ссылок на устройства.

root@sysresccd /root % pvdisplay 
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               VolGroup00
  PV Size               465.66 GiB / not usable 3.56 MiB
  Allocatable           yes 
  PE Size               32.00 MiB
  Total PE              14901
  Free PE               6250
  Allocated PE          8651
  PV UUID               UK8jl3-YthN-tdcl-qRGP-Ja3t-ccnZ-vkQ4WW
root@sysresccd /root % vgdisplay 
  --- Volume group ---
  VG Name               VolGroup00
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  9
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                6
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               465.66 GiB
  PE Size               32.00 MiB
  Total PE              14901
  Alloc PE / Size       8651 / 270.34 GiB
  Free  PE / Size       6250 / 195.31 GiB
  VG UUID               K304Nk-ZQj5-BKcK-vVG8-v1dk-4WUM-ZLdRRS

root@sysresccd /root % lvdisplay 
  --- Logical volume ---
  LV Path                /dev/VolGroup00/LogVol01
  LV Name                LogVol01
  VG Name                VolGroup00
  LV UUID                2XHLa5-MT4h-Gi0I-RNzL-sakl-RHzE-hYUB0C
  LV Write Access        read/write
  LV Creation host, time , 
  LV Status              available
  # open                 0
  LV Size                3.94 GiB
  Current LE             126
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0
   
  --- Logical volume ---
  LV Path                /dev/VolGroup00/LogVol00
  LV Name                LogVol00
  VG Name                VolGroup00
  LV UUID                2sLZ5m-mD1k-pIrr-BcAp-lZEL-iU26-dNVK9L
  LV Write Access        read/write
  LV Creation host, time , 
  LV Status              available
  # open                 0
  LV Size                8.00 GiB
  Current LE             256
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:1
........

Все lv available. Но в /dev/mapper пусто и каталога /dev/VolGroup00 тоже нет. /dev/sda выглядит рабочим, хотя полную проверку на беды не сделал.

Что делать ?

 , , , ,

s9gf4ult
()

Выбор более специфичного инстанса по констрейнам

Господа гусары, занимаюсь приседаниями с системой типов Haskell. Решил соорудить эдакую систему кастования типов. Что имею в виду: есть тип, есть его субтип, построенный на базе родителя, субтип ведет себя так-же, как родитель и может быть безопасно преобразован в родителя, но обратно не каждый родитель кастуется к указанному субтипу.

Вот код

{-# LANGUAGE MultiParamTypeClasses, FlexibleInstances, FunctionalDependencies, FlexibleContexts, UndecidableInstances, OverlappingInstances, ScopedTypeVariables #-}

class SubtypeOf a b | a -> b where
  upcast :: a -> b
  downcastSafe :: b -> Maybe a
  downcast :: b -> a
  downcast b = case downcastSafe b of
    Nothing -> error $ "can not downcast the value"
    Just a -> a

  
data Range i a = Range {unRange :: a}
                 deriving Show

class Rangeable i where
  lowLim :: (Ord a, Num a) => t i a -> a
  highLim :: (Ord a, Num a) => t i a -> a

instance (Rangeable i, Num a, Ord a) =>  SubtypeOf (Range i a) a where
  upcast = unRange
  downcastSafe b | (b >= lowLim p) && (b <= highLim p) = Just p
                 | otherwise = Nothing
    where
      p :: Range i a
      p = Range b


data R1 = R1

instance Rangeable R1 where
  lowLim _ = 0
  highLim _ = 10

data R2 = R2

instance Rangeable R2 where
  lowLim _ = -10
  highLim _ = 100

data Multiple i a = Multiple {unMultiple :: a}
                    deriving Show

class Multipable i where
  mValue :: (Num a) => t i a -> a

data M2 = M2

instance Multipable M2 where
  mValue _ = 2

instance (Multipable i, Integral a) => SubtypeOf (Multiple i a) a where
  upcast = unMultiple
  downcastSafe b | b `mod` (mValue p) == 0 = Just p
                 | otherwise = Nothing
    where
      p :: (Multiple i a)
      p = Multiple b

instance (Multipable i, RealFrac a) => SubtypeOf (Multiple i a) a where
  upcast = unMultiple
  downcastSafe b | x == 0 = Just p
                 | otherwise = Nothing
    where
      x = d - (fromIntegral $ floor d)
      d = b / (mValue p)
      p :: Multiple i a
      p = Multiple b

SubtypeOf связывает два типа, a - субтип, b - родитель (возможно я не совсем правильно употребляю здесь слово субтип). Range - тип, хранящий число в определенном интервале, тип имеет фантомный тип. R1 и R2 - фантомные типы для указания диапазона в котором находится число. Инстанс SubtypeOf для (Range i a) a написан в обобщенном виде, так, что можно кастовать к Range с любым фантомным типом инстанцирующим Rangeable, и все работает.

Теперь, захотел я сделать тип «число кратное N» с фантомынм типом, указывающим это самое N. Тоже самое - Multiple - наш тип «число кратное N», M2 - фантомный тип, говорящий, что число должно быть кратно 2, дальше проблемы.

Кратность числа для целых и дробных чисел проверяется по-разному: для целых есть операция вычисления остатка от деления, если она == 0, то число кратное делителю. Для дробных нужно поделить, а потом проверить, равна ли дробная часть результата нулю. И нам нужно два инстанса для SubtypeOf с целым типом-родителем и с дробным.

instance (Multipable i, Integral a) => SubtypeOf (Multiple i a) a where

instance (Multipable i, RealFrac a) => SubtypeOf (Multiple i a) a where

Однако, компилятор считает, что эти инстансы дублирующиеся

/home/razor/casting.hs:51:10:
    Duplicate instance declarations:
      instance [overlap ok] (Multipable i, Integral a) =>
                            SubtypeOf (Multiple i a) a
        -- Defined at /home/razor/casting.hs:51:10
      instance [overlap ok] (Multipable i, RealFrac a) =>
                            SubtypeOf (Multiple i a) a
        -- Defined at /home/razor/casting.hs:59:10
Failed, modules loaded: none.

Как так ? Float инстанцирует RealFrac но не инстанцирует Integral, Integer - все наоборот. По логике, мы могли бы использовать такие инстансы, и ошибка должна была бы возникать только если a инстанцирует сразу и то и другое, так, что компилятор не может угадать, какой инстанс использовать. Но таких типов даже нету, все типы либо Integral, либо RealFrac. Поясните, почему так нельзя, и как можно ?

Кастую KblCb quasimoto adzeitor Miguel dmitry_malikov qnikst

 , ,

s9gf4ult
()

Как в persistent создать Decimal поле ?

Хочу хранить числа произвольно точности (финансовые данные, так что Double не канает), во всех база данных есть тип numeric/decimal(x, y) где x и y размер числа и количество знаков после запятой соответственно. В Haskell это либо Fixed либо Data.Decimal из пакета Decimal. А как создать тип и сохранить эти данные ? Вообще, посмотрел по библиотекам, HDBC - топорная библиотека, не имеет возможности добавить свой тип, HSQL - есть тип Decimal, но инстансов дефолтных для преобразования типов нет. Persistence:

data FieldType
    = FTTypeCon (Maybe Text) Text -- ^ optional module, name
    | FTApp FieldType FieldType
    | FTList FieldType
  deriving (Show, Eq, Read, Ord)
Значит можно добавить, видимо надо что-то дописать в TH для биндинга полей типа Fixed/Decimal, или persistent уже умеет ?

 , decimal, ,

s9gf4ult
()

flash моргает в firefox

С некоторого времени началось моргание флеша в фоксе. Просто любая флешка начинает ломаться и моргать квадратами (частями либо полностью). В хроме не моргает. Пример сайта на котором флеш моргает - speedtest.net

Дистр: Gentoo-amd64

Firefox: 18.0-r1

Flash: 11.2.202.261

На предыдущих версиях фокса и флеша было подобное. Щас пересел с хрома обратно в родной фоксик и тут такая подстава.

 , , ,

s9gf4ult
()

тайпкласс для спископодобных типов

В хаскеле так много спископодобных типов ByteString строгие и ленивые, Text, Vector, Array, [] и может еще куча всего. А есть ли тайпкласс унифицирующий работу с последовательностями массиво-спископодобного типа ?

class ListLike (l a) where 
    take :: Int -> (l a) -> (l a)
    drop :: Int -> (l a) -> (l a)
    (!) :: (l a) -> Int -> a
    filter ....

Не знаю что еще можно включить в этот тайпкласс, filter есть в функторе, а foldl в Foldable. Такое обилие дублирующихся функций, да еще и тайпклассов со схожим назначением меня так напрягает ...

 , listlike,

s9gf4ult
()

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