БЕГЕМОТИКОВ МОЖНО! Войти !bnw Сегодня Клубы
УНЯНЯ. У нас есть немножечко инфы об этом пользователе. Мы знаем, что он понаписал, порекомендовал и даже и то и другое сразу. А ещё у нас есть RSS.
Теги: Клубы:

Вчера открыли станцию метро "Теремки", последнюю на этой линии стройки. Далее будут строить новую, четвертую ветку метро — на Троещину, единственный оставшийся в Киеве район совсем без метро и с проблемным сообщением с центральным правым берегом.

Говорят, по радио сообщали, что станция выполнена в морском стиле, так как она ближе всего к морю. Насколько морская тема раскрыта — можете судить сами, вот фото.

http://i.imgur.com/VNCwwa0.jpg

Вчера с мобильника почему-то запостить не удалось, поэтому пощу сегодня.

#P9NH5J (20+1) / @captain-obvious / 4038 дней назад

Драйвер редиса возвращает Redis (Either Reply a). При операции HGET возвращает, соответственно, Redis (Either Reply (Maybe ByteString)), типа значения по ключу может и не быть. Программист для упрощения пишет сначала специальную функцию redis', которая заворачивает ответ редиса в EitherT-based монаду, чтоб соединять подобные вычисления и возвращать первую неудачу:

