Drupal наше все!

По необходимости пришлось столкнуться с MODx, которого я раньше совсем-совсем не видел. Самую чуточку — сменить шаблоны на одном сайте. Первые впечатления — ужас-ужас. И эти люди запрещают мне ковыряться в носу говорят, что Друпал сложен для изучения! Я как открыл страницу управления элементами, да как увидел, что там в шаблоны могут вставляться и какие-то «Параметры», и «Чанки», и «Сниппеты», а потом еще и прочитал подсказку наверху, что, дескать, «Чанки — это куски (X)HTML-кода, используемые в неизменном виде в нескольких местах. Чтобы иметь возможность централизованно редактировать повторяющийся код, вынесите его в чанк. Чанки не могут прямо содержать исполняемый код, однако могут включать в себя вызовы сниппетов и/или параметров (TV), обеспечивающих динамическую логику.» (первый вопрос — а какого, собственно, нужны вообще эти чанки в качестве прослойки между сниппетами и шаблоном?), то совсем в осадок выпал… И желание изучать этот MODx пропало сразу… В общем, скорее всего, знатному MODx’еру будет смешно читать такое брюзжание, но факт есть факт — в свое время первый взгляд на Друпал не вызвал у меня такого непонимания и неприятия. А значит, я сделал правильный выбор. 🙂

Двойные стандарты

Всегда очень забавно видеть, как абсолютно аналогичные ситуации трактуются по разному в зависимости от субъективных факторов.

Применительно к верстке всегда принято ругать IE6, который давным-давно устарел, содержит кучу багов, а 50% времени, затрачиваемого на верстку шаблона, уходит на его подгонку под IE6. И тем смешнее видеть, например, вот такие баги в одном из «идолов» веб-разработки — FireFox. В общем и целом FF некорректно позиционирует элементы с position:absolute внутри блока fieldset, у которого стоит position:relative. Баг существует с 2008 года во всех версиях, включая новейший FF4 и особых подвижек в исправлении что-то не видать. Все остальные браузеры, включая приснопамятный IE6 (!!!), бага лишены и рендерят все правильно легко и непринужденно.

Но больше всего доставляют в этой ситуации рекомендации по решению проблемы: «Просто добавьте внутрь fieldset еще один div в качестве враппера для всех элементов и присваивайте position:relative именно ему». 🙂 По-моему, это прекрасно! Все баги все того же IE6 исправляются примерно также — типа, «добавьте тут враппер» или «вставьте тут zoom:1» — и за что мы только обижаемся на этот браузер? Ведь всего лишь какие-то мелочи просят сделать… А мы тут, понимаешь, разнылись… 🙂

Сеятель РДВ

Всегда у меня так — очень хочется взять все готовое, взболтать не смешивая и продать клиенту «за дорого». Чтобы как у всех и без проблем. Но подводит, судя по всему, генетический перфекционизм — обязательно стоит сделать шаг в сторону от очередного «Best practice guide», как натыкаюсь на какие-нибудь очередные грабли, с которыми мужественно начинаю бороться… В последнее время такими граблями становится Drupal и все что с ним связано. С одной стороны — супер-расширяемая (за счет чего — тяжеловесная) и гибкая система, которая должна обеспечивать спасение котят целыми прайдами.

С другой — вся эта гибкость обеспечивается как раз только в ядре, над каждым элементом которого думают месяцами и годами, а в модулях — в которых и состоит вся сила Друпала — предполагается зачастую один единственный сценарий работы, а чуть стоит от него отойти хотя бы на шаг (даже на полшага), то оказывается что либо это совсем невозможно, либо глючит все не по-детски. Причем это касается не только мелких и «самопальных», но и таких «столпов» друпаловского сайтостроительства, как приснопамятный Views. Кто хакал Views, тот меня поймет… По написанию для него хендлеров и т.п. и то толковой документации за столько лет не родили… А потом еще, значится, кто-то рассказывает, как сильно ООП упрощает жизнь… Тьфу.

