16 октября 2010

Тест для программистов

Знакомой девушке для дипломного проекта нужно набрать статистику по ответам на несколько психологических тестов, причем опрашиваемая аудитория должна быть не какая попало, а программисты.

Если не против потратить 15-20 минут на доброе дело (ну или 30-40, если подойдёте к делу крайне ответственно и будете серьёзно думать над каждым ответом), то заполните, пожалуйста, вот такой вот опросник.

15 октября 2010

Выбор между Samsung Galaxy S и HTC Desire

Знакомый, желающий приобрести коммуникатор, выбирает между Samsung Galaxy S и HTC Desire. Спросил у меня, стоит ли доплачивать, чтобы взять Galaxy. Я, на всякий случай, решил продублировать ответ сюда - вдруг кому еще пригодится.


13 октября 2010

Зачем нужен смартфон?

Для себя я нашёл окончательный утвердительный и обоснованный ответ на вопрос: "а нужен ли смартфон?". Как известно, приготовление пищи крайне плохо сочетается с использованием компьютера - как с играми, так и с просмотром фильмов, и, в особенности, с веб-сёрфингом (когда а-приори кажется, что отроваться можешь в любой момент, но на практике только кажется).
Очевидно, что заменить компьютер полностью смартфон не в состоянии, но вот заменить его на полчаса-час, требуемый для непрерывно контролируемого процесса приготовления пищи - более чем. Конечно, теоретически, ноутбук может решать ту же проблему, но, честное слово, прыгать с ноутбуком по кухне на порядок менее комфортно - поверьте, я пробовал и то, и другое.

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

05 октября 2010

Одежду тоже в забугорных интернетах покупать?

Нужен был галстук. К сожалению, к партнёрскому семинару прикупить не успел, потому шлялся там как типичный программер в свитерке, а не как типичный манагер в костюмчике. Ну да бог с ним, сейчас не об этом. Галстук для будущих официозных событий я сегодня всё же прикупил в магазинчике next. Магазинчик ассортиментом понравился, да и цены в нём не кусаются, решил зайти на next.co.uk, напечатанный на пакетике, в котором лежал галстук. Mama mia! Там же цены в среднем 2 раза ниже, чем у нас в подобных магазинах!!! Всерьёз задумался о том, чтобы тариться некоторыми шмотками в Британии. Очевидно, что, например, костюм или модную повседневную одежду без примерки, исключительно по фото покупать весьма рискованно. Но вот тот же галстук или шорты свободного покроя, думаю, можно брать с высокой степенью уверенности. Да и мужскую сорочку классического покроя, зная размер, думаю, можно брать почти уверенно. Двукратная разница в цене склоняет к мнению, что риск оправдан (при условии, что качество соответствует продаваемым в России, в чём я намереваюсь в недалёком будущем убедиться).

04 октября 2010