newtype Redis' a = Redis' (EitherT Redis.Reply Redis.Redis a) deriving (MonadIO)
instance Monad Redis' where
    return = Redis' . EitherT . return . Right
    (Redis' m) >>= f = Redis' $ m >>= \rv -> unwrapRedis' $ f rv
redis' = Redis' . EitherT

Таким образом, теперь, если вы получаете ответ Redis (Either Reply a), вы его преобразуете в

Redis' (EitherT Reply Redis a)

и можете соединять подобные вычисления в do-блоке типа:

do
    res <- redis' $ Redis.hget foo bar
    res2 <- redis' $ Redis.hget baz zab

и вычисление остановится на первом возврате ошибки.

Далее. Программисту необходимо по кучке значений сделать HGET и вернуть это как-то внутри кортежа, поскольку мы внутри новой монады Redis' -- завернуть результат в неё. В случае, если значения хоть по одному ключу не существует, хочется вернуть Nothing для всех. Потому создаётся новая монада:

newtype HashFields a = HashFields (MaybeT Redis' a)
    deriving (Functor, Monad)
instance Applicative HashFields where
    pure = return
    (<*>) = ap

описывающая вычисления типа Redis', которые могут вернуть неудачу. Пишется новая функция

hashField = HashFields . MaybeT . redis'

способная завернуть результат неудачи в новую монаду, которая умеет останавливаться на первой неудаче. Также пишется специальная функция для HGET:

getField :: ByteString -- ^ Key
         -> ByteString -- ^ Hash field name
         -> HashFields String
getField key field = fmap toString $ hashField $ Redis.hget key field

Также напишем функцию, которая "запустит" наше вычисление:

getRedisFields :: forall a. HashFields a -> Redis' (Maybe a)
getRedisFields (HashFields f) = runMaybeT f

И теперь лёгким движением руки мы можем сделать что-то вроде:

getRedisFields ((,,,,,) <$>
    getField k "foo" <*>
    getField k "bar" <*>
    getField k "baz" <*>
    getField k "zab" <*>
    getField k "rab" <*>
    getField k "oof")

Вопрос: вам не кажется это "слишком"? Я пока еще не настолько просто манипулирую типами в голове, чтоб ощутить всю ситуацию, хорошо хоть в целом могу медленно прости по шагам по коду, но есть ощущение, что что-то здесь не так.

#DEENSA (6+1) / @kb / 4038 дней назад

Каждый, кто путешествовал по миру, знает, что мусульманские города могут быть намного беднее, а все же безопаснее бедных христианских, – например, в той же Латинской Америке. Или в Африке. Да что там, безопаснее многих американских. С индуистскими и буддистскими городами – то же самое. Вокруг грязновато, бедно, ободрано, но не опасно. О том же и статистика. Даже в революционном Египте 2011 года убивали в три раза реже, чем в России, или в два раза реже, чем в европейской и католической Литве. А до революции – в 2008–2009 годах – там вообще было не опаснее, чем в Швеции или Дании. То же самое можно сказать о Марокко, Тунисе или Иордании. Убийств на 100 тысяч жителей там примерно столько же, сколько в Англии, Франции или Греции. То есть 1–1,5 убийства на 100 тысяч жителей в год. В католической Бразилии убивают раз в двадцать чаще (22 убийства на 100 тысяч в год). А в Венесуэле – вообще в сорок раз (45–50 убийств на сто тысяч). Хотя какой экономический показатель ни возьми, любой покажет, что Бразилия – гораздо более богатая и развитая страна, чем Марокко или Египет, да и католическая Венесуэла тоже. В любых двадцатках, тридцатках и сотнях самых опасных городов мира восточные появляются в конце списка.

#F4E4YP (10+1) / @krkm / 4039 дней назад

http://asozd2c.duma.gov.ru/addwork/scans.nsf/ID/18BA83EBB35845C843257B51004E7036/$FILE/262496-6.PDF?OpenElement
"1) статью 4 изложить в следующей редакции:
«Статья 4. Недопустимость злоупотребления свободой массовой информации
Не допускается использование средств массовой информации в целях совершения уголовно наказуемых деяний, для разглашения сведений, составляющих государственную или иную специально охраняемую законом тайну, для распространения материалов, содержащих публичные призывы к осуществлению террористической деятельности или публично оправдывающих терроризм, других экстремистских материалов, а также материалов, пропагандирующих порнографию, культ насилия и жестокости, эгоизм, социальный паразитизм, сексуальную распущенность, легкомысленное и (или) неуважительное отношение к сексуальным функциям и (или) реализации сексуальных функций, несоблюдение ценностей, закрепленных в Конституции Российской Федерации, и материалов, содержащих нецензурную брань."

легкомысленное и (или) неуважительное отношение к сексуальным функциям и (или) реализации сексуальных функций

Ура, товарищи! Так победимъ здравый смысл!

#6J9H4P (2+3) / @o01eg / 4039 дней назад

You know what? Fuck your stance on profanity. Fuck your priorities in life. The WTFPL is about fucking freedom and we mean it. Freedom means freedom to copy and modify and share works of art and science with the rest of mankind, but also freedom to be gay and marry and have crazy gay sex, freedom to have tattoos, freedom to say there is no God, freedom to take the pill, freedom to have an abortion. People die for being gay or atheists. Don’t tell me that there is something sacred enough that it must be protected from the mere existence of the word “fuck”. If the F in WTFPL offends you, then fuck you and your beliefs. Triple fuck you.

#KTKHY3 (2+2) / @l29ah / 4041 день назад

https://github.com/remixz/dogescript

#0O38WQ (4+1) / @nixer / 4041 день назад

На жуйке очередной всплеск свободолюбия - Тоня забанила любимого многими жуйкоюзера.

Народ начал писать петиции о том, чтобы его разбанили.
Другой народ предложил забанить тех, кто просит его разбанить.
Третьи попросили, чтобы на них тоже наложили бан, ибо без того юзера им жизнь не мила.
Четвертые устроили разборки с требованиями свободы и протухшими шуточками про ПМС.
И, наконец, пятые предложили забанить всех нахуй.
Угнич забанил всех ботов горячо обсуждаемого юзера и отреагировал у себя в блоге:

@ugnich: Четыре года на Juick существует правило, согласно которому нельзя оскорблять других пользователей. И все равно регулярно находится какой-нибудь индивидуум, который сначала поливает всех говном, а потом строит из себя несчастную жертву кровавого режима.
Не можешь нормально общаться без оскорблений — уходи.

И конечно, в эти трудные времена радует юзер @ungich (причем люди до сих пор на него ведутся):

@ungich: Уже пять лет на жуйке существует традиция что я баню кого хочу. И все равно регулярно кто-нибудь удивляется.

#LM77TH (35+2) / @captain-obvious / 4044 дня назад

http://i.imgur.com/V7jQXUV.jpg
сразу видно химики а не ученые

#J3TKB2 (24+2) / @krkm / 4046 дней назад

http://nimrod-code.org/
Пацаны, кто тыкал?

Выглядит как почти идеальный ЯП с паскалевским синтаксисом.

#42D7TI (10+1) / @ninesigns / 4047 дней назад

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

http://www.rg.ru/2013/10/29/avtor.html

#GIND36 (3+2) / @anonim / 4048 дней назад

Йейейей, приехал!
http://i.imgur.com/SnhOjyDl.jpg

#PRXW5D (30+2) / @xenomorph / 4052 дня назад

http://slovo13.livejournal.com/1096833.html
"...Я сидел в Дахау. Мы работали на прокладке дорог. Тяжело, но в день работали восемь часов. Да, немецкий надзиратель иногда бил по щеке и обзывал еврейской свиньей. Это было ужасно. А что здесь? Урки каждый день не называют меня пархатым жидом? От них я не получаю пинков? Думаете, мне легче оттого, что бьют и обзывают меня уголовники, а не охранник? Зато там у меня была удобная кровать с чистой постелью. У меня были мыло, зубная щетка, чистое белье, теплая одежда на зиму. Все время я поддерживал связь с семьей, получал письма, посылки, никогда не голодал. Мне ненавистны проклятые нацисты. Но, лежа здесь, в этой вонючей грязи, расчесывая искусанное тело и тоскуя по дополнительной пайке, я допускаю иногда страшную мысль. Признаю, что мысль эта ужасна, но от вас ее не скрою. Если бы мне предложили выбрать между Печорлагом и концлагерем Дахау, я, кажется, выбрал бы Дахау...
Менахем Бегина "В белые ночи", глава 20 "Цель и средства"

#JNAOT0 (21+2) / @o01eg / 4053 дня назад

Мегаохуительный пост про то, как нарисровать треугольник на 3dfx voodoo напрямую говоря с железкой.

http://www.openglsuperbible.com/2013/09/07/voodoo-registers-part-1/

#OAAK6U (0+1) / @ninesigns / 4055 дней назад
bnw

Что за отсос? http://i.imgur.com/MzUUBBj.png

#DLA8K3 (2+1) / @captain-obvious / 4057 дней назад

http://i.imgur.com/961lPPC.png

#HW526P (0+5) / @anonymous / 4058 дней назад
--
ipv6 ready BnW для ведрофона BnW на Реформале Викивач Котятки

Цоперайт © 2010-2016 @stiletto.