Сообщения fmdw
Вопрос по линзам
Чтение манов — для слабаков, а талмуда по lens — тем более. Вопрос: как совместить два действия над одним значением изящнее, чем:
import Control.Lens
on1 :: (b -> a -> c) -> (a -> b) -> a -> c
on1 f g a = f (g a) a
main = do
print $ on1 (_1 +~) (view _2) (1, 2)
print $ on1 (views _1) ((+) . view _2) (1, 2)
Web-фреймворк и сервер для Haskell
Разыскивается фреймворк для создания веб-морды для некой разработки. Что нужно:
- легковесность (!)
- умение раздавать статику
- REST API желательно должно как-то генерироваться (hackage://rest-gen?)
- Собственный HTTP сервер
Что не обязательно:
- Performance
Что совсем не нужно:
- Шаблонизатор
- Интерфейс к базе
Я слышал про wai/warp, snap и happstack. Кто из них лучше в плане легковесности? Какие подводные камни у них?
Этот ваш reference counting
Во время попытки доказать одному товарищу, что Swift — ненужно, я наткнулся на интересную особенность:
import Foundation
let noLeak = 131028
let withLeak = noLeak*10
class R {
var _a : R?
init(a : R?) {
_a = a
}
}
func test(n:Int, leak:Bool) {
var p0 = R(a : nil)
var p = R(a : p0)
for _ in 1...n {
p = R(a : p)
}
if leak {
p0._a = p
}
}
test(withLeak, true)
println("Evil leaking function")
test(noLeak, false)
println("Good function")
Первый вызов test просто течёт в лучших традициях Reference Counting, а вот второй падает со stack overflow (деаллокация, похоже, делается рекуррентно).
Интересно, есть ли такое же в Rust?
Docker: сборочки от Вована, поставленные на поток?
Почитал про это оверхайпнутое поделие. Как у него обстоит дело с секьюрностью? Что мешает мне подложить в сборочку какой-нибудь убунты пару особых патчей? Как всю эту прорву контейнеров обновлять?
И пытался ли кто-нибудь это использовать на десктопе для изоляции приложений и сред разработки разных проектов?
Signal Handler — как сделать лучше?
Есть код, который должен возвращать промежуточный результат при keyboard interruption. Пока я реализовал топорное решение: signal handler что-то пишет в некий MVar, а код вычисления этот MVar периодически проверяет. Всё работает, но это убого.
А как бы эту задачу решил %username%? Поделитесь best practices.
Back to the 90s
Каким софтом можно строить графики наподобие этого?
В браузере, данные должны подтягиваться с сервера.
Пример того, что нужно: http://rghost.ru/58917372.view
Как нынче модно решать проблему Producer/Consumer?
Мне известно несколько подходов к этой проблеме, подозреваю, что неизвестно больше:
1) Корутины. И producer и consumer живут в одном потоке, а значит реализовать, скажем, неблокирующий прелоад или гц ресурсов нельзя.
2) Iteratees, pipes и ещё десяток подобных библиотек. Более примитивны во всех смыслах, за исключением, может, pipes с его "клиент-серверной" моделью под капотом.
3) Некоторые эстеты используют продолжения. Мой бедный опыт использования продолжений подсказывает, что здесь опять проблема с взаимной блокировкой, prove me wrong.
4) Акторы, с помощью которых можно реализовать всамделишный клиент-сервер. Оверкилл.
Поскольку мне важно, чтобы consumer мог игнорировать недогруженные данные по своему усмотрению, а producer тоже был бы умным в плане использования различных эвристик, пока склоняюсь к 4, но это решение кажется слишком жирным во всех смыслах.
Можно ли дополнить этот список?
Синхронизация агенды org-mode с android
Кто-нибудь сумел это осуществить? Мне видится несколько способов:
1) Очевидный MobileOrg. Вроде работает, но бедновато.
2) org-icalendar-combine-agenda-files <-> x <-> android calendar
x <- [Google calendar, syncthing, caldav]
3) Пытаться пользоваться, собственно, emacs на самом быдлодевайсе.
На какой из способов стоит обратить внимание? Есть ли истории успеха?