Xmarks сообщил о закрытии :(

Сегодня с установкой очередного обновления плагина Xmarks получил сообщение о возможном закрытии сервиса синхронизации синхронизации, или о том, что он станент платным, если как минимум 100 000 человек пообещают, что готовы платить за сервис $10-20 в год. Пообещал заплатить.

Грустно. Нет, другие сервисы синхронизации, конечно, есть: у Google Chrome есть синхронизация закладок между Chrome'ами, установленными на разных компьютерах, есть FireFox Sync, синхронизирующий разные FireFox'ы, есть Windows Live Mesh, синхронизирующий на разных машинах IE... но вот Xmarks синхронизировал их все! Добавил закладку в Chrome под Windows, пришёл домой и кликнул на ней в FireFox под Linux'ом. Поползал с утра по инету, глянул на часы: срочно пора на работу. Оставил браузер открытым, а на работе вижу список вкладок, которые открыты дома и в каком браузере - выбрал интересующую и дочитал что хотел. Красота!
Синхронизация закладок, вкладок и паролей отнюдь не нова, еще раз повторю: уникальностьность данного сервиса в том, что он реально является кроссбраузерным и кроссплатформенным и поддерживает все основные браузеры (включая Safari, хотя я им не пользовался и за качество работы в нём ручаться не буду, мне достаточно полностью удовлетворяющей меня синхронизации FF и Chrome).

23 сентября 2010

Active X и JScript. А ведь бывает всё наоборот!

То, что в JScipt можно использовать ActiveX - прописная истина.
То, что существует Windows Scripting Host, вобщем-то не новость.
А вот то, что на JScript можно писать компоненты, регистрируемые в качестве ActiveX - любопытно!


<?xml version="1.0"?>
<component>
<registration  description="MyScripting"  progid="MyScripting.TestScripts"  version="1.00"  classid="{d0fgb647-fd0c-4c90-a4bd-7473f499d35a}">
  <comment>Здесь создастся окно сообщения при регистрации</comment>
</registration>
<comment> Здесь описания типов и т.п.</comment>
<public>
  <property name="YourName">
    <get internalName="hiddenGetProperty"/>
    <put internalName="hiddenSetProperty"/>
  </property>
  <method name="SayHello">
  </method>
</public>
<comment> А теперь и сам код</comment>
<script language="JScript">
<![CDATA[
  function hiddenGetProperty() {
    return YourName_Property;
  }
  function hiddenSetProperty(param) {
    YourName_Property = param;
  }
  function SayHello {
    return "Hello "+YourName_Property+"!";
  }
]]>
</script>
</component>


* This source code was highlighted with Source Code Highlighter.

original

20 сентября 2010

Полосатый интернет: он теперь то есть, то нет

С тех пор, как Голден-Телеком стал Интернетом Билайн, за 4 месяца линк отвалился второй раз - приходится второй раз подавать заявку. За предшествующие два года такого безобразия ни разу не было.

Как, в очередной раз подтверждает личный опыт,аналогично банкам и сотовым операторам, конечному потребителю глобализация не на пользу. :'-(

Потрясём окнами :)

Сейчас случайно обнаружил забавную вещь: если в Windows 7 взять какое-нибудь окно за заголовок и потрясти его, то срабатывает команда "Показать рабочий стол" (Win+M): все остальные окна сворачиваются / разворачиваются в зависимости от их состояния. Создание видимости деятельности ОС для особо нервных?

18 сентября 2010

Какое же дерьмо эти ваши официальные сайты авто

Сайт Opel Insignia - ИМХО, один из ярчайших примеров того, как НЕ нужно делать сайты для потенциальных покупателей автомобиля. Вроде бы и автомобиль неплохой, но сайт, несмотря на неплохое графическое исполенение, не вызвал ничего, кроме раздражения и отвращения, которое, на подсознательном уровне, невольно переносится и на автомобиль.

Раздражающая музыка, непомерно тормозащий Flash (на неплохом по седнероссийским, может быть, не столичным меркам Internet-канале), полный незачёт копирайтерам за банальные "изгибы линий, создающие неповторимый узнаваемый дизайн, подчёркивающий гибкость,  отражающий уникальный характер..." и прочая бестолковая хрень, не дающая кагого-либо реального представления об автомобиле. В разделе "основные характеристики / двигатели и трансмиссии" все тот же маркетинговый bullshit вместо технических характеристик.

Единственное более-менее вразумительное представление об автомобиле даёт "конфигуратор": в какую именно комплектацию входят какие опции, и сколько я за это заплачу. Да и то, можно понять, что электропривод задних стеклоподъемников есть или нет, можно, но вот чем отличается аудиосистема C300 от аудиосистемы C500 Infinity, стоящей дополнительные 18.000р мне, например, удалось немалыми усилиями (и не уверен, что полностью). А вот чем отличается "Пакет комфорт сидений 1" от "Пакет комфорт сидений 2", я до сих пор недоумеваю.