В общем, у меня почти каждая серьезная работа с Друпалом выливается в суровое ковыряние внутренностей то Views, то вот теперь Feeds, то каких-нибудь субмодулей CCK с целью исправления багов и обеспечения их нормальной работы c последующим отправлением закрывающих эти баги патчей. За предыдущие сутки — штук пять чужих багов закрыл. Больше всего мозг взорвали, конечно же, те же Views — не зря же про них вспомнил… Но была и адаптация одного JavaScript’а под Оперу, и верстки одного упрямого разработчика («Я не буду поддерживать браузер 10-летней давности!») под IE6.

Но самое главное, что я не понимаю логики тех, кто отписывается о багах, но не выкладывает патчи. Человек что, сдает заказчику работу с косяками? Или тупо забивает и не делает этот функционал? Это как вообще? Вот я представляю — звоню я завтра своему заказчику и объясняю, что вот такой-то блок новостей по федеральным округам мы выводим не сможем, потому что соответствующий субмодуль Views глючит и выкидывает ошибки SQL, я оставил репорт с багтрекере, но когда разработчик среагирует — неизвестно… Заказчик после этого пошлет меня на хер и будет совершенно прав — свои деньги он платит за результат, а не за то, чтобы я в багтрекер чей-то писал. А народ именно так и делает, а потом еще через полгода спрашивает — ну как, мол, ситуация там — исправили ошибку или нет? Что они эти полгода делали? И неужели им эта проблема еще актуальна? И вот я выкладываю патч для исправления косяка, который тянется с 2009 года (!!!), они его применяют и что говорят заказчику? «Наконец выложили патч по багрепорту, который я оставлял 2 года назад!» Бррр… Наверное, еще и деньги за свою работу просят.

Короче, в шоке я от основной массы девелоперов. Или я уже слишком стар, а они не девелоперы, а просто эникейщики, которые вышли на новый уровень? Раньше эникейщик устанавливал софт через виндовый Wizard и был крут по сравнению с пользователем. А теперь эникейщик делает сайты и тоже крут.

В такой ситуации остается только одно — учиться, учиться и еще раз учиться. Без перерыва. Тренировать мозг. Чтобы никогда в жизни не стать таким «разработчиком». Разработчик — который вместо кода и патчей генерирует багрепорты — уже не может считаться таковым. По-моему так.

Зарубежные интернет магазины

Давненько не писал ничего, но сейчас хотелось воспользоваться блогом именно как записной книжкой. Итак, пара заметок по зарубежным интернет-магазинам с доставкой в РФ, где приходилось чего-нибудь брать:

1) focalprice.com — китайский магазин всякого мелкого барахла. Не очень понравился — реально барахло. Т.е. вещи действительно достаточно низкого качества изготовления и материалов. Но работают. Заказывал несколько раз, поэтому мнение не на основе единичной попытки. Сам по себе работает нормально — заказ отправляют через несколько дней, оперативно отвечают на письма и жалобы, без проблем делают возврат денег (но предпочитают отдавать своими купонами). Отправляют китайской почтой, поэтому идет все полные 3 недели. Номер трекинга при покупке от 20 баксов. Цены при ближайшем рассмотрении оказываются далеко не самыми низкими. Прямо скажем даже наоборот — выше многих — того же dealextreme.com и прочих.

2) tomtop.com — читал по нему отрицательные отзывы, но мне магазин понравился. Отправляют моментально, за трек просят 2 бакса, но они окупаются тем, что цены ниже, чем в том же dealextreme’е на одни и те же позиции. Собственно, достаточно купить на те же 15 долларов, при которых дают бесплатный трек на DX, чтобы разницев в ценах отбить стоимость трека и даже выйти в небольшой плюс. Иногда на ТомТопе можно найти вещи, которых больше нигде нет — я там купил шикарные настольные часы с термометром и проектором, которые потом, к сожалению, пропали из продажи и нигде больше не могу их найти. 🙁

3) nowsupplier.com — достаточно мелкий магазин, но у него неплохой ассортимент планшетов по неплохим ценам — за счет чего он и держится. Собственно, именно за планшетами и стоит туда ходить, остальное все дорого. Шлют почтой Китая, упаковывают средненько, когда идет вал заказов (перед праздниками и т.п.) откровенно не справляются, за что их и ругают на форумах. Из позитива — есть русскоязычная тех.поддержка по Скайпу. По техническим вопросам особо не подскажет, но помочь с организационными может вполне. Представляется «Анной», хотя оригинальное китайское имя скорее всего непроизносимо. 🙂

