У меня с учетом системных чуть меньше 100, ни разу зависаний маркета не было, ну может и были, но я не помню. При первом запуске устанавливалось порядка 40 приложений подряд из веб версии play'я, и после включения телефона он сначала ничего не делал, потом аккуратненько по очереди начал устанавливать все приложения, установил без проблем.
p.s. sgn2 + acer a500
А есть похожее меряяет по пальцу приложенному к вспышке и камере. Там точность довольно высока. Пару апдейтов, пару обкатов на реальных условиях, и по лицу тоже будет мерять нормально.
Если строго придерживаться этого определения, то софт запускающийся на win7 и win8 тоже кроссплатформенный. Понятие кроссплатформенный, это запускающийся на большинстве современных устройств, ИМХО. Я например хочу использовать приложение как с компьютера на win, так и с ноута на ubuntu, с планшета на android, с телефона на winphone, c ipod'a на ios. Особенно если это web(!!!)-приложение.HTML5 прекрасно себя чувтсвует на всем что я перечислил. И чтоб вы не думали что я против сильверлайта, замечу что это один из профилей моей работы, но я считаю у него все же другая ниша чем интерактивные приложения для широкой публики(корпоративный сегмент сюда не входит). В пример кроссплатформеного приложения, я могу привести keepass.
Если разобрать по кусочкам, то:
Вы в класе DatabaseConfig создаете объект Environment, из него получаете методом beginTransaction конкретную транзацкию(вы не в DatabaseConfig открываете, а его методом с его настройками, получаете), и потом в том же контексте её закрываете методом commit. Почему вы написали что создаете в одном закрываете в другом?
Плюс, выскочила проблема создания/закрытия транзакции. Транзакция открывается в одном классе, а закрывается в другом, что так же выглядит не самым лучшим образом с точки зрения разработки. Пока эту «оплошность» я не смог «красиво» исправить.
Собственно задача: «А сделайте нам отчет по всем пользователям компании, да так чтобы и группы его выводились». Не знаю насколько это реально какими то нативными средствами администрирования AD, но первая идея пришедшая в голову написать запрос к AD и вытянуть с него всю инфу которую только можно в какую нить табличку и дальше уже обрабатывать чем душе угодно, будь то reporting service или что нить в духе crystal reports.
Ексепшена не будет просто будет пустота вместо значения.
4) то есть вы считаете что изменение свойства объекта методом этого же объекта никак не пересекается с приведенным выше утверждениями?
public int getSomeInt()
{
if (!canIGetThisInt)
throw new InvalidAccessException();
else
return someInt;
}
Быстрее и проще чем
Value="{Binding Path=supplier,Mode=OneWay}"
Плюс еще и ексепшен, а если там не должно быть этого значения? Ну просто нал вернуло? Будете все эти ексепшены руками обрабатывать?
4) Нет, я этого и не говорил, не передергивайте слова. Я сказал что мы уходим от ооп к функциональщине, имея ввиду что стиль становиться похожим на функциональное программирование. И пожалуйста объясните свое мнение что вы подразумеваете под функциональным программированием.
1) ds.DataContextChanged += new DependencyPropertyChangedEventHandler(ds_DataContextChanged);
Подписались и в дальнейшем при каждой смене датаконтекста у нас будет запуск нужного метода
Второй пример
RefreshSuite.Invoke(this,property);
Обновление может вызываться неявного от клиента (ну значение текстбокса изменил, или кнопочку нажал), А может явно, если еще другой пользователь в другой стране нажал, пользователь сидит и мониторит когда ж он нажмет.
Если в джаве неудобно работать с евентами, то откуда вы решили что в шарпе с ними же так же туго?
2)
уникальное для класса значение.
Не так выразился. Сам виноват, но все ж у свойств есть преимущество перед переменными класса в том что когда устанавливается значение можно завесить на него вызов события какого нибудь («Property Changed» например)
Пример из текущего проекта:
public DomainDataSource DS { get { return _ds; }
set
{
if (_ds != null)
_ds.DataContextChanged -= new DependencyPropertyChangedEventHandler(ds_DataContextChanged);
_ds = value;
fbrEdit.ds = value;
if (_ds != null)
_ds.DataContextChanged += new DependencyPropertyChangedEventHandler(ds_DataContextChanged);
}
}
3) Ладно, раз я не понимаю смысла интерфейса, расскажите мне не понимающему как вы реализуете блокировку/видимость компонентов отображения от внутренного состояния класса? Чур метод для обхода все компонентов не предлагать.
4) Замыкания. Открываем вики, читаем подряд два абзаца
Функциональное программирование предполагает обходиться вычислением результатов функций от исходных данных и результатов других функций, и не предполагает явного хранения состояния программы.
И второй
Противопоставляется парадигме императивного программирования, которая описывает процесс вычислений как последовательное изменение состояний (в значении, подобном таковому в теории автоматов).
P.S. и там ниже подсказывают еще про плюсы c# LINQ. Вот уж с этим спорить не будете?
Затем что с событиями очень легко и удобно работать. Свойства показывают уникальное для класса значение, через переменную просто так этого не сделаешь. Плюс прибиндить её (переменную) к интерфейсу извратиться нужно.А без замыканий, мы уходим от ооп к функциональщине, чего лично я вообще не люблю.
Зря не рассказали про Introduction to Databases. Сейчас его прохожу, довольно интересный курс с первого взгляда. Стоило написать хотя бы о том, что это курс о вообще структуированном хранении информации, а не конкретно о существующих базах данных. XML, JSON например рассматривают с первых лекций, что мне было слегка удивительно при беглом просмотре расписания курса. Но после вступительной речи и фразы что даже екселевский файлик является базой данных, все стало на свои места.
p.s. sgn2 + acer a500
Вы в класе DatabaseConfig создаете объект Environment, из него получаете методом beginTransaction конкретную транзацкию(вы не в DatabaseConfig открываете, а его методом с его настройками, получаете), и потом в том же контексте её закрываете методом commit. Почему вы написали что создаете в одном закрываете в другом?
«Оплошность»?!?! Вы серьезно??
вот за эту красненькую точку прекрасно таскается. Маленькая площадь, но она есть.
4) то есть вы считаете что изменение свойства объекта методом этого же объекта никак не пересекается с приведенным выше утверждениями?
Быстрее и проще чем
Плюс еще и ексепшен, а если там не должно быть этого значения? Ну просто нал вернуло? Будете все эти ексепшены руками обрабатывать?
4) Нет, я этого и не говорил, не передергивайте слова. Я сказал что мы уходим от ооп к функциональщине, имея ввиду что стиль становиться похожим на функциональное программирование. И пожалуйста объясните свое мнение что вы подразумеваете под функциональным программированием.
Подписались и в дальнейшем при каждой смене датаконтекста у нас будет запуск нужного метода
Второй пример
RefreshSuite.Invoke(this,property);
Обновление может вызываться неявного от клиента (ну значение текстбокса изменил, или кнопочку нажал), А может явно, если еще другой пользователь в другой стране нажал, пользователь сидит и мониторит когда ж он нажмет.
Если в джаве неудобно работать с евентами, то откуда вы решили что в шарпе с ними же так же туго?
2) Не так выразился. Сам виноват, но все ж у свойств есть преимущество перед переменными класса в том что когда устанавливается значение можно завесить на него вызов события какого нибудь («Property Changed» например)
Пример из текущего проекта:
public DomainDataSource DS { get { return _ds; } set { if (_ds != null) _ds.DataContextChanged -= new DependencyPropertyChangedEventHandler(ds_DataContextChanged); _ds = value; fbrEdit.ds = value; if (_ds != null) _ds.DataContextChanged += new DependencyPropertyChangedEventHandler(ds_DataContextChanged); } }
3) Ладно, раз я не понимаю смысла интерфейса, расскажите мне не понимающему как вы реализуете блокировку/видимость компонентов отображения от внутренного состояния класса? Чур метод для обхода все компонентов не предлагать.
4) Замыкания. Открываем вики, читаем подряд два абзаца
И второй
P.S. и там ниже подсказывают еще про плюсы c# LINQ. Вот уж с этим спорить не будете?