Коммуникатор Nokia 5800
Подарил сам себе к Новому Году и Дню Рожденья подарок - коммуникатор Nokia 5800.
Довольно интересное устройство, до этого пользовался HTC 3470. В принципе, у обоих устройств есть много общего и одновременно имеются несколько существенных отличий.
Оба устройства имеют GPS приемник, большой сенсорный экран, мощный процессор, и довольно приличный аккумулятор, microCD карточку. Цена у обоих устройств практически одинаковая, так, вчера видел HTC 3470 в Софите за 14 тысяч, Nokia 5800 в Евросети стоит 15 тысяч.
Формфактор Нокии ближе к класическим мобильникам и уже чем HTC, хотя по весу они практически одинаковые. Nokia 5800 работает на базе Symbian 9.4 в то время как HTC строит свои коммуникаторы на базе Windows Mobile. Коммуникатор оснащен 3.2 мега пиксельной камерой со светодиодной вспышкой и автофокусом, что позволяет делать читаемые фотографии с документов - коммуникатор от HTC имеет ручной "автофокус" и начисто лишен светодиодной подсветки что делает его камеру годной только для фотографирования рож для контактов - а это совсем неинтересно.
Еще одним очевидным плюсом является его изначальная способность распознаваться любым компьютером как дисковый накопитель. HTC такой возможности был начисто лишен и приходилось перекачивать файлы через ActiveSync - причем перетащить на устройство файл больше 150 Mb у меня не получалось, а скорость по ощущениям была как на USB 1.0. Знающие люди говорят что есть софт позволяющий использовать HTC как дисковый накопитель, но я такой софт до сего момента так и не нашел.
Понравилось наличие встроенного FM тюнера, хотя думаю я не сильно его буду использовать. Еще есть акселерометр, в принципе неплохо, но это уже гламур. Есть TV - выход - эту штуку я еще не успел испытать. Дисплей заметно ярче и насыщенее чем у HTC. Также есть датчик приближения, т.е. когда телефон поднесен к уху тачскрин автоматически отключается. Также большущий плюс это поддержка 3G и WLAN.
Есть и заметные минусы. Во первых телефон начисто лишен офисных приложений. Причина обнаружилась быстро - пакет QuickOffice согласно сайта разработчиков еще не вышел для Symbian 9.4! Этот факт не позволяет рекомендовать телефон как бизнес-коммуникатор. Также дела обстоят и с DivX плеером - максимум что есть на сайте разработчиков версия для Symbian 9.3 и на 9.4 она не работает - проверено.
Также в телефоне отсутствует вменяемая программа для работы с GPS - то что есть мне не понравилось, в то время как с HTC в комплекте шел Navitel Navigator и carkit для работы в машине. Так что без доработок телефон вряд ли можно рекомендовать для использования в качестве навигатора в машине, хотя думаю можно будет поискать подходящий carkit и версию Navitel для Symbian - поживем увидим. По субъективным ощущениям GPS приемник менее чувствительный чем в HTC.
После включения телефона попробовал выйти с него в Интернет качество соединения мне резко не понравилось - не соединяется с Интернетом и все тут. При попытки соединения выдает "Подключение Невозможно". Странное дело что проблема возникает почти всегда когда пытаюсь выйти в интернет из своей квартиры, когда же вышел на улицу - все получилось. Оказалось что проблема кроется в 3G - телефон работает в режиме 3G и похоже у Билайна с этим какието проблемы, позвонил в техническую поддержку - там проблему полностью подтвердили, сказали что подправят настройки и все будет работать. Однако до сегодняшнего дня при работе в режиме 3G Интернет так и не заработал, я же просто переключил телефон в режим GSM - теперь все работает стабильно.
Еще одним очевидным плюсом является наличие 3.5мм гнезда для наушников.
А вот с USB разработчики меня огорчили - во первых это не miniUSB - разъем меньшего размера и более плоский. Во вторых, телефон от USB не заряжается. Для зарядки используется стандартный нокиевский разъем. Похоже такова политика фирмы. Обидно.
В целом впечатления довольно противоречивые, но все же положительных больше :)
P.S. Подскажите плиз нормальный текстовый редактор для Symbian пока не выйдет QuickOffice буду использовать его.
P.P.S. Как показала практика 3G у нас в Саратове у Билайна работает не только не всегда но и не везде, так, попробовал связаться в режиме 3G из района политеха - ничего не вышло соединяет только через GPRS, тоже самое и в районе Ильинской площади.
Ограничение области видимости в JavaScript
Иногда в JavaScript нужно создать пару методов которые должны быть видны только изнутри определенного куска кода. Для этого достаточно внести эти методы внутрь анонимной функции и сразу ее выполнить:
(function(){ //наша анонимная функция function func1(){ //первая функция видимость которой нужно ограничить alert('!'); } function func2(){ //вторая функция видимость которой нужно ограничить func1(); } func2(); //внутри блока func1 и func2 "видят" друг друга и могут быть вызваны! })(); //выполнить //при этом вне блока func1 и func2 оказываются невидны!
Этот принцип может быть также использован для создания приватных методов и свойств при программировании объектов.
Корректный способ итерации сквозь объекты
JavaScript удивительно мощный язык и, пожалуй самой мощным его свойством является возможность динамического конструирования объектов. Одной из часто встречающихся задач возникающих при работе с JavaScript является итерация по всем элементам объекта.
Допустим, у нас есть объект созданный вот таким образом:
var obj = {property1:"свойство 1",property2:"свойство 2"};
вот самый распространенный НЕПРАВИЛЬНЫЙ способ показать все свойства объекта:
for(key in obj){ alert(key); }
Вроде все работает правильно и на экране действительно последовательно покажутся все свойства объекта. Почему такой способ является неправильным?
Добавим перед циклом вот такую строчку:
Object.prototype['test1'] = "test1 value";
При запуске скрипта еще раз оказывается, что наш объект волшебным образом приобретает еще одно свойство - test1, хотя мы его не создавали! Это значит что любая сторонняя библиотека которая таким способом расширяет функциональность стандартных классов JavaScript, например prototype.js способна непредсказуем образом изменить логику работы ваших программ. В данном случае хорошим тоном является сравнение текущего свойства и свойства прототипа при каждой итерации, если они равны, значит ничего не делаем:
for(key in obj){ if (obj.constructor.prototype[key]!==obj[key]){ alert(obj[key]); } }
Обратите внимание, что здесь использовано строгое сравнение !==. Все просто, все логично, вот только набирать это каждый раз довольно утомительно, поэтому создадим вот такую функцию:
function forEach(obj,fn){ for(key in obj){ if (obj.constructor.prototype[key]!==obj[key]){ if (fn(key)===false) break; } } }
В этом случае итерация запишется совсем просто:
forEach(obj,function(key){ alert(obj['key']); });
Обратите внимание, что в функции forEach есть возможность остановить итерацию досрочно, что бывает полезно например при поиске элемента, для этого достаточно возвратить false:
forEach(obj,function(key){ alert(obj['key']); if (key=='property1') return false; });
Перегружайтесь бля!
Понимаю что пост мусорный и опять может подняться спор о противостоянии - Windows versus Linux, бессмысленный и беспощадный, к которому я давно решил не притрагиваться, но сегодня, придя с обеда обнаружил на своем мониторе сообщение:
ну и бежит строчка обратного отсчета сколько времени осталось до перезагрузки.
Т.Е. придя я на пять минут позже, я бы обнаружил перегруженный компьютер с закрытыми приложениями и сообщением, что ой бля меня перегрузили.
Я все могу понять, безопасность и все такое, но почему бля Микрософт без моего ведома позволяет себе перегружать компьютеры, закрывая все программы и убивая все несохраненные данные, причем это, замечу для вполне легальных копий Windows. Только Я имею право решать когда мне перегрузить МОЙ компьютер и никто бля другой. Странно, что никто из правозащитников не подал на детище дяди Билла (имею ввиду компанию Microsoft а не операционную систему, конечно) в суд за это вопиющее нарушение прав пользователей.