4) tinydeal.com — мой фаворит на данный момент. Цены отнюдь не низкие (но и не высокие, а на некоторые позиции так и вообще ниже всех — просто надо смотреть конкретные товары) и бесплатный трек только при заказе от 33 баксов, но зато все вещи реально качественные — нормальное изготовление, нормальные материалы и т.п. Не стыдно взять в руки и использовать в повседневной жизни. Плюс отличный ассортимент. Отличный во всех смыслах — и в смысле «хороший», и в смысле «отличающийся от других». Именно в tinydeal я видел позиции, которых нет больше нигде. Или большой ассортимент товаров, по которым в других магазинах лежит только пара разновидностей… В общем, последнее время я роюсь и заказываю именно в этом магазине — он интереснее остальных и вещи из него пока попадались наиболее качественные. Да, и еще бонус, связанный с достаточной большой суммой, при которой дают бесплатный трек: товары отправляются не китайской почтой, а почтой Гонконга, которая идет минимум на полнедели меньше. Где по-середине между обычной почтой и EMS, что более чем приятно.

5) mypram.de — немецкий магазин детских колясок. Заказывали там один раз, но остались вполне довольны: немцы оперативно отвечают на почту, сносно говорят на английском, готовы работать гибко и идти на компромиссы. Не забывают вычитать НДС, что тоже приятно. Отправляют DHL, но которая не курьерская, а простая немецкая почта. Дают внутренний трек, по которому на сайте DHL при прохождении посылки через границу можно получить и международный номер для отслеживания в Почте России. Идет как обычно — 3 недели. Цены на коляски по сравнению с РФ — как небо и земля. Раза эдак в два отличаются даже с учетом доставки…

6) jcpenney.com — американский гипермаркет всякой одежды и прочего барахла. Сайт тормозной, отправляют, реагируют на письма и вообще работают очень медленно и плохо. Номера треков не дают, хотя по приходу посылок на них эти номера есть (а дурацкая американская USPS, которую сами же американцы хаят ни чуть не меньше, чем мы — отечественную почту, не позволяет по внутреннему номеру отправления узнать международный). Посылки идут в среднем от 3 недель до месяца. В общем, стоило бы плюнуть на этот ужас и больше никогда там не появляться, но есть два но: низкие (особенно по всяким акциям) цены и огромный ассортимент (некоторые товары местных марок не высылают в РФ, но это при желании легко обходится через Шапито или других доставщиков). Поэтому плачем, колемся, но продолжаем жрать этот кактус….

Браузеры — покой нам только снится…

Веб-разработчики спят и видят, когда можно будет не адаптировать сайты под старые браузеры, типа IE6, Opera 9 или FF2 (в меньше степени, но все же — отсутствие «display: inline-block;» это печально). Бодрые отчеты говорят нам о том, что доля шестого эксплорера уже сильно меньше 10% и когда она наконец станет меньше 5% — можно будет смело на него забивать и вешать на своем сайте плашку «Обновите браузер».

Однако, реальная практика показывает совсем другие цифры. Смотрю на примере двух своих сайтов — оба не имеют яркой ориентации на столичных пользователей, имеют много посетителей из регионов, только один собирает трафик с уклоном на гос.учреждения и органы власти, а другой — с уклоном на бизнес/корпоратив. И что же мы имеем по обоим? А имеем мы примерно одинаковую структуру:

И вид сей навевает (по сравнению с бодрыми отчетами, демонстрирующими «среднюю температуру по больнице») печаль и уныние. Ибо домашние пользователи — это конечно прекрасно, но если сайт ориентирован на корпоративную аудиторию и/или людей в гос.учреждениях/органах власти, то IE6 еще долго нужно будет брать в расчет, т.к. он вместе с Windows XP живее всех живых и спокойно поплевывает с высоты на всяких там конкурентов, включая свои же новые версии…

Одно утешение — эти самые новые версии все-таки суммарно его опережают. И девятую Оперу вместе со вторым Файрфоксом в расчет можно не принимать, что тоже неплохо.

Интерфейс для IPTV STB D-Link DIB-120 с онлайн сервисом

Пост в внешним видом интерфейса и видео его работы я сделал как раз год назад.

