LINUX.ORG.RU

Сообщения Bohtvaroh

 

Отсортировать импорты в файле - unix way

Форум — Development

Всем привет.

Имеем java/scala-like секцию импорта в начале файла, вроде:

package blah

import argonaut._
import scala.concurrent.Future
import scalaz._

import types._
import impl.DBOperations

// code follows
case class Foo()
// ...

Нужно написать простую command-line тулзу, которая принимает на вход файл и сортирует в нём импорты. Пустые строки между импортами нужно удалить. Знаю, что это можно сделать как-то очень просто unix-way-но, но к сожалению в этой области у меня пробел. Поможете?

 , ,

Bohtvaroh ()

Подскажите монаду

Форум — Development

Всем привет.

Подскажите монаду, которая, как Maybe/Option позволяет early termination, но при этом возвращает не Nothing или None, а то, что удалось накопить so far. Возможно, это комбинация State с чем-то ещё. Нужно сделать парсер для нестрогой грамматики: парсим, как можем, а на EOF возвращаем, что получилось распарсить. Интересует что-то из Scalaz, если можно воспользоваться готовым, но варианты на Haskell тоже приветствуются. Важна сама идея.

 , , ,

Bohtvaroh ()

Список из значений определённых type classes в Haskell (Bounded a, Enum a, Ord a) => [a]

Форум — Development

Всем привет.

Мне нужен список в Haskell, хранящий не какие-то конкретные типы, а абстрактные типы, являющиеся инстансами type классов. Например, объявить список из Eq и класть в него любой тип, который является инстансом Eq. Что-то слышал про existential types, h-lists, но не знаю, куда конкретно копать.

Понадобилось для примера ниже: имеем набор типов (Bounded a, Enum a, Ord a) => a , и это позволяет определять для каждого из них переполнение. На вход функции передаём [a, b, c, d] и, если при инкрементации a происходит переполнение, то оно автоматически передаётся в b и так далее.

import Control.Monad.Trans.State.Lazy

groupSuccWithCarry :: (Bounded a, Enum a, Ord a) => [a] -> [a]
groupSuccWithCarry (h : t) = let (carry, h') = succWithCarry h
                             in h' : evalState (carryOver t) carry

succWithCarry :: (Bounded a, Enum a, Ord a) => a -> (Bool, a)
succWithCarry x = let overflow = x == maxBound
                  in (overflow, if overflow then minBound else succ x)

carryOver :: (Bounded a, Enum a, Monad m, Ord a) => [a] -> StateT Bool m [a]
carryOver = mapM (\x -> do carry <- get
                           let (carry', x') = if carry then succWithCarry x else (False, x)
                           put carry'
                           return $ x')

Для

> data DayOfWeek = Sun | Mon | Tue | Wed | Thu | Fri | Sat deriving (Bounded, Enum, Eq, Ord, Show)
> groupSuccWithCarry [Sat, Sat, Fri, Sun, Wed]
  [Sun, Sun, Sat, Sun, Wed]

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

 , ,

Bohtvaroh ()

Два дефолта на одной машине + pppd

Форум — Admin

Всем привет.

Имею: рутер (основной шлюз смотрит в мой модем), pppd, к которому коннектятся юзеры из локалки. Задача, сделать, чтоб pppd использовал другой шлюз (на другой модем).

Пробовал так:

1) добавил вторую routing table в /etc/iproute2/rt_tables
2) указал ей дефолт на второй модем: ip ro add default via <DEFAULT_IP> table <TABLE_NAME>
3) написал правило: ip rule add from 10.10.10.0/24 table <TABLE_NAME> (10.10.10.0/24 - из этой подсети выдаются адреса клиентам vpn)

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

Может, подскажете чего?

Bohtvaroh ()

GCC, ld, приоритет библиотек при линковке

Форум — Development

Всем привет.

Можно ли как-то указать gcc, чтобы при линковке библиотеки, указанные в -L, имели больший приоритет чем те, что лежат в стандартных местах, типа /usr/lib ?

Bohtvaroh ()

Вопрос по rsync

Форум — Admin

Всем привет.

Подскажите, как заставить rsync при синхронизации удалять лишние файлы - те, которых нет на remote хосте? man смотрел, но ничего не насмотрел.

Bohtvaroh ()

Gentoo, x11-base/xorg-server-1.6.1.901-r3

Форум — Talks

Кто-нибудь обновился? Напрочь отваливаются клава и мышь после обновления, где чего почитать (да, у меня нет времени лазить по багзиллам :))?

Bohtvaroh ()

Посоветуйте midi-клавиатуру

Форум — Talks

Всем привет.

Собсвтенно, сабж. Цена устраивает в пределах 1000$ (+-200). Надо, чтобы работала через USB ну и нормально с линуксом уживалась.

Хелп.

Bohtvaroh ()

Програмка на erlang, как учлушить?

Форум — Development

Всем привет.

Написал такую фиговину на erlang - на вход подаётся строка uri, на выходе - record из четырёх компонентов scheme, authority, path, query. Регэкспы из RFC2396.

Сдаётся мне что-то тут недостаточно функционально, может кто подскажет, как учучшить?

-module(uri).

-export([parse/1]).

-record(uri, {
	  scheme,
	  authority,
	  path,
	  query_component % 'query' is the reserved erlang word
	 }).

