Знакомый, желающий приобрести коммуникатор, выбирает между Samsung Galaxy S и HTC Desire. Спросил у меня, стоит ли доплачивать, чтобы взять Galaxy. Я, на всякий случай, решил продублировать ответ сюда - вдруг кому еще пригодится.
15 октября 2010
20 сентября 2010
Потрясём окнами :)
Сейчас случайно обнаружил забавную вещь: если в Windows 7 взять какое-нибудь окно за заголовок и потрясти его, то срабатывает команда "Показать рабочий стол" (Win+M): все остальные окна сворачиваются / разворачиваются в зависимости от их состояния. Создание видимости деятельности ОС для особо нервных?
28 июля 2010
Первые впечатления от Samsung Galaxy S.
Не буду описывать возможности самого коммуникатора или OS Android 2.1, их, при желании можно почитать в довольно подробных обзорах. По сути - весьма качественный "какайфон". Постараюсь поделиться именно впечатлениями.
Оказалось, что эту "лопатку" весьма комфортно носить в кармане брюк благодаря малому весу (117г) и толщине - несмотря на большую площадь, в кармане она практически не ощущается, чему я безмерно рад.
Super AMOLED экран - просто сказка, читается даже на ярком солнце.
Но это всё фигня, главное - это то, чем хвалятся айфонофилы - продуманность интерфейса. Причем, с явным уклоном в сторону Google (вполне ожидаемо при том, что программная начинка - Google Android). В принципе, это ровно то, чего я ждал. Так, буквально после настройки доступа к Internet, достаточно было указать в настройках Google-аккаунт для синхронизации, после чего произошел импорт контактов Google, синхронизировалась гуглопочта, подключился клиент Google Talk, а при отгрытии галереи, обнаружилась возможность просматривать не только локальные фото и видео, но и загруженные мною в сервис гуглофотки aka Picasa Web.
Я, как идеологически верный гуглопользователь, безусловно, ощутил, как это прекрасно! Действительно, ОС практически бесшовно интегрирована с сервисами Google. Неудивительно, что для адептов гугла гуглофон - the best.
Тут небольшое лирическое отступление: вот уже примерно с полгода я поддерживаю актуальными контакты в Google, т.е. у меня была настроена синхронизация "телефон Nokia <-> Thunderbird <-> Google Contacts". Соответственно, вопроса "как перенести контакты с Nokia в Andoroid'офон" не было вообще - они просто магическим образом перенеслись сами раньше, чем я об этом задумался.
Вообще коммуникатор, как следует из названия, в основном предназначен для коммуникации (контактов) с другими людьми, и в этом плане - управление контактами и средствами коммуникации, андроидофон меня просто очаровал! Именно этим опытом и хочется поделиться - нет смысла рассказывать про функции наладонника, игрового, мультимедийного девайса (с ними он справляется прекрасно - производительности хватает) и, тем более, телефона - все стандартно.
Не менее тесно, чем с Google, телефон интегрирован с Facebook, MySpace и Twitter. Аккаунт для синхронизации настраивается там же, где и гуглоаккаунт, после чего события отображаются в виджетах и... телефонной книге! Т.е. открываешь список контактов как в обычном телефоне, выбираешь Васю Пупкина, и можно ему позвонить или открыть вкладку, где видно, какие события произошли у Васи в Facebook. Просмотр событий возможен и без интернета, т.к. информация о контактах и их активности скачивается в фоновом режиме при наличии сети (можно отключить). Есть вкладочка "Медиа" с фотографиями из соцсети, правда, работает она только при наличии соединения с Internet. Тут же можно почитать комментарии к событиям или фото или оставить свой - без запуска браузера или дополнительных клиентов.
Удалось найти плагин для синхронизации контактов с отечественной соцсетью ВКонтакте, но на скачивании контактов с аватарами и некоторой контактной информацией интеграция заканчивается - ни тебе событий, ни фоток из альбомов, ни комментариев. В контакт-листе добавилась только возможность одним кликом открыть в браузере профиль пользователя.
Да, кстати, весь этот зоопарк из контактов из различных источников прекрасно объединяется в метаконтакты - т.е. если Вася Пупкин есть в контактах Google, Facebook и ВКонтакте, то можно указать, что это один Вася, а не три - отображаться будет агрегированная информация (события, медиа). Более того, Андроид пытается объединять их самостоятельно - точно алгоритм не знаю, но, судя по всему, сопоставляет различные элементы - ФИО, е-мэйл, номера телефонов и т.п. Таким образом, из 317 контактов в Google, 157 ВКонтакте и порядка 20 в Facebook при почти полном пересечении мне пришлось вручную сопоставлять лишь порядка 20 - остальные он успешно объединил сам. Ошибок второго рода - неправильного автосвязывания не наблюдается (разве что у вас в контактах есть полные тёзки). Даже при ручном связывании система пытается первым делом предложить наиболее подходящие, с ее точки зрения, варинаты (если имеются сколько-нибудь похожие). Конечно, при таком раскладе в телефонной книге оказывается огромная куча лишних записей - например, тэги имен из Google Picasa. Можно поставить галочку "отображать только контакты с телефонными номерами", тогда список контактов, несмотря на обилие друзей в сети, станет именно телефонной книгой. Но лично я предпочитаю рассматривать сей девайс преимущественно не как звонилку, а именно как средство интернет-коммуникации, потому оставил в списке все контакты - из этого же списка контактов вполне можно рассылать почту и чатиться наравне со звонками. Кстати, чат тоже интегрирован в этот же список контактов - если контакт добавлен в ваш Google Talk, то когда он в сети, рядом с ним отображается цветной кружочек статуса - да да, прямо в том списке, что в большинстве телефонов и даже коммуникаторов является всего лишь телефонной книгой.
В телефонах мы привыкли видеть сообщения в отдельном пункте меню, а список звонков - в отдельном журнале. Деление обычно на входящие, исходящие и пропущенные. Здесь такой журнал тоже есть. Помимо этого, в том же списке контактов у каждого контакта есть вкладка "Журнал", где отображается история звонков и переписок именно с этим абонентом - просто безумно удобно. До этого, лучшее, что я видел - на смартфон можно поставить программу, отображающую SMS-переписку в виде чата. Здесь это поднято на новый уровень.
В итоге у меня 300 с лишним контактов в "телефонной книге" и ни один я не вводил руками - они сами ко мне пришли. Причем с фотографиями, которые я не назначал, днями рождения, которые я не вводил и прочей информацией, размещенной самими контактами в соцсетях. Обилие записей лично меня не смущает - поиск справляется прекрасно, можно назначить "любимые" контакты для быстрого доступа, делать к ним ярлыки на рабочем столе и т.п.
Естественно, есть обратная сторона медали: для того, чтобы жизнь была сказкой, девайсу необходим Интернет. Хоть информация о контактах без него никуда и не пропадает, но без интернетакарета мегакоммуникатор превращается в тыкву обычную звонилку. Безусловно, положение спасает Wi-Fi, благо Wi-Fi роутер (или хотя бы адаптер у компьютера) дома или на работе - это не редкость, так что за бОльшую часть трафика сотовым операторам с их жлобскими ценами и тормозным каналом можно не платить: при обнаружении ранее зарегистрированной сети переключение происходит автоматически.
Пожалуй, расстроивших меня недостатка на данный момент три:
1. Отсутствует официальный клиент Skype для платформы Android.
2. Не везде работает жест "назад" пальцем влево - как на iPhone - для возврата предназначена отдельная кнопочка.
3. В Android Market (аналог AppStore для iPhone) для жителей России официально доступны только бесплатные приложения. Патчи есть, но нужно патчить, чтобы иметь возможность что-то купить. Несмотря на то, что бесплатных приложений больше половины - 57% (и это, кстати, практически полностью покрывает нужды), иногда не грех и купить что-то.
Не удалось настроить подключение к Wi-Fi на работе (дома все завелось с полтычка, спасибо WPS) - авторизация WPA2-Enterprise, требуется установить пару сертификатов x509. Завис на стадии импорта сертификатов - пункт "установить сертификаты с карты памяти SD" есть, но мои сертификаты видеть отказывается, игнорирует. Написал в техподддержку - ответили, что, переслали письмо в Корею разработчикам, жду ответ.
Оказалось, что эту "лопатку" весьма комфортно носить в кармане брюк благодаря малому весу (117г) и толщине - несмотря на большую площадь, в кармане она практически не ощущается, чему я безмерно рад.
Super AMOLED экран - просто сказка, читается даже на ярком солнце.
Но это всё фигня, главное - это то, чем хвалятся айфонофилы - продуманность интерфейса. Причем, с явным уклоном в сторону Google (вполне ожидаемо при том, что программная начинка - Google Android). В принципе, это ровно то, чего я ждал. Так, буквально после настройки доступа к Internet, достаточно было указать в настройках Google-аккаунт для синхронизации, после чего произошел импорт контактов Google, синхронизировалась гуглопочта, подключился клиент Google Talk, а при отгрытии галереи, обнаружилась возможность просматривать не только локальные фото и видео, но и загруженные мною в сервис гуглофотки aka Picasa Web.
Я, как идеологически верный гуглопользователь, безусловно, ощутил, как это прекрасно! Действительно, ОС практически бесшовно интегрирована с сервисами Google. Неудивительно, что для адептов гугла гуглофон - the best.
Тут небольшое лирическое отступление: вот уже примерно с полгода я поддерживаю актуальными контакты в Google, т.е. у меня была настроена синхронизация "телефон Nokia <-> Thunderbird <-> Google Contacts". Соответственно, вопроса "как перенести контакты с Nokia в Andoroid'офон" не было вообще - они просто магическим образом перенеслись сами раньше, чем я об этом задумался.
Вообще коммуникатор, как следует из названия, в основном предназначен для коммуникации (контактов) с другими людьми, и в этом плане - управление контактами и средствами коммуникации, андроидофон меня просто очаровал! Именно этим опытом и хочется поделиться - нет смысла рассказывать про функции наладонника, игрового, мультимедийного девайса (с ними он справляется прекрасно - производительности хватает) и, тем более, телефона - все стандартно.
Не менее тесно, чем с Google, телефон интегрирован с Facebook, MySpace и Twitter. Аккаунт для синхронизации настраивается там же, где и гуглоаккаунт, после чего события отображаются в виджетах и... телефонной книге! Т.е. открываешь список контактов как в обычном телефоне, выбираешь Васю Пупкина, и можно ему позвонить или открыть вкладку, где видно, какие события произошли у Васи в Facebook. Просмотр событий возможен и без интернета, т.к. информация о контактах и их активности скачивается в фоновом режиме при наличии сети (можно отключить). Есть вкладочка "Медиа" с фотографиями из соцсети, правда, работает она только при наличии соединения с Internet. Тут же можно почитать комментарии к событиям или фото или оставить свой - без запуска браузера или дополнительных клиентов.
Удалось найти плагин для синхронизации контактов с отечественной соцсетью ВКонтакте, но на скачивании контактов с аватарами и некоторой контактной информацией интеграция заканчивается - ни тебе событий, ни фоток из альбомов, ни комментариев. В контакт-листе добавилась только возможность одним кликом открыть в браузере профиль пользователя.
Да, кстати, весь этот зоопарк из контактов из различных источников прекрасно объединяется в метаконтакты - т.е. если Вася Пупкин есть в контактах Google, Facebook и ВКонтакте, то можно указать, что это один Вася, а не три - отображаться будет агрегированная информация (события, медиа). Более того, Андроид пытается объединять их самостоятельно - точно алгоритм не знаю, но, судя по всему, сопоставляет различные элементы - ФИО, е-мэйл, номера телефонов и т.п. Таким образом, из 317 контактов в Google, 157 ВКонтакте и порядка 20 в Facebook при почти полном пересечении мне пришлось вручную сопоставлять лишь порядка 20 - остальные он успешно объединил сам. Ошибок второго рода - неправильного автосвязывания не наблюдается (разве что у вас в контактах есть полные тёзки). Даже при ручном связывании система пытается первым делом предложить наиболее подходящие, с ее точки зрения, варинаты (если имеются сколько-нибудь похожие). Конечно, при таком раскладе в телефонной книге оказывается огромная куча лишних записей - например, тэги имен из Google Picasa. Можно поставить галочку "отображать только контакты с телефонными номерами", тогда список контактов, несмотря на обилие друзей в сети, станет именно телефонной книгой. Но лично я предпочитаю рассматривать сей девайс преимущественно не как звонилку, а именно как средство интернет-коммуникации, потому оставил в списке все контакты - из этого же списка контактов вполне можно рассылать почту и чатиться наравне со звонками. Кстати, чат тоже интегрирован в этот же список контактов - если контакт добавлен в ваш Google Talk, то когда он в сети, рядом с ним отображается цветной кружочек статуса - да да, прямо в том списке, что в большинстве телефонов и даже коммуникаторов является всего лишь телефонной книгой.
В телефонах мы привыкли видеть сообщения в отдельном пункте меню, а список звонков - в отдельном журнале. Деление обычно на входящие, исходящие и пропущенные. Здесь такой журнал тоже есть. Помимо этого, в том же списке контактов у каждого контакта есть вкладка "Журнал", где отображается история звонков и переписок именно с этим абонентом - просто безумно удобно. До этого, лучшее, что я видел - на смартфон можно поставить программу, отображающую SMS-переписку в виде чата. Здесь это поднято на новый уровень.
В итоге у меня 300 с лишним контактов в "телефонной книге" и ни один я не вводил руками - они сами ко мне пришли. Причем с фотографиями, которые я не назначал, днями рождения, которые я не вводил и прочей информацией, размещенной самими контактами в соцсетях. Обилие записей лично меня не смущает - поиск справляется прекрасно, можно назначить "любимые" контакты для быстрого доступа, делать к ним ярлыки на рабочем столе и т.п.
Естественно, есть обратная сторона медали: для того, чтобы жизнь была сказкой, девайсу необходим Интернет. Хоть информация о контактах без него никуда и не пропадает, но без интернета
Пожалуй, расстроивших меня недостатка на данный момент три:
1. Отсутствует официальный клиент Skype для платформы Android.
2. Не везде работает жест "назад" пальцем влево - как на iPhone - для возврата предназначена отдельная кнопочка.
3. В Android Market (аналог AppStore для iPhone) для жителей России официально доступны только бесплатные приложения. Патчи есть, но нужно патчить, чтобы иметь возможность что-то купить. Несмотря на то, что бесплатных приложений больше половины - 57% (и это, кстати, практически полностью покрывает нужды), иногда не грех и купить что-то.
Не удалось настроить подключение к Wi-Fi на работе (дома все завелось с полтычка, спасибо WPS) - авторизация WPA2-Enterprise, требуется установить пару сертификатов x509. Завис на стадии импорта сертификатов - пункт "установить сертификаты с карты памяти SD" есть, но мои сертификаты видеть отказывается, игнорирует. Написал в техподддержку - ответили, что, переслали письмо в Корею разработчикам, жду ответ.
14 июля 2010
Салатная VIP-дорожка
Раньше перед VIP-персонами расстилали красную ковровую дорожку. А теперь салатная: доблестные ГАИцы по всему городу через 20-50 метров.
Не знаю, какие чувства это должно вызывать у простых смертных, следующих по тому же маршруту, по замыслу имиджмейкеров соответствующих персон (благоговение, уважение, боязнь и т.п.?), но у меня стойкое ощущение ожидания очередного таза с говном.
Не знаю, какие чувства это должно вызывать у простых смертных, следующих по тому же маршруту, по замыслу имиджмейкеров соответствующих персон (благоговение, уважение, боязнь и т.п.?), но у меня стойкое ощущение ожидания очередного таза с говном.
25 июня 2010
24 марта 2010
Антиполезная антивирусная антифича: проверено, вирусов нет
От некоторых приходят по почте сообщения со вставками типа
И о чем мне это говорит? Я должен этому письму доверять, считая, что вирусов в нем действительно нет? На каком основании? Почему я должен верить, что этот "безопасный" кусок текста добавлен антивирусом, а не вирусом, засунувшим себя в это самое письмо? Не говоря уже о том, что этот бесполезный кусок текста загромождает переписку.
__________ Information from ESET NOD32 Antivirus, version of virus signature database 4970 (20100324) __________
The message was checked by ESET NOD32 Antivirus.
http://www.esetnod32.ru
И о чем мне это говорит? Я должен этому письму доверять, считая, что вирусов в нем действительно нет? На каком основании? Почему я должен верить, что этот "безопасный" кусок текста добавлен антивирусом, а не вирусом, засунувшим себя в это самое письмо? Не говоря уже о том, что этот бесполезный кусок текста загромождает переписку.
29 января 2010
Существенно ли?
Допустим, в интерфейсе или базовом классе есть метод, возвращающий фиксированный набор значений, различный для разных реализаций этого метода в разных наследниках. Следует ли считать предпочтительным паттерном заведение в каждом классе своего статик-свойства, значение которого и возвращается при каждом обращении к методу.
Т.е. "естественная" реализация:
"Оптимизированная" реализация:
Или все-таки оптимизатора в данном случае следует считать параноиком, усилия которого .NET съест с большим аппетитом (равно как и GC съест возвращенные экземпляры массивов), и такие оптимизации как мертвому припарки?
Т.е. "естественная" реализация:
* This source code was highlighted with Source Code Highlighter.
enum SomeEnum {...}
class BaseClass()
{
public virtual IEnumerable<SomeEnum> GetValueSet()
{
return new SomeEnum[] { SomeEnum.Value1, SomeEnum.Value2 };
}
}
"Оптимизированная" реализация:
* This source code was highlighted with Source Code Highlighter.
enum SomeEnum {...}
class BaseClass()
{
private static readonly SomeEnum[] valueSet1 = new[] { SomeEnum.Value1, SomeEnum.Value2 };
public virtual IEnumerable<SomeEnum> GetValueSet()
{
return valueSet1;
}
}
class ChildClass() : BaseClass
{
private static readonly SomeEnum[] valueSet2 = new[] { SomeEnum.Value3, SomeEnum.Value4 };
public override IEnumerable<SomeEnum> GetValueSet()
{
return valueSet2;
}
}
Или все-таки оптимизатора в данном случае следует считать параноиком, усилия которого .NET съест с большим аппетитом (равно как и GC съест возвращенные экземпляры массивов), и такие оптимизации как мертвому припарки?
28 января 2010
".NET именно для этого" или быдлокод?
Как вы относитесь к такому коду?
Оставим в стороне аргументацию за и против лямбда-функций. Основное нарекание, разумеется, вызывает метод ToList(), используемый только для того, чтобы получить доступ к вожделенному методу ForEach(), отсутствующему в EntitySet, дабы получить красивый и понятный, с точки зрения разработчика, код, умещающийся в одну строку.
* This source code was highlighted with Source Code Highlighter.
private EntitySet persons;
public void SomeMethod()
{
/// ...
persons.ToList().ForEach(person => person.Id = Guid.NewGuid());
/// ...
}
Оставим в стороне аргументацию за и против лямбда-функций. Основное нарекание, разумеется, вызывает метод ToList(), используемый только для того, чтобы получить доступ к вожделенному методу ForEach(), отсутствующему в EntitySet, дабы получить красивый и понятный, с точки зрения разработчика, код, умещающийся в одну строку.
Предложение заменить "вожделенный" ForEach() следующим образом, аргументированное тем, что не тратятся ресурсы на создание List'а (как память, так и процессорное время на конструкцию и последующую сборку мусора), опровергается как нецелесообразное.
* This source code was highlighted with Source Code Highlighter.
foreach(var person in persons)
person.Id = Guid.NewGuid();
Аргументация (приблизительная): «.NET для того и создан, чтобы о таких вещах не задумываться. Я смотрел Reflector'ом исходники .NET'а, там о производительности мало задумываются. Нет смысла оптимизировать кусок кода со сложностью o(), когда есть столь же часто вызываемый кусок кода со сложностью O(). Поэтому, если данный кусок кода не является узким местом, то создать объект наподобие List() и тут же отправить его на съедение сборщику мусора - это нормально. И вообще, если нужно оптимизировать в таких мелочах, то нужно отказаться от ASP.NET, и писать на C++».
На мой, субъективный взгляд, сомнительной оптимизацией (но как ни крути, а все же оптимизацией) можно считать требование отказаться от лямбда-функций (вызов метода ForEach для коллекции из N элементов - N+1 вызовов функций, на которых тоже можно сэкономить процессорные команды). А вот отказ от создания мимолетного объекта можно считать оптимизацией существенной, независимо от сложности других участков кода. Другими словами, первый кусок кода является сам по себе плохо пахнущим, и от таких необходимо избавляться.
Допустимым можно считать создание недостающего екстеншн-метода для повторного использования (при непреодолимой любви к лямбда-функциям):
* This source code was highlighted with Source Code Highlighter.
public static void ForEach(this IEnumerable array, Action action)
{
foreach (var item in array)
action(item);
}
public void SomeMethod()
{
/// ...
persons.ForEach(person => person.Id = Guid.NewGuid());
/// ...
}
Непревзойденным (по соотношению наглядность/цена) по-прежнему остается "классический" foreach, а создание заведомо выкидываемых объектов в качестве синтаксического сахара (в этой и других подобных ситуациях) следует классифицировать как быдлокод?
И еще один подобный вопрос в продолжение.
Подписаться на:
Сообщения (Atom)