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

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

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

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

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

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

Драйвер редиса возвращает 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 / 4281 день назад

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

#F4E4YP (10+1) / @krkm / 4281 день назад

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

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

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

#6J9H4P (2+3) / @o01eg / 4281 день назад
<Symbol name="&gt;"></Symbol>_<Symbol name="lt;"></Symbol>

<!-- ^^^ моё лицо когда на уровне вложенности около 20 элементов рефакторю 3.5kSLOC XSD-схему с убитой индентацией, табами/пробелами вперемешку -->

#CT3239 (7) / @ulidtko / 4282 дня назад

Сорь, не все поймут, но я покакал после душа.

#533IIM (3) / @ulidtko / 4284 дня назад

http://occupyflash.org/

Лайк, если тоже любишь бороться за свободу!

#1GP7XA (7+2) / @ulidtko / 4284 дня назад

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 / 4284 дня назад

прикол
http://i.imgur.com/STw7jVc.png

// лайк если тоже ходишь в космос за куркумой

#SNO22N (7) / @ulidtko / 4285 дней назад

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

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

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

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

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

#LM77TH (35+2) / @captain-obvious / 4287 дней назад

http://en.wikipedia.org/wiki/Igor_of_Kiev
http://ru.wikipedia.org/wiki/Игорь_Рюрикович

не читайте рупарашу плиз

#7M1O96 (2) / @ulidtko / 4288 дней назад

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

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

Как бороться с неоднозначностью простых, человеческих слов при проектировании интерфейса?

Скажем, есть у меня абстрактный класс с методами authenticate, authorise и account. Как избежать прочтения последнего существительным?
Вангую неиллюзорные отсосы с этой лажей, ведь она должна читаться глаголом и только глаголом. doAccount? performAccounting? Говно блядь какое-то. Накидайте

#RJM1E0 (38) / @ulidtko / 4289 дней назад
% aptitude search 'getopt perl'
v   libgetopt-argfile-perl          
p   libgetopt-argvfile-perl         
p   libgetopt-declare-perl          
p   libgetopt-euclid-perl           
p   libgetopt-long-descriptive-perl 
p   libgetopt-lucid-perl            
p   libgetopt-mixed-perl            
p   libgetopt-simple-perl           
p   libgetopt-tabular-perl          
p   libgetopt-usaginator-perl       
p   libmoosex-getopt-perl           
p   libmousex-getopt-perl           

Ппц я потерян. Чотут?
Помогите перлоньюфажику плз.

#X3Z2F9 (4) / @ulidtko / 4289 дней назад
--
ipv6 ready BnW для ведрофона BnW на Реформале Викивач Котятки

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