-define(URI_SCHEME_RE,    "^([^:/?#]+):").
-define(URI_AUTHORITY_RE, "^//([^/?#]*)").
-define(URI_PATH_RE,      "^[^?#]*").
-define(URI_QUERY_RE,     "^[?]([^#]*)").

parse(URI) ->
    parse_scheme(URI, #uri{}).

parse_scheme(URI, Record) ->
    case regexp:first_match(URI, ?URI_SCHEME_RE) of
	{match, _, Length} ->
	    {Scheme, [$: | Rest]} = lists:split(Length - 1, URI),
	    parse_authority(Rest, Record#uri{scheme = Scheme});
	nomatch ->
	    parse_authority(URI, Record)
    end.

parse_authority(URI, Record) ->
    case regexp:first_match(URI, ?URI_AUTHORITY_RE) of
	{match, _, Length} ->
	    {[$/, $/ | Authority], Rest} = lists:split(Length, URI),
	    parse_path(Rest, Record#uri{authority = Authority});
	nomatch ->
	    parse_path(URI, Record)
    end.

parse_path(URI, Record) ->
    case regexp:first_match(URI, ?URI_PATH_RE) of
	{match, _, Length} ->
	    {Path, Rest} = lists:split(Length, URI),
	    parse_query(Rest, Record#uri{path = Path});
	nomatch ->
	    parse_query(URI, Record)
    end.

parse_query(URI, Record) ->
    case regexp:first_match(URI, ?URI_QUERY_RE) of
	{match, _, Length} ->
	    {[$? | Query], _} = lists:split(Length, URI),
	    Record#uri{query_component = Query};
	nomatch ->
	    Record
    end.
Bohtvaroh ()

Erlang: and(andalso) и or(orelse) - что-то тут не так

Форум — Development

Всем привет.

Собственно не пойму, что происходит (erlang shell):

F = fun(X) when (X == 0) orelse (X / 0 > 2) -> true; (_) -> false end.
F(0).
true

вроде нормально, short circuit работает. То же самое, если заменить orelse на ';':

f().
F = fun(X) when (X == 0) ; (X / 0 > 2) -> true; (_) -> false end.
F(0).
true

Получается, что orelse и ';' есть одно и то же. Ладно, теперь попробуем or, который вроде как не short circuit:

f().
F = fun(X) when (X == 0) or (X / 0 > 2) -> true; (_) -> false end.
F(0).
false

Неожиданно. А где ошибка, почему false? То же самое с andalso/,/and.

Объясните плиз, кто понимает, что здесь происходит, зачем столько синонимов (andalso и ',', orelse и ';') и почему нету никакой ошибки с or?

Bohtvaroh ()

Лажа в gentoo

Форум — Talks

Нашёл такую фигню:

x11-misc/notification-daemon в заголовках подключает libnotify.h и соответственно без него не собирается. Но в зависимостях это не отражено.

Смотрим ebuild для x11-libs/libnotify - в зависимостях notification-daemon.

Что к чему? Чтобы эту срань собрать пришлось поправить ebuild для libnotify и сделать ebuild <file.ebuild> manifest.

Я что-то не догоняю или надо багу им куда-то засабмитить?

Bohtvaroh ()

Transmission, torrents.ru

Форум — Desktop

Всем привет.

Если в transmission ограничить скорость закачки, то он качает, но при этом проценты стоят на месте. Вижу такое с двумя торрентами и исключительно на torrents.ru. Это как-то исправляется?

Bohtvaroh ()

Gentoo installer (не работает?)

Форум — Talks

Собственно решил попробовать сабж в virtualbox. Вот результаты:

http://s2.ipicture.ru/uploads/081120/s21z6kcxAw.png
http://s1.ipicture.ru/uploads/081120/7AvprmnlPf.png

Пробовал распаковать портэж там же вручную - всё ок. Прозреваю, что в реальных условиях всё будет так же и придётся по-старинке? :)

Bohtvaroh ()

Gentoo overlay - патченные cairo/freetype/fontconfig

Форум — Desktop

Всем привет.

Подскажите, какой там сейчас в генте оуверлэй с патченными cairo/freetype/fontconfig? Вроде из последнего был soor-overlay, но он уже полгода не обновлялся.

Bohtvaroh ()

Ну жен совет в выборе карманного девайса для чтения

Форум — Talks

Всем привет.

Посоветуйте читалку/слушалку_музыки/etc - я правда не в курсе, что там сейчас актуально (n810?). :)

Bohtvaroh ()

Sonata, регулировка громкости

Форум — Desktop

Всем привет.

Может кто подскажет, как заставить сабж работать?

Bohtvaroh ()

Gnome 2.24 и иконки на раб. столе

Форум — Desktop

Всем привет.

Может, кто подскажет, как в сабжевом интуитивном DE убрать иконки с рабочего стола? Нет, не volume icons, home folder, computer, trash icon, а свалку всех каталогов, которые есть в ~ и продублированы на десктопе.

Bohtvaroh ()

xsetbg и изображения в формате png

Форум — Desktop

Всем привет.

Кто-нибудь в курсе, почему после xsetbg image.png на экране видим сильно затемнённую версию этой картинки? С jpg проблем нет.

>>>

Bohtvaroh ()

Изменить скорость воспроизведения mp3

Форум — Desktop

Всем привет.

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

>>>

Bohtvaroh ()

[Музыкантам] Общепринятый формат для хранения нот, табулатур

Форум — Talks

Всем привет.

Собственно, $subj. Есть такое в природе?

>>>

Bohtvaroh ()

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