Требуется регистрация

В последнее время пришлось несколько раз столкнуться с интернет-магазинами. Всякая мелочь (а приятно) и вот что хотелось бы “выхлопнуть” всем, с позволения сказать, разработчикам этих, с позволения сказать, сайтов…

Конечно хочется сказать, чтобы убили себя об встречный КаМАЗ Хочется заставить их попробовать купить в своих магазинах что-нибудь. Помучайтесь, гады!
Представь себя, неуважаемый разработчик, в супермаркете. Где тебе надо с полной тележкой всякой всячины выстоять получасовую очередь на регистрацию. Через полчаса твою тележку отнимут. И лишь потом ты снова насобираешь продукты и сможешь пойти на кассу. Весело? Абсурд?

Так за каким, прости, мужским половым ты требуешь от меня РЕГИСТРАЦИИ? Почему я должен ждать дурацкое подтверждение полчаса? Почему моя корзина снова ПУСТА?!?

Спроси у меня телефон для связи и извести продажную женщину(мужчину) о новом заказе и мы расстанемся друзьями. Зачем тебе ЗАРЕГИСТРИРОВАННЫЙ покупатель, который никогда к тебе больше не вернётся? Нравится мастурбировать на мои контактные данные? Сохрани их к себе, вместе с оформленным заказом, делай с ними всё что захочешь, но потом…

P.S.

Всё описанное не про какой-то конкретный магазин – они ВСЕ такие. За очень редким, но к счастью существующим исключением. Первое правило маркетинга по-русски – “Клиент прежде всего урод”…

UPDATE: ещё один пост ненависти с более широким перечнем претензий.

08.09.09  |   | стань первым

IE8 и currentStyle

Новость одной строкой… Когда-то я рассказал как добавить border-spacing для IE используя свойство currentStyle.

Вчера, как многие знают, вышел IE8.Собственно на этом можно было бы многозначительно пост закончить…

В общем в IE8 более этот трюк не работает. В currentStyle не попадают неизвестные браузеру свойства. Изящного решения пока не нашёл – если уж пользовались им, то просто замените непонятные буквы в css на cellSpacing = <число> вместо вычислений, которые были раньше…

Update а вот переводная статья о других особенностях IE8

cdrom в virtualbox

Если вдруг у вас тоже случится такая напасть как пустой список устройств при выборе CD/DVD-ROM в свойствах виртуальной машины, просто остановите машину (если она всё ещё запущена), откройте xml-конфиг (предположительно ~/.VirtualBox/Machines/${PCNAME}/${PCNAME}.xml), найдите в нём строку <DVDDrive passthrough=”false” /> и замените на

<DVDDrive passthrough=”true”>
<HostDrive src=”/dev/hdc“/>
</DVDDrive>

Разумеется устройство вы должны указать своё, а не моё ;o)

P.S.

Seamless mode с VirtualBox просто восхитителен!

ты не один

Приключилась сегодня очень познавательная история, мораль которой должен понимать любой разработчик, детище которого обслуживает более одного пользователя.

В рамках работ по выводу одного “неповоротливого асфальтоукладчика” на земную орбиту были проведены ряд его модернизаций. Испытания на тестовом полигоне показали что машина стала ездить на порядок быстрее и было решено доработки включить в работающий прототип(вроде и не первая космическая, но уже есть чем гордиться!). Но на первом же серьёзном показе зверь-машина с чудо{вищным} грохотом рассыпалась у всех на глазах и я сел в лужу…

А теперь тоже самое, но по-русски, с выражением.
Имеются ряд весьма тяжёлых для веба запросов к БД, результат которых условно не меняется в течении небольшого промежутка времени. Кеширование промежуточных результатов в самой БД нагрузку сняло на СУБД, но скрипты продолжали исправно тягать данные и это порой занимало внушительное время. Было решено результаты эти кешировать на стороне веб-сервера. Как хранилище был использован apc.

Первоначальный вариант выглядел примерно так:

