Последние комментарии

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


heroovime

Эх, были времена..


Nathaniel

Узнал об Evernote давно. В первый раз как-то не зацепила. Сегодня попробовал снова. Действительно очень удобно. Особенно при изучении языков или написании романов. Не хватает только вложенных наборов блокнотов, ну да ничего.


_fc

Андроид - не Windows Phone, 4.1 даже на моём слабеньком Galaxy Gio отлично идёт (народные умельцы его уже портировали, хоть и не до конца).


Михаил Фленов

У меня нет ASUS, у меня воляется безымянный китаец, который даже по железу не потянет новый андроид


_fc

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


Михаил, кстати, раз уж заговорили о моб. платформах - ты как-то говорил что у тебя дома валяется ASUS Transformer, и его не обновляют. Вчера же они уже выпустили обновление до 4.1, а так же Google собирается делать обновления сам, не дожидаясь обновления от производителей.


Игорь

Я извиняюсь на некрокомментарий, но ваш блог нашел случайно буквально несколько дней назад, раньше читал ваши книги, и начал читать весь блог с обратном порядке.
В дискусию с LINQ просто не могу не ворватся.

Для чего я обычно использую Linq 2 SQL: когда нужно быстро сделать систему, для которой не сильно важны высокие нагрузки. В итоге я имею меньшую вероятность сделать ошибку при построении сложных запросов.

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

from cl in dc.Clients
where !cl.Deleted
let balanceAdd = cl.Payments
    .Sum(x => (decimal?)(x.Sum * x.PaymentType.TOCoefClient)) ?? 0
let balanceSub = cl.Campaigns.SelectMany(c => c.Accounts)
    .Sum(acc => (decimal?)(acc.ReportsCount * acc.MiddleCost)) ?? 0
let incomeAdd = cl.Payments
    .Sum(x => (decimal?)(x.Sum * x.PaymentType.TOCoefMediaLead)) ?? 0
let incomeSub = (dc.Cards
    .Where(c => c.Account.Campaign.ClientID == cl.ID)
    .Sum(c => c.BuyPrice) ?? 0) +
    (dc.Coupons
    .Where(c => c.Account.Campaign.ClientID == cl.ID)
    .Sum(c => c.BuyPrice) ?? 0)
let adWordsAdd = (dc.Cards
    .Where(c => c.Account.Campaign.ClientID == cl.ID)
    .Sum(c => c.VolumePrice) ?? 0) +
    (dc.Coupons
    .Where(c => c.Account.Campaign.ClientID == cl.ID)
    .Sum(c => c.VolumePrice) ?? 0)
let middleSum = cl.Campaigns.SelectMany(c => c.Accounts)
    .Where(acc => acc.DateFrom.HasValue && acc.DateFrom.Value <= now && (!acc.DateTo.HasValue || acc.DateTo.Value >= now))
    .Sum(acc => (decimal?)acc.MiddleCost) ?? 0
let turnover = dc.ReportDatas
    .Where(rd => rd.Import.Account.Campaign.ClientID == cl.ID)
    .Sum(rd => (decimal?)rd.Cost) ?? 0
select new ClientDebtReportItem
{
    ID = cl.ID,
    Name = cl.Name,
    Balance = balanceAdd - balanceSub,
    Income = incomeAdd - incomeSub,
    AdWords = adWordsAdd - balanceSub,
    Turnover = turnover,
    MiddleSum = middleSum
};

Понять такой запрос намного проще (для тех кто знаком с LINQ), чем аналогичный SQL код, места он будет занимать куда больше, и поэтому вероятность сделать ошибку больше.

Но если системе будут нужны высокие нагрузки на базу данных, или какая-то интеграция с другими языками, то в этом плане я с вами согласен, эти фреймворки здесь неприменимы.


Михаил А.

Здравствуйте.

"Помню когда еще учился в институте, то очень много времени убил на World of Warcraft. Я играл не так уж и много, но на такую классику, как World of Warcraft я угробил не один день."

В каком ещё институте? Что Вы там курили, когда заметку писали? Игра вышла в 2004 году, а Вы окончили своё обучение несколькими годами раннее, не так ли?

Простите меня за грубость, ну просто, реально Ваша заметка расмешила меня до слёз.

По сабжу: близарды очень стараются и делают как обычно очень качественный продукт. Но как по мне игру уже пару лет преследует утопия - они изжила себя. Поэтому долго эта игра не протянет. К сожалению, ВОВ это не старктафт 1, который будут играть всегда (


heroovime

Спасибо)


Михаил Фленов

Используй тот же, что и я http://www.flenov.info/blog.php?catid=1387


heroovime

Михаил, а подскажите, плиз, хороший хостинг в США. Возможно я повторяю чей-то вопрос, тогда пошлите меня ссылкой)


О блоге

Программист, автор нескольких книг серии глазами хакера и просто блогер. Интересуюсь безопасностью, хотя хакером себя не считаю

Обратная связь

Без проблем вступаю в неразборчивые разговоры по e-mail. Стараюсь отвечать на письма всех читателей вне зависимости от страны проживания, вероисповедания, на русском или английском языке.

Пишите мне