К сожалению, находясь в поисках "идеальной пары" для себя, как автолюбителя, решительно намеренного сменить "партнершу", не в первый раз наталкиваюсь вот на такой вот официальный сайт, не несущий почти никакой информации об автомобиле, кроме официальных цен, и поводов для раздражения. Как это ни прискорбно, для того, чтобы получить об автомобиле хоть какое-либо представление, необходимо от официально сайта перейти к объявлениям о продаже подержанных автомобилей этой модели, весьма далёким от официальных форумам автовладельцев и т.п. совершенно левым ресурсам. Кто-то скажет, что это нормально, нечего доверять информации, исходящей от того, кто собирается продать тебе автомобиль. Но, простите, для кого / для чего вообще предназначен официальный сайт автомобиля? Исключительно для того, чтобы производитель отдал деньги за создание сайта?

Между прочим, я, как потенциальный потребитель, хочу не так уж и много:
  • На хуй Flash с заглавной страницы. С него обычно начинаетеся "эффектное знакомство" с сайтом. На практике чёрт-е сколько ждешь, пока загрузится хотя бы заглавная страница (при этом начало эффектного знакомства происходит в фоновой вкладке, а я занимаюсь чем-то другим, т.к. не стал пялиться в нее, дожидаясь, когда же оно наконец загрузится). Видеообзор (а точнее, тяжёлый пошаговый презентационный ролик) лучше сделать навязчивой опцией, нежели начальным шагом. Я уж молчу о том, что на сматрфоне (Android, iPhone) такой сайт вообще становится неюзабельным.
  • Возможность сравнить интересующие меня комплектации в табличном стиле, например, как в Яндекс Маркет. Обязательно с галочкой "показать только отличающиеся характеристики", т.к. производители любят для солидности пририсовывать туеву хучу "самоочевидных" опций типа "зеркала, окрашенные в цвет кузова", "электические подъемники передних стёкол", и т.п., превращающие изучение опций в нудное просматривание на 80% совпадающих строк, с увеличением числа которых, становится всё сложнее понять, чем же комплектации отличаются.
  • В конфигураторе или сравнении для доступных опций хочется иметь всплывающую подсказку или ссылку на отдельную страницу с подробным описанием данной опции. Вот что такое скрывается под галочкой "Аудиосистема Infinity" или "Пакет Комфорт сидений 1"? Может быть, я и готов заплатить эти самые 18.000 или сколько-нибудь там ещё рублей, но объясните мне, за что? Приложите парочку фотографий, наглядно демонстрирующую отличие трехстрочного монохромного дисплея от цветного 7-дюймового. Да, это можно найти в другом месте, но хотя бы дайте мне прямую ссылку на это место.
  • Больше фото (и видео?) со всех возможных ракурсов. Галерея интерьера из 5 ретушированных фотографий с максимально выгодных ракурсов меня однозначно не устраивает, и не дает исчерпывающего представления. Я этот интерьер все равно рассмотрю на остальных 150 фотографиях из объявлений о продаже, обзорных статьях автомобильных сайтов и т.п. Но на кой чёрт я пришёл на официальный сайт? Исключительно цены посмотреть? Тогда разместите у себя один прайс-лист и не морочьте мне голову.
  • Я не верю вашему маркетинговому bullshit'у про "изысканные линии кузова, придающие мускулистые очертания, подчеркивающие характер автомобиля", сочинённые вашими копирайтерами - для меня они ничего не значат. Я верю людям, которые купили этот автомобиль, и ездят на нём. Они, как и свойственно человеку, любят похвастаться - пусть размещают фото своего авто, отзывы о нём. Галерея пользовательских фото и видео решит предыдущую проблему. Боитесь, что непрофессиональные материалы представят ваш продукт в не в том виде, в котором вы хотели бы мне его показать? Я всё равно их увижу, но на других ресурсах, а не на вашем сайте, на котором вы можете стимулировать людей выкладывать качественный контент (конкурсы, призы и т.п.), и контролировать, что именно из этого увижу я (показывать мне только фото победителей конкурсов, показывать первыми те, которые сочтете наиболее достойными и т.п.).
P.S.: Разумеется, я не надеюсь, что данный пост дойдёт до официальных представителей Opel или какого-либо другого автомобильного брэнда. Но, возможно, поможет задуматься моим коллегам из IT, создающим сайты или занимающимся продвижением, не делать пречисленных и подобных ошибок.

29 июля 2010

Samsung Galaxy S VS iPhone 4

Поскольку меня все еще прет от новой игрушки, позволю себе сослаться на видеообзоры прямого сравнения Samsung Galaxy S и iPhone 4. Ибо на текущий момент это наиболее близкие конкуренты в топовом сегменте, и пользователи, лишенные религиозных убеждений относительно производителя и ОС, поверхностно изучив характеристики, на различных ресурсах все чаще задают вопрос: "что выбрать: Samsung Galaxy S или iPhone 4?". А разница в цене заставляет задуматься еще крепче. Обзоров и материалов, позволяющих сделать выводы, много, приведу некоторые, поглянувшиеся лично мне, и кажутся достаточными для принятия решения. Если недостаточно, смотрите связанные видео.
  1. Обзор из двух частей (часть 1 и часть 2), наглядно показывающий принципиальные отличия, а точнее, почти полное их отсутствие.
  2. То же самое подтверждает обзор на итальянском. Слушать забавно, но и без знания языка все понятно.
  3. Есть разные сравнения дисплеев Retina (iPhone 4 - технология LCD, максимально допиленная напильником со всех сторон) и Super AMOLED (Samsung - последний писк моды в технологиях дисплеев для мобильных устройств), но почти все показывают их практически полный паритет. Есть высказывания, что "XXX субъективно чуть-чуть лучше, чем YYY если сравнивать их рядом, но при сравнении по отдельности вы разницы не заметите", причем в пользу самсунга таких выскзываний несколько больше. Основной вывод: при выборе экран можно отбросить из параметров сравнения, т.к. разница слишком трудноуловима. Например, вот.
  4. Впрочем, любителям смотреть видео на мобилке под под микроскопом, следует выбрать iPhone. К практическому использованию отношения не имеет.
  5. Чуть интереснее сравнение iPhone 4, iPhone 3Gs и Galaxy, с предсказуемым, впрочем, результатом: паритет Retina и SAMOLED, а обычный TFT на 3Gs в заднице явный аутсайдер. Не совсем понятно только, почему в конце на iPhone'ах в браузере открыли одну страницу, а на Samsung - другую.
  6. В нагрузку можно глянуть сравнение технологий LCD — Super LCD — AMOLED — Super AMOLED.

Плюсы Samsung/Android:
  • Технология ввода Swipe (в дополнение к традиционному). Текст набирать реально удобнее и быстрее почти в 2 раза. В русской прошивке корректно работает с русским языком (в европейской текст набирать можно, но не имеет русского словаря). А вообще клавиатура - это приложение, и можно поставить любую, в т.ч. полную копию iPhone'овской.
  • Возможность размещать на 7 (или менее) рабочих столах не только ярлыки приложений и контактов, папок, файлов, но также виджеты - мини-окно программы, позволяющее просматривать информацию и/или управлять программой или функциями смартфона, не открывая дополнительных окон. Разнообразие виджетов уступает только разнообразию самих программ.
  • Более продуманный в некоторых планах интерфейс - например, интеграция с социальными сетями, а также вообще гораздо более удобный и продвинутый список контактов.
  • Bluetooth 3.0. Возможно, не слишком большое практическое значение на текущий момент, через полгода-год может стать более актуальным - увеличение максимальной скорости передачи данных по Bluetooth до 24 Мбит/с по сравнению с максимальными 2,1 Мбит/с через Bluetooth 2.1 на iPhone.
  • Android местами чуть-чуть опережает iOS в производительности - часто в обзорах страницы в браузере загружаются быстрее (при подключении к одной и той же Wi-Fi сети).
  • Экран больше
  • Легче