if (!$data = cache_get($key)) {
   $data = data_from_db();
   cache_set($key,$data,$expire_time)
}

Без излишеств, просто и со вкусом. Но позже выснилось что “всё не так просто” и в зависимости от некоторых космических характеристик и результатов выборки из базы будет меняется ещё одна переменная (меняется переменная… ого!).

if (!$data = cache_get($key)) {
   $data = data_from_db();
   cache_set($key,$data,$expire_time);
   $other_data = some_function($data,$env);
   cache_set($other_key,$other_data,$expire_time);
} else {
   $other_data = cache_get($other_key);
}

Аляповато, но, чёрт возьми, работает…
Работало…
Должно было по идее работать…
Но, почему-то оказавшись на боевом, изрядно нагруженном, сервере это не сработало. Вернее это работало…, но не всё время… По истечении $expire_time периодически пропадали данные для $other_key. При отключении и/или очистке кеша работоспособность восстанавливалась… Кто виноват? Что делать? Кто за всё это ответит?!? Пришлось срочно пошевелить опилками.

Как мы все наверное догадываемся – реальный сервер обслуживает нереально много клиентов, причём не по очереди. И нет совершенно никаких гарантий на то, что между записью $key и $other_key не встрянет какой-либо маленький, но шустрый процесс (хотя нам это и не особо страшно), так же нет никаких оснований полагать что между выборкой $key и $other_key кто-то умный и большой не очистит кеш (целиком, или только $other_key – в данном эпизоде это не имеет значения).
Оснований не было, но я был почему-то твёрдо уверен, что “это если и происходит, то с кем-то другим”. С пониманием проблемы конечно же пришло и простое решение, но ошибка, согласитесь, совсем не тривиальная.

Так что мораль сей басни: помни – ты не один!

23.09.08  |   | стань первым

пешу па руски

Как вы отнесётесь к советам программиста, который пишет термины, специфичные для нашей профессиональной деятельности, с кучей ошибок?

Плюнете ли советчику на спину?

Или на фоне полного обесценивания русского языка в интернете (да что там интернет, в оффлайне такая же картина) такие перлы как “компЕлятор”, “термЕнал”, “велЕчина” и прочие тупизмы можно пропускать, и цеплятся глазом за суть статьи, а не за чудо{вищный} уровень начального и среднего образования её автора?
(more…)

26.07.08  |   | 4 comments

мыши плакали, кололись, но продолжали жрать кактус…

[тут было много нецензурной брани и описание волшебных лучей, посланных в сторону aol]

Из оставшихся клиентов в наличии остались center(IM|ICQ).
Покопавшись немного в чужих пожеланиях долгой жизни всему aol-у нашёл как вернуть к жизни kopete:

[ICQVersion]
Build=0x17AB
ClientId=0x010A
ClientString=ICQ Client
Country=us
Lang=en
Major=0×0006
Minor=0×0000
Other=0×00007535
Point=0×0000

Это нужно добавить в ~/.kde/share/config/kopeterс

Жду с нетерпением аналогов лекарства для sim и qutIM.

Update:

Additionally the kopete team has updated a ICQ version file which is online and which kopete fetches automatically at startup. This should also fix the problem, without the need to edit or update anything!

P.S. под виндою всё прошло хорошо – продолжает работать R&Q, что несомненно порадовало.
Наконец стало понятно в чём проблема и почему часть т.н. “альтернативных” клиентов продолжают работать – на серверах просто повысили минимальное требование к версии протокола.
Потихоньку перебираюсь в jabber. Догоняйте.

02.07.08  |   | стань первым

Follow the white rabbit

Прочитав эту заметку тоже решил убрать nofollow с части ссылок. Надеюсь это принесёт в последствии вменяемые комментарии, а не стадо придурков, рекламирующих своих грузчиков пластиковых окон в горящих турах…

27.06.08  |   | стань первым

Performance Optimization WordPress Plugins by W3 EDGE