Как стать автором
Обновить
4
0
Дмитрий Хорошевский @dmitry_h

Пользователь

Отправить сообщение
Под поддержкой имеется ввиду что хотелось бы чтобы EF воспринимал json как структуру и умел транслировать запросы на выборку на подобие XPATH. Например есть таблица User(id int, jsonData nvarchar(max)). В jsonData лежит все о пользователе { «name»: ...., «disabled»: false,… }. И мы пишем запросы которые опираются на эту структуру (dc.Users.Where(u => u.jsonData.getValue(«disabled») == «true»)). А не просто на строку. Но конечно же EF этого не умеет, все так же, как и с ограниченной поддержкой XML.
Интересно протестировать быстродействие на выборке в 1 млн записей. С XML было все печально, запросы выжирали все ресурсы. Из за этого в свое время и съехали на PostgreSQL чтобы иметь возможность полноценно работать с иерархиями на уровне 1 записи.
MS SQL очень мощная СУБД, но к сожалению поддержка JSON так и осталась не сильной его стороной. Вообще раньше было множество сторонних скриптов, которые позволяли делать то же что и эти функции (например https://www.simple-talk.com/sql/t-sql-programming/consuming-json-strings-in-sql-server/), хорошо что теперь из коробки будет работать. Лично я очень надеялся что появится более нативная поддержка в виде аналога jsonb оптимизированных для выборок.
Уже месяц как обладатель сего девайса, использую постоянно, так что могу констатировать, что 12 часов при плотной загрузке и нормальной яркости — это нереальная цифра. 8-9 часов он держит в таком режиме если убрать яркость с максимума. Нужно уточнить что такое плотная загрузка — это постоянный серфинг в интернете + прочие «офисные» приложения (почта, планировщик, RSS-ридер и т.п.) + wifi включен, BT и GPS выключены.

Но в целом аппарат удачный, никаких тормозов. До Galaxy пользовался iPhone 3Gs. Решил перейти на Android ввиду ряда ограничений iOS (который можно снять только через jailbreak). При переходе особого дискомфорта не ощутил, привык быстро.
Есть только 3 замечания:
— кнопка блокировки сбоку
— не хватает физического переключателя в режим вибро
— во время звонка, когда убераешь трубку от уха, а экран погасший. В iPhone было очень удобно сделана работа со звонками
В этом топике я не стремился показать то как нужно проектировать архитектуру, это совершенно отдельная тема, примеры были собраны за 5 минут, чтобы продемонстрировать суть проблемы и ее решения. Я лишь хотел обратить внимание разработчиков, на некоторые тонкости, которые явно не бросаются в глаза. перед тем как написать, я пообщался со знакомыми — разработчиками разного уровня. В результате получился следующий: для 5-ых это было реальной новостью, действительно об этом не нюансе знали. 2-е наиболее опытных ответили что хорошо знакомы с такой проблемой, и знают о чем говорят. 1 из них — ostapkoenig, дал очень дельное замечание по оптимизации, хотя и выходящее за рамки темы статьи.
Для тех кто в танке:

Так выглядит метод статического класса System.Linq.Queryable

public static IQueryable Select<TSource, TResult>(this IQueryable source, Expression<Func<TSource, TResult>> selector)
{
if (source == null)
{
throw Error.ArgumentNull(«source»);
}
if (selector == null)
{
throw Error.ArgumentNull(«selector»);
}
return source.Provider.CreateQuery(Expression.Call(null, ((MethodInfo) MethodBase.GetCurrentMethod()).MakeGenericMethod(new Type[] { typeof(TSource), typeof(TResult) }), new Expression[] { source.Expression, Expression.Quote(selector) }));
}

а так System.Linq.Enumerable:

public static IEnumerable Select<TSource, TResult>(this IEnumerable source, Func<TSource, int, TResult> selector)
{
if (source == null)
{
throw Error.ArgumentNull(«source»);
}
if (selector == null)
{
throw Error.ArgumentNull(«selector»);
}
return SelectIterator<TSource, TResult>(source, selector);
}

О чем говорит этот код?

От том что логика формирования выражения совершенно разная, в первом случае мы вызываем 'компилятор' выражения, который в зависимости от типа провайдера соответствующим образом преобразует Expression. Во втором случае просто создается итератор, на каждой итерации которого просто вызывается selector.

Ну так ждем от вас доступного объяснения. Давайте, доступное объяснение в студию!
Я очень рад что вы, уважаемый в этом шарите. Но вы в этом не одиноки. Есть и другие избранные, которые понимают магию Expression<Func<..>> и умеют ее использовать :)
Да ты прав, тоже очень полезная возможность для оптимизации.
Ок, расскажу. Ну во первых, мне и жене оператор периодически рассылает рекламу на основе данных из договора (пол, возраст) — ей женскую, мне мужскую. Про парсинг SMS у меня может быть параноя, но тем не менее, когда я занимался проектом, связанным с покупкой подержанных автомобилей из европы (в большинстве sms-ок, рассылаемых клиентам встречалось слово авто). Через пол года после начала мне стали приходить рекламные sms с предложением — пришли sms на номер и выйграть автомобиль. Хотя знакомым слали кучу спама прочих тематик — выйграй квартиру, выйграй миллион и т.п…
Что в свою очередь навело меня на нехорошие мысли.
Скажи честно, ты какого из операторов представляешь и я отвечу на твои вопросы?
А какова вероятность того что ОПСОСы отказались от подобного дохода? Лично мне одно время приходил таргетированный спам от моего сотового оператора.
Это лично твое мнение? Или готов предоставить ссылку на источник.
Когда у моего друга стырили skype аккаунт с деньгами на балансе, то после обращения в суппорт вернули все + $1 в счет компенсации. Это ли не забота о пользователе? А что делают ОПСОСы если восстанавливаешь украденную сим карту — правильно, берут с тебя бабло за восстановление и еще на тебя вешают долги, которые наговорил вор?
Видимо именно в честности скайпа они видят основное нарушение прав российских граждан, лишенных возможности быть обманутыми.
Точно, я так же себе iPhone ставил на панель для навигации, видно не плохо, но тыкать по экрану будет совершенно неудобно. Я не представляю как им управлять, на ходу засовывать руки сквозь руль или к ладе будет прилагаться фирменный 15-ти сантиметровый стилус?
Да есть такая серия, только они все дохленькие какие то, слабо упаковать производительность N-серии в UL-формат и добиться хотя бы 4 часов автономной работы?
Для меня идеалом мобильности был MackBook Pro 13. При том что я совсем не фанат Apple-а, и сразу после покупки поставил на него в качестве основной системы Windows 7. А у нетбука не хватает мощности для моих задач.
Для меня остается загадкой почему ASUS, которая умеет делать надежные компьютеры, клепает таких динозавров (в смысле размеров), ноутбук — этож прежде всего мобильность! Только по этой причине отказался от ASUS-бука в пользу Соньки
Sorry, пропустил первый пример. Там как раз такая ситуация рассмотрена. В общем очень круто все, большой респект авторам!
А связывание будет 2-х сторонним?
Например если мы напишем:

var person = { Name: 'Вася'};
$('name').linkTo(«val», person, «Name»);
person.Name = 'Петя';

что выдаст
alert($('name').val());

?
Вот это кстати большая беда большинства инструментов, т.к. часто они как-то решают методом «подпорки» очень важные для нормальной работы задачи. К сожалению, я пока не смог найти такой инструмент, который сочетал бы в себе достаточную мне функциональность, простоту использования/освоения и удобство интерфейса.

Информация

В рейтинге
Не участвует
Откуда
Калининград (Кенигсберг), Калининградская обл., Россия
Дата рождения
Зарегистрирован
Активность