среда, 20 октября 2010 г.

Молодцы эти ребята из Apple

Добрый день.

ПРЕДЫСТОРИЯ

Неожиданно я получил сегодня подтверждение своей собственной мысли - Apple за меня слишком много думает и мне это не нравится.

У меня есть iPhone. Хороший девайс. Но пользоваться я им не смог - отдал ребенку.
Если бы у меня не было такого девайса, то мое отношение к Apple можно было бы счесть за зависть. Но девайс то есть...

Казалось бы, чем объяснить подобное мое отношение к iPhone и к Apple как к производителю?

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

На своей субъективности я и остановился в размышлениях о моем отношении к iPhone и к Apple, отдавая телефон (модно - гаджет) ребенку полгода назад (ребенок счастлив!).

И ВОТ СЕГОДНЯ...

И вот сегодня ко мне обратился пользователь, у которого что-то не работало.

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

Текстовый файл был отослан пользователю. Но программа упорно не работала - файл явно не читался корректно.

Почему не работает?! Мистика!

Я свою программу знаю - это может быть только если файл "кривой".

Прошу прислать пользователя файл. Файл вроде правильный, но на 5 байт меньше. После разбирательства оказалось, что переводы строки (файл то текстовый) реализованы через символ #10, а не через пару #10#13, как принято в Windows.

Мистика! Где же он такой файл взял?! Файл явно мой, но перекодированный.

После ряда неудачный предположений с моей стороны оказалось, что пользователь пользуется ноутбуком Mac и файл он скачал через браузер, встроенный в Mac (Safari, вроде). И только потом файл был перенесен в Windows.

И представьте себе - этот Mac не говоря ни слова взял и перекодировал файл, заменив #10#13 на #10!

Лично мне данный факт видится возмутительным!

Все, закачиваю. Я же сам сказал, что мое отношение субъективно...

PS. Хотя все это возмущение в русле идеологии, заложенной в сами продукты Apple. Подробно об этом пишет Гай Кавасаки (http://ru.wikipedia.org/wiki/%D0%9A%D0%B0%D0%B2%D0%B0%D1%81%D0%B0%D0%BA%D0%B8,_%D0%93%D0%B0%D0%B9). У него книга "Стартап" есть. Вполне интересно, как промыть мозги потребителю. Книга не интересна будет IT-специалисту, я думаю. Скорее она для тех, кто хочет повторить успех Apple ))
И вот именно сегодня я понял как раз мысль Гая: Apple осознанно рождает противоречивый клубок отношений к своим продуктам - должны быть фанаты и ненавистники - в этом коммерческий успех! Гады )

среда, 15 сентября 2010 г.

Что такое plugin-container.exe?

Я пользуюсь браузером FireFox.
Недавно обновился до версии 3.6.8.
Сразу заметил, что сильно стало тормозить.
Появился новый рожденным самим FF процесс plugin-container.exe, который на моем слабом компьютере отъедал 10% CPU (или даже больше).
Порылся в интернете, нашел четко по теме http://www.makak.ru/2010/06/26/chto-takoe-plugin-container-exe/.
Если кратко, то FF теперь все плугины (а у меня это Flush Player) выполняет в отдельном процессе - вроде так безопасней.
Сделал как советуют - отключил выделение плугинов в отдельный процесс.
Все заработало намного быстрее!

суббота, 8 мая 2010 г.

Как я устанавливал DLINK DIR-615

Купил я себе сабж. Дальше эмоции... можно не читать.

Сразу скажу, что производитель сабжа - урод, но не полный, а процентов так на 10%.

Итак.

Есть бумажная инструкция производителя по настройке - 400 символов (сам считал). Т.е. мало.

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

В итоге вообще не фига не заработало - ни LAN, ни Wi-Fi. После введения настроек от поддержки LAN заработал.

Выпил первую бутылку пива.

Включил этот девайс без инструкции. С компьютера жены нашел его, настроил (IP, Mask, DNS, Gateway, MAC). У нее все заработало. На моем ноуте - не работает!

Долго думал над фразой на моем ноуте: в настоящий момент используется Wi-Fi-сеть DOM3KV104 (у меня квартира, замечу, 93, т.е. точно не моя сеть). В общем находил я в 104 квартире эту сеть упорно целый час. Если пытаешься искать другую, то говорит, что не может ничего другого найти, т.к. у меня установлена некая другая софтина, которая занимается поиском Wi-Fi сетей (не не уроды?! это я про Windows XP), и я должен использовать ее.

И тут я понимаю! У меня отключена искалка сетей Wi-Fi. Ищу в своей TOSHIBA (у производителя ноута до фига утилит) соответствующую тулзу - не может найти, т.к. в компьютере установлена другая софтина, которая занимается поиском беспроводных сетей (ну не пидары?! это я уже про TOSHIBA), и я должен использовать ее.

Еще через час меня посещает мысль - все снести и восстановиться из ноут бекапа.
Четвертая бутылка пива помогла этого не делать.

И тут я решаю полазить по службам - и точно: служба "Беспроводная настройка" отключена! Включил - все заработало как часы сразу же. Видимо, я отключил службу сам.

Итоги:
1. Моя вина - 50%: не фиг отключать службы, а потом забывать про это.
2. Windows - 40%: могли бы в своей искалке беспроводных сетей указать на факт остановки службы.
3. Установщик DLINK - 10%: могли бы сказать аналогично пункту 2 и при этом не стирать мои текущие настройки.

Вывод:
1. На ноутах не надо отключать службу "Беспроводная настройка"

Удачи в настройках!

среда, 14 апреля 2010 г.

Самый простой профайлер для Дельфи

Я тут озадачился вопросом - как бы так не напрягаясь и бесплатно поискать бутылочные горлышки в моих программах?

Известная истина - оптимизировать надо то, что имеет наибольший вес в оптимизируемом коде.

А как понять, что тормозит больше всего?

Самый простой вариант - использовать QueryPerformanceCounter перед и после вызова функции. Но функций много. Перед какой ставить-то?

Где бы взять хотя бы намек на то, какую бы функцию надо анализировать внимательно, а на какие можно забить?

Погуглив я нашел несколько семпловых профайлеров. Искал-то я просто профайлеры, но нашел именно семпловые.

Насколько я понял, такие профайлеры наблюдают за работой программы и периодически анализируют - какой конкретно код выполняется? И вот на основе частоты выполнения конкретного бинарного кода (семплов) профайлер делает вывод - какая же функция чаще всего выполняется и больше всего (как следствие) тормозит. Для нахождения имени функции используется отладочная информация, например, *.MAP файл проекта.
Добавлю - в программе не надо делать ни единого изменения - можно использовать обычный бинарник!!!

Я использовал http://delphitools.info/samplingprofiler. Он немного глючил у меня. Но в целом работал.

В итоге я нашел функции, которые тормозили больше всего. Самое удивительное, что это были не те функции, на которые я думал. В итоге я ускорил свой код (мат. вычисления экономической модели) в 2 раза (факт ускорения подтверждает замер времени до и после выполнения расчета)!!!

Всем успехов! Профайлеры - это не так страшно.