Внешне за год практически ничего не изменилось, но внутренне все поменялось кардинально — и работает быстрее, и даже качество изображения на телевизоре лучше стало, так что пора записывать новое видео. Но это чуть позже — сначала все-таки хочется закончить работу над небольшим JavaScript UI фреймворком, оптимизированным специально для работы на приставках — после этого в очередной раз переделаю внешний вид, сделаю офигительный интерфейс для редактирования настроек и как раз и приступлю к активному наращиванию функционала… Но это чуть позже, но зато сейчас уже запустил в продакшн свой проект по IPTV — http://tiptv.ru/.

Если в тезисах: проект позволяет обойти трудности легального вещания IPTV в локальных сетях и дает возможность абонентам смотреть это самое вещание на экране телевизора. На самом сайте подробнее написано. А если провайдеру это не надо — абонент может сам купить себе приставку (на сайте планируется доставка), прошить прошивку и смотреть… В Москве это для очень многих актуально — D-Link DIB-120 продают везде и купить его не проблема, а бесплатные каналы от Науки-Связи тоже есть очень у многих.

В целом могу без лишней скромности отметить, что аналогов проекту нет. 🙂 Есть нечто похожее, но заточено под своего конкретного производителя и реальных проблем провайдеров не решает. Сейчас буду потихоньку рекламировать свой — посмотрим на реакцию. Бета-тестеры довольны. 🙂

PS: Ну да, совсем забыл — а самая фишка проекта в том, что все делается онлайн. Провайдерам не нужно ставить у себя отдельный софт только для того, чтобы редактировать списки каналов. Редактировать можно на сайте, а потом экспортировать автоматом (если уж очень надо). И программы передач не надо генерировать. И вообще ни о чем париться. Прошил — и оно сразу работает. И трафика тратиться — мизер. Но, опять же, там об этом подробно написано.

В поисках Wiki

Делаю социально-политический сайт для совместной разработки различных проектов. Напрашивается сама собой форма Wiki, с которой до этого практически не работал как разработчик. Сел искать движок, раскурил WikiMatrix… Требования достаточно простые: wiki, наличие скинов, WYSIWYG-редактор, встроенная система статей/блогов и форум (потому что прикручивать и стыковать отдельно форумы/блоги — это выше моих сил), ну и чтобы написано было на perl или php — поддерживать будет проще.

Из предложенного WikiMatrix’ом ортодоксальную MediaWiki отмел сразу — она уныла чуть более, чем полностью, слишком сложна для простого человека, а интерфейс — это вообще ужас какой-то — о usability там явно никто никогда не слышал. Посмотрел доступные скины — и совсем пригорюнился. Это, наверное, какой-то отдельный подвид сознания у людей — любители MediaWiki.

Самое функциональное из предложенного WikiMatrix’ом — TikiWiki. Впечатлился перечнем функций и количеством документации/информации на сайте. Поставил и даже потратил три дня на ее доковыривание, правку шаблонов и т.п. все время ловя себя на ощущениях, что во-первых, TikiWiki как-то постоянно подтормаживает, а во-вторых, что писали ее студенты и задача была — сделать УниверсальнуюСистемуВсегоНаСвете, что в итоге — как обычно, — выливается в невозможность выполнять адекватно ни одну функцию… Система раздроблена на огромную кучу php-файлов, в которых черт ногу сломит, используются одновременно Mootools и Jquery, а в добавок еще и кучка самописных и посторонних Javascript’ов. Возможности расширения отсутствуют как класс — нет ни хуков ни иных способов навешивания собственного функционала — только править код. Настраиваемость в целом огромная, но только из-за количества функций — некоторые базовые вещи настроить нельзя и надо опять лазать в код. Возможности по скинам неплохи и выбор их тоже есть — это плюс. Шаблонизатор — Smarty. Но вообще общее впечатление от системы (речь, кстати, идет о последней версии — 3.1) — недоделанность во всем. А самый шок был для меня, когда я включил вывод отладочной информации и увидел, что в процессе вывода одной wiki-страницы сайта делается от 30 до 300 (!!!) запросов в базу данных. Это уже выше моего понимания…

Теперь на очереди Bitweaver — тоже порекомендованный WikiMatrix’ом. Вроде хвалят и дизайн основного сайта выглядит неплохо. Буду смотреть…