Минусы
  • Чуть меньше анимационных эффектов, создающих в iPhone столь притягательный WOW-фактор: например, нет эффекта переворота экрана при смене портретной/ландшафтной ориентации; когда достигается максимальный/минимальный зум, нет эффекта "резинового" отпрыгивания обратно - зум просто останавливается.
  • Меньше WOW-фактор от материалов корпуса - нет стеклянной задней панели (а может, это плюс?) и металлических боковинок антенн (а может, это тоже плюс?).
  • При запуске большого количества ресурсоемких приложений за короткое время может начать подтормаживать - большинство приложений не имеют функции выхода, ресурсы неисползуемых приложений высвобождает сама система, и при слишком интенстивном использовании может не расчитать. Для этого нужно постараться, но это достижимо.
  • Меньше время работы без подзарядки.
И, конечно, не следует забывать, что паритет в производительности наблюдается в текущей версии, а уже в августе-сентябре должна появиться адаптированная для Samsung Galaxy S прошивка на основе Android 2.2 Froyo, в которой разработчики обещают сказочное увеличение производительности в 2-5 раз для приложений и системы за счет оптимизации JIT-компилятора, а также увеличение производительности в браузере за счет нового движка для JavaScript - V8, аналогичного оному в браузере Google Chrome. Тогда сравнительные тесты производительности необходимо будет пересматривать, чаша весов, вероятнее всего, окажется более благосклонна к Galaxy.

Ну и хочется подчеркнуть развенчанные мифы об iPhone, которые, тем не менее, крепко сидят в умах множества российских потребителей:
  • У iPhone самый продуманный, гармоничный интерфейс, куда там каким-нибудь корейцам. У Google Android не менее продуманный интерфейс, а местами он гораздо удобнее, особенно для адептов Google и популярных соцсетей/веб-сервисов, т.к. ОС от Google изначально расчитана на интеграцию с веб и удобство коммуникации. А корейцы здесь вообще ни при чем.
  • У Apple есть AppStore, с которого можно легко скачать/купить любые приложения. У остальных с установкой приложений сложнее. У Google есть, соответственно, Android Market - полная идеологическая копия AppStore. Даже многие приложения идентичны таковым в AppStore. Да и вообще, аналогичные серисы есть у Nokia - Nokia Ovi Store, у Microsoft - Microsoft Marketplace, у Blackberry - Blackberry App World и т.п. Одним словом, никакой уникальностью здесь и не пахнет, скорее, это стандартная фича современного коммуникатора.
  • iPhone 4 - самый быстрый. Процессоры для Apple делает Samsung, и Galaxy S построен на том же процессоре и видеоускорителе. Дальше решает ОС, и ОС от Google ничуть не медленнее.

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" есть, но мои сертификаты видеть отказывается, игнорирует. Написал в техподддержку - ответили, что, переслали письмо в Корею разработчикам, жду ответ.

22 июля 2010

Это нормально?

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

19 июля 2010

Гуглофон

Ура! Приехала игрушка из Англии! А точнее с clove.co.uk.
Посмотрим, какой он, убийца iPhone 4, в деле.

14 июля 2010

Салатная VIP-дорожка

Раньше перед VIP-персонами расстилали красную ковровую дорожку. А теперь салатная: доблестные ГАИцы по всему городу через 20-50 метров.
Не знаю, какие чувства это должно вызывать у простых смертных, следующих по тому же маршруту, по замыслу имиджмейкеров соответствующих персон (благоговение, уважение, боязнь и т.п.?), но у меня стойкое ощущение ожидания очередного таза с говном.

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

Существенно ли?

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

Т.е. "естественная" реализация:


  1. enum SomeEnum {...}
  2.  
  3. class BaseClass()
  4. {
  5.     public virtual IEnumerable<SomeEnum> GetValueSet()
  6.     {
  7.         return new SomeEnum[] { SomeEnum.Value1, SomeEnum.Value2 };
  8.     }
  9. }
* This source code was highlighted with Source Code Highlighter.

"Оптимизированная" реализация:


  1. enum SomeEnum {...}
  2.  
  3. class BaseClass()
  4. {
  5.     private static readonly SomeEnum[] valueSet1 = new[] { SomeEnum.Value1, SomeEnum.Value2 };
  6.     public virtual IEnumerable<SomeEnum> GetValueSet()
  7.     {
  8.         return valueSet1;
  9.     }
  10. }
  11.  
  12. class ChildClass() : BaseClass
  13. {
  14.     private static readonly SomeEnum[] valueSet2 = new[] { SomeEnum.Value3, SomeEnum.Value4 };
  15.     public override IEnumerable<SomeEnum> GetValueSet()
  16.     {
  17.         return valueSet2;
  18.     }
  19. }
* This source code was highlighted with Source Code Highlighter.

Или все-таки оптимизатора в данном случае следует считать параноиком, усилия которого .NET съест с большим аппетитом (равно как и GC съест возвращенные экземпляры массивов), и такие оптимизации как мертвому припарки?

28 января 2010

".NET именно для этого" или быдлокод?

Как вы относитесь к такому коду?


  1. private EntitySet persons;
  2. public void SomeMethod()
  3. {
  4.     /// ...
  5.     persons.ToList().ForEach(person => person.Id = Guid.NewGuid());
  6.     /// ...
  7. }
* This source code was highlighted with Source Code Highlighter.

Оставим в стороне аргументацию за и против лямбда-функций. Основное нарекание, разумеется, вызывает метод ToList(), используемый только для того, чтобы получить доступ к вожделенному методу ForEach(), отсутствующему в EntitySet, дабы получить красивый и понятный, с точки зрения разработчика, код, умещающийся в одну строку.

Предложение заменить "вожделенный" ForEach() следующим образом, аргументированное тем, что не тратятся ресурсы на создание List'а (как память, так и процессорное время на конструкцию и последующую сборку мусора), опровергается как нецелесообразное.



  1. foreach(var person in persons)
  2.     person.Id = Guid.NewGuid();
* This source code was highlighted with Source Code Highlighter.

Аргументация (приблизительная): «.NET для того и создан, чтобы о таких вещах не задумываться. Я смотрел Reflector'ом исходники .NET'а, там о производительности мало задумываются. Нет смысла оптимизировать кусок кода со сложностью o(), когда есть столь же часто вызываемый кусок кода со сложностью O(). Поэтому, если данный кусок кода не является узким местом, то создать объект наподобие List() и тут же отправить его на съедение сборщику мусора - это нормально. И вообще, если нужно оптимизировать в таких мелочах, то нужно отказаться от ASP.NET, и писать на C++».

На мой, субъективный взгляд, сомнительной оптимизацией (но как ни крути, а все же оптимизацией) можно считать требование отказаться от лямбда-функций (вызов метода ForEach для коллекции из N элементов - N+1 вызовов функций, на которых тоже можно сэкономить процессорные команды). А вот отказ от создания мимолетного объекта можно считать оптимизацией существенной, независимо от сложности других участков кода. Другими словами, первый кусок кода является сам по себе плохо пахнущим, и от таких необходимо избавляться.

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



  1. public static void ForEach(this IEnumerable array, Action action)
  2. {
  3.     foreach (var item in array)
  4.         action(item);
  5. }
  6.  
  7. public void SomeMethod()
  8. {
  9.     /// ...
  10.     persons.ForEach(person => person.Id = Guid.NewGuid());
  11.     /// ...
  12. }
* This source code was highlighted with Source Code Highlighter.

Непревзойденным (по соотношению наглядность/цена) по-прежнему остается "классический" foreach, а создание заведомо выкидываемых объектов в качестве синтаксического сахара (в этой и других подобных ситуациях) следует классифицировать как быдлокод?


И еще один подобный вопрос в продолжение.