Text
Переименовать кнопку добавления пользователя
Пока все зачитывались неновыми обидками на битрикс, я билась с друпалом. Как несправедливо!
Что случилось: при определённом стечении обстоятельств форма создания нового пользователя из админки не отправлялась. Если быть точной, то отправлялась, но пользователя не создавала и сообщений никаких не выводила.
В alter-хуке в числе прочего был и такой код:
if (!empty($message_id)) { $form['actions']['submit']['#value'] = t('Create new account & Continue'); }
Поверить в то, что современная CMS в 2015 году завязывает логику на подпись кнопки я не могла, а зря: http://cgit.drupalcode.org/drupal/tree/modules/user/user.admin.inc?h=7.x&id=7.34#n23
Ишью: https://www.drupal.org/node/208790
Решить можно, например, так:
// Somewhere in hook_form_user_register_form_alter(). if (!empty($message_id)) { // Fake 'op'. $form['op'] = array( '#type' => 'hidden', '#value' => t('Create new account'), ); // Rename submit button. $form['actions']['submit']['#name'] = 'op_old'; $form['actions']['submit']['#value'] = t('Create new account & Continue'); }
Отличие от упомянутой выше коммерческой CMS в том, что баг и решение гуглятся и фиксятся.
0 notes
Text
DrupalCamp MSK: сила пробуждается
В субботу поздно вечером, когда уставшие друпалеры отмечали в баре закрытие московской конференции, все чувствовали — что-то происходит. Это Drupal в России (и в Москве в частности) набирает свою силу. Прошедший кэмп это подтверждает.
Я расскажу о своих впечатлениях в стиле другого своего отчёта: Amsterdam`14, kalabro edition :)
Немного теории
DrupalCamp — это крупная региональная Drupal-конференция, но не DrupalCon. Некоторые кэмпы не уступают по фееричности официальному международному Кону. На карте друпикала кэмпы — синенькие сердечки. Ждём-недождёмся, когда на огромной пустующей территории на северо-востоке зажжётся ещё одно синее сердце.
Организацией таких кэмпов обычно занимается местное сообщество и местный бизнес, заинтересованный в друпал-разработчиках. Также могут помочь Drupal-ассоциация и зарубежные спонсоры.
Немного истории
В Москве уже состоялись 4 Drupal-конференции:
DrupalConf'2011 (апрель)
DrupalConf'2011 (декабрь): Отчёт Часть 1, Отчёт Часть 2. На этой конференции я рассказывала про многоязычность, и с тех пор меня не отпускает.
DrupalConf 2012 Отчёт Часть 1, Отчёт Часть 2
DrupalCampCIS 2013: Отчёт Андрея Юртаева. Я снова говорила про многоязычность, на сей раз в Drupal 8 (есть слайды).
И, наконец, DrupalCamp MSK 2014. Пока мы ждём официальных материалов, уже можно почитать первый отчёт по горячим следам.
Кроме Москвы на территории России я знаю только про питерский кэмп Drupal White Nights 2014. Мой евангелистский доклад «Drupal из коробки: гибкость, безопасность, стабильность» ре��омендую к просмотру всем начинающим Drupal-разработчикам.
Ребята из DrupalSib грозятся устроить кэмп и у себя. В Сибири мощное сообщество опытных друпалеров, у которых можно узнать много интересного, так что ждём.
Итак, у ребят, которые делают сайты на Друпале, действительно есть свои конференции. И про одну из них я сегодня расскажу подробнее.
Формат конференции
DrupalCamp MSK проходил в огромном 2-ом корпусе МГУ 2 дня: в пятницу и субботу. Было заявлено около 40 докладов, включая тренинг, спонсорские спичи, БОФ по drupal.ru и 2 моих доклада.
Университет, конечно, поражает своим размахом. Помещение создало на мероприятии одухотворенную академическую атмосферу, но и хлопот подкинуло при поиске нужной аудитории. Мне больше всего понравился зал 2 второго дня.
Продолжительность сессии/перерыва была подобрана идеально: заявляю и как докладчик, и как слушатель. А вот в резонности трёх потоков я до сих пор сомневаюсь. Некоторые докладчики выступали перед тремя слушателями, и всем четверым было некомфортно. Для таких докладов есть регулярные мероприятия типа DrupalCafe, но почему-то московское соо пока не осознало важность развития именно мелкоформатных митапов. Некоторых участников московских митапов я узнала как прекрасных докладчиков только на этом кэмпе. Пользуясь случаем, приглашаю всех на DrupalCafe #9 в этот четверг.
Сессии
Я была вовлечена в процесс и как слушатель, и как докладчик. И на других посмотрела, и себя показала, как говорится. Именно такой подход я считаю самым эффективным при посещении конференций.
Расскажу о докладах, на которых побывала сама (чуть позже на страницах всех докладов появятся видео и слайды):
CREATING CONNECTED EXPERIENCES
Добираться из моей ояебунинской до МГУ дольше чем до Амстердама, так что на открытии я откровенно спала. Смесь русского и английского от Грема Блеквуда была забавная. Будет видео, пересмотрю.
DRUPAL + SOLR: ЯНДЕКС МАРКЕТ СВОИМИ РУКАМИ
Один из лучших докладов на кэмпе, видеозаписи которого к сожалению не будет. Оборудование подвело. Тем ценнее доклад Евгения для тех, кто всё-таки поместился в аудиторию.
Кстати, всегда можно почитать его статьи на хабре.
PROXIMITY SEARCH WITH SEARCH API AND LEAFLET IN DRUPAL7
В комментариях к докладу уже есть слайды и даже сборка, в которой уже всё настроено для удобного и производительного гео-поиска. Здесь тоже засветился Apache Solr. Помнится, модуль Views Accelerator как раз делали для ускорения работы карт. Возможно, Александру пригодится в его сборке.
PostgreSQL: пересаживаемся с дельфина на слона
Я рассказала, что есть нехилая такая возможность крутить друпал не только на MySQL. Доклад вызвал бурную дискуссию, а значит я своего добилась: Drupal-сообщество обратило внимание на PostgreSQL.
Create D8 theme from scratch and use scss/susy/bourbon
Докладов по Drupal 8 было очень мало, так что каждый был на вес золота. Александр Дубовской сделал обзор фронтэнда в Drupal 8, а Андрей Постников, гуру ядра и талисман друпал-сообщества, давал экспертные комментарии :)
Хуки, токены, рулсы, плагины - пишем "правильный" код под Друпал
Андрей Березовский рассказал про плагинификацию модуля на примере блока популярных статей с Яндекс.Метрики.
Типичные ошибки публичных выступлений
Для тех, кто утром субботы после адской вечеринки всё же добрался ��о МГУ, мы с Константином Комелиным устроили мотивирующее шоу, о том как (не) надо делать доклады.

Чтобы окончательно всех удивить и разбудить перед вторым днём конференции, нашу презентацию мы сделали на Drupal 8: http://dcmsk14.slides.promokids.co
Отложенные вычисления в Drupal
Получилась интересная дискуссия о реализации очередей в друпале и не только.
SECURITY-AUDIT. АТАКИ НА DRUPAL-САЙТ И СПОСОБЫ ПРОТИВОДЕЙСТВИЯ
От очередей перешли к безопасности, которой много не бывает. Василий переживал, что приходится повторять прописные истины, которые «и так все знают». Но, во-первых, знать не значит применять на практике, а во-вторых, многие ведь не смотрят видео с ДрупалКонов и не читают документацию на орге, а потом получается, что SA-CORE-2014-005 всех застала врасплох.
FREELANCERS UNITE!
Мартин был удивлен оживлённой дискуссией, развернувшейся в аудитории 704. Один в поле не воин, но как объединяться, чтобы никто не был в обиде?
DRUPAL 8 И ПРОЕКТ МАССОВОГОО ОНЛАЙН-ОБРАЗОВАНИЯ
Доклад-тёмная лошадка. Для меня лично было очень много интересного. Опыт разработки большого проекта на Drupal 8 от Андрея Андреева и даже немножко от Андрея Постникова :)
ОБЛАЧНЫЕ ТЕХНОЛОГИИ В ВЕБ-РАЗРАБОТКЕ. СПОСОБ ПРИГОТОВЛЕНИЯ
На конференции всегда должен быть доклад, в котором я ничего не поняла. Большие облачные хостинги пока не строила, так что всё было сложно и ново. После доклада Игорь ответил на все вопросы и даже сравни�� для нас Flops.ru и DigitalOcean. Я на Flops обратила внимание.
BOF: DRUPAL.RU
Андрей Юртаев — героический организатор конференций и героический модератор БОФов по Drupal.ru :) А холиварили мы беспощадно. Андрею (и вообще всем адекватным ребятам) в его начинаниях буду всячески помогать, но пока ещё не подготовлен плацдарм для старта.
Участники
Участниками конференции были в основном разработчики среднего уровня. Были очень интересные представили непрофильных организаций, были и многоопытные гуру. Но всё же хочется видеть более разнообразную публику. В кулуарах в основном обсуждались технологии и процесс разработки. В отличие от того же Амстердама, русский менталитет позволял нам не только обмениваться восторженными репликами в адрес друпала, но и песочить его узкие места, обсуждать альтернативные технологии и подходы, не скатываясь в холивар. Дискуссия стала более свободной. Мне кажется, что даже более дружелюбной и по друпал-вэю. В какой-то степени эту атмосферу создал МГУ и организаторы, но в большей мере сами участники, за что им большое спасибо!
Деньги
Посещение конференции 2 дня: бесплатно Тренинг с сертификатами: бесплатно Вода/чай/кофе со сладостями 2 дня в неограниченном количестве: бесплатно (в Амстердаме за 500€ была только холодная вода) Боулинг-вечеринка с призами: бесплатно Питание в столовках МГУ или где угодно: вкуснее и дешевле, чем в Амстердаме
На всякий случай напомню, что в Амстердаме просто вход на конференцию стоил 500€ (400€ ранняя регистрация) и ещё 400€ любой тренинг в рамках кона. А в столицу Голландии, признанную одним из самых дорогих городов Европы, ещё нужно как-то добраться.
В общем, без калькулятора понятно, насколько выгоднее выходит участнику посещение конференции в пределах страны. Я не считаю, что конференция обязательно должна быть бесплатной. Спонсоры тоже не резиновые. К тому же, оплаченный билет мотивирует участников всё же подниматься с утра к первому докладу и участвовать более активно :)
Спасибо организаторам, спонсорам, участникам, докладчикам, хелп-тиму и фотографу. Это был самый трогательный кэмп из тех, на которых я была.
С первым днём зимы!
0 notes
Text
Amsterdam`14, kalabro edition
Немного теории
ДрупалКоны — международные друпал-конференции, проходящие 2-3 раза в год. Кон уже проходил в Австралии, Англии, Бельгии, Венгрии, Германии, Голландии, Дании, Испании, Канаде, Франции, Чехии и целых 9 раз в США. На карте друпикала они красненькие, как фонари а Амстердаме, так что не перепутаете, куда ехать в следующий раз :)
Перед Коном
О поездке (по крайней мере, из России), нужно начинать думать очень заранее. Например, если вы планируете слетать в жаркий Лос-Ангелес на майские, то чесаться надо уже в январе. На октябрьскую конференцию я приобрела билет ещё 30 июня. К середине июля были забронированы авиабилеты и гостиница. В начале сентября мне открыли визу, 28 сентября в 20:00 я сидела где-то на Roelof Hartstraat, ела мидий и говорила по-английски.
Понедельник (день до Driesnote)
Конференция проходила в огромном Amstersam RAI. Название хранит в себе память об ассоциации велосипедной промышленности (Rijwiel en Automobiel Industrie), хотя это был, пожалуй, единственный уголок в городе, где я не боялась, что меня собьет велосипедист.
В понедельник регистрация проходила довольно легко. Основная масса участников прибудет только завтра, в день начала сессий. В первый день можно осмотреться, пообедать и поучаствовать в различных конкурсах и тренингах. На комьюнити-саммите я ввязалась в стихийный спринт по COD, перезнакомилась с прикольными чуваками из друпал-ассоциации и отправилась дальше, на хакатон от Phase2.
Когда 11 сентября Константин Комелин предложил поучаствовать в этом самом хакатоне, я с радостью согласилась. Хакатон от Phase2 оказался одновременно полезным и дешёвым способом провести вечер понедельника. Все тренинги на коне, к примеру, стоили 500€.
Хакатон
Как только мы зашли в зал G001 (я так и не привыкла, что Европа считает этажи с нуля), друпалкон сузился для нас до клавиатуры и экрана наших лэпто��ов.
В процессе работы мы превратились из двух загадочных русских в слаженную интернациональную команду PromoKids с проектом Drupal Promo Kit. Пока первые участники уже показывали свои презентации судьям, я пулила коммиты Константина, Джона и Марьяно, стоя на носочках в вестибюле отеля Novotel, задрав компьютер над головой в поисках вайфая. Наш выход через 5 мин. Пожалуй, это один из самых ярких моментов кона для меня. Делать что-то самому, пусть даже в такой неестественной позе и с такими нервами — это классно. Спасибо команде, организаторам, всем!
Удовольствия прибавилось, когда команде PromoKids присудили первое место. Все передружились, перефотографиговались, обменялись визитками и отправились изучать ночной Амстердам, но это уже история не для этой статьи :)
Ах, да. Весь этот день я говорила по-английски.
Driesnote
На каждом коне Дрис задаёт вектор развития друпала и сообщества в открывающем докладе State of Drupal. К его докладу стекается максимальное количество участников, образуются очереди и толкотня, так что мы пришли сильно заранее и насладились шоу сполна. Были трогательные истории, песни, драки и флешмобы. После оригинальной спонсорской пародии на Дриса вышел и сам создатель друпала.
Дрис — довольно спокойный и скромный докладчик. Он поднял важные вопросы, которые волнуют и его, и сообщество в эти дни. Друпал стал большим и сложным. Индивидуальные разработчики ядра (далее: ядерщики) сгорают. Закинуть патчик в ядро уже давно дело нескольких месяцев труда, а не пары-тройки дней. Компании, успешно использующие семёрку, хотят каких-то гарантий и выгод от траты времени на ядро. Повсеместно звучат опасения по поводу влияния Аквии на друпал.
Если раньше Дрис призывал индивидуальных разработчиков не бояться орга, проявлять активность в issue queue и брать хотя бы маленькие таски, то сейчас он призывает бизнес и друпалшопы в частности вкладывать в ядро деньги в виде часов своих квалифицированных специалистов. Взамен обещают хорошую карму.
Дрис подробно об��яснял, почему так произошло и что с этим делать. Думаю, многие в зале и так знали, что иметь дело с бизнесом гораздо выгоднее, чем с индивидуалом. Только вот далеко не везде есть условия для процветания «Opensource-driven Business».
Drupal ∞
Если людям извне Drupal 8 кажется неразгаданным знаком бесконечности, то внутри сообщества все давно говорят о нём как о свершившемся факте. И вообще говорят только о нём. Народ хочет нового, свежего и прорывного. Семёрка на эту роль уже не тянет. Затянувшийся мажорный релиз подпортил настроение и ядерщикам, и Дрису, и бизнесу. Бету1 буквально вымучивали из последних сил, чтобы поднять это самое настроение. И это не глупый жест. Все эти люди, окружавшие меня в течение недели, искренне любят друпал, объединились вокруг него, нашли работу или создали свои компании благодаря нему. Этот символический релиз был нужен всем нам.
Бета1 по-прежнему нестабильна. Создавать реальные проекты на ней следует с большой осторожностью. Портировать модули можно, но без спешки, и скорее в образовательных целях.
Думаю, что к моменту стабильного релиза все уже настолько свыкнутся с симфони, твигом, сервисами, плагинами и другими нововведениями, что обновление действительно пройдёт мягко.
В том, что этот релиз выйдет, я не сомневаюсь. Слишком много людей заинтересованы в этом.
А вот насчёт Backdrop такой уверенности нет. Друпал — это не код, это люди. Представители друпал-ассоциации не только не поддерживают семейное начинание Нейта Хауга, но и довольно резко высказываются против.
Каким будет сообщество Backdrop и кто в него будет входить, пока сказать сложно. Одно ясно — врагов в друпал-верхушке они себе уже нажили.
Сессии
Ах, да, доклады. Зацепившись случайно языком с каким-нибудь разрабом из Франции, Германии, Америки или Украины, можно случайно пропустить добрую половину докладов и БОФов. Некоторые команды приезжали работать, продавать свои решения и налаживать контакты и вообще не ходили на доклады. Какая-то часть посетителей уже была слишком прокачана в друпале, чтобы слушать сессии. Они находили, чем заняться в спринт-зонах и свободных аудиториях.
Наблюдая сейчас в Drupal Planet заметки типа «Лучшие сессии DrupalCon», я искренне удивляюсь, как вообще можно составить такой список. Каждые 1.5 час�� сессий было в 8 раз больше, чем меня. И это ещё без БОФов, которых тоже могло проходить 4-6 параллельно.
Меня уже несколько раз спросили о самом интересном докладе, на котором я побывала. Боюсь, чтобы ответить на этот вопрос, мне придётся съездить на кон ещё раз и рассказать свой доклад :)
А пока я просто приведу список сессий, на которых я побывала физически на этом коне:
Drupal 8: The Crash Course https://amsterdam2014.drupal.org/session/drupal-8-crash-course
Ларри Гарфилду из Palantir.net доверили делать главный доклад по восьмёрке, с чем он безусловно справился. Во многом я узнавала в нём наш с Константином киевский доклад :)
The Myth of the Meerkat: Organising Self-Organising Teams https://amsterdam2014.drupal.org/session/myth-meerkat-organising-self-organising-teams
Чувачок из PreviousNext налил много воды и общих слов. А мы то ждали, что он по секрету расскажет нам что-нибудь новенькое и полезненькое.
Life in the Fast Lane - Achieving Sustainable Growth https://amsterdam2014.drupal.org/session/life-fast-lane-achieving-sustainable-growth
Если к любому девелоперу от Фаго до Вебчика можно подскочить без предупреждения под предлогом какого-нибудь вопроса по Drupal 8, то с этими ребятами всё сложнее. В течение часа они делились своими мыслями по поводу того, как нужно делать друпал-бизнес. С параллельным переносом на российский рынок как всегда проблемы.
Contributing to Drupal as a Small Business - A Win-Win Approach https://amsterdam2014.drupal.org/session/contributing-drupal-small-business-win-win-approach
CEO очень женского друпалшопа Hook42, специализирующегося на многоязычности и других сложных штуках, рассказала, как они контрибьютят. А они контрибьютят очень много. Для наших широт это схема пока неприменима. Эми предлагает не унывать, раскачивать локальное сообщество своими силами, и друпал-ренессанс обязательно снизойдёт.
The Case (or not) for PostgreSQL https://amsterdam2014.drupal.org/session/case-or-not-postgresql
PostgreSQL растёт и развивается семимильными шагами. К сожалению друпал-сообщество эту замечательную СУБД по-прежнему не замечает. Людей в этой комнате было слишком мало, чтобы как-то повлиять на ситуацию.
Render Caching in Drupal 7 and 8 https://amsterdam2014.drupal.org/session/render-caching-drupal-7-and-8
Очень хороший технический доклад про кеширование на уровне рендер-массивов. Модуль Render cache я раньше обходила стороной, но теперь обращу внимание. Когда докладчики увидели Сплешку, они схватили его и скрылись в неизвестном направлении постигать дзен перформанса.
Part 2: Train Wrecks & Ugly Baby Client Meetings https://amsterdam2014.drupal.org/session/part-2-train-wrecks-ugly-baby-client-meetings
Один из самых позитивных докладов. Такое впечатление, что я заглянула в логово к врагам, которые собрались подискредитировать программистов, пока те в соседней аудитории слушают суровые кодерские доклады. Взглянула на друпал со стороны продажника. Занятно. Подача в живую, конечно, не сравнится с видео-записью. Обычно «сэйлзы» смешивают своих же разрабов с дерьмом, но подход Сьюзен гораздо более сбалансированный.
Zariz & RESTful - We've got your headless covered https://amsterdam2014.drupal.org/bof/zariz-restful-weve-got-your-headless-covered
Шла на докладчика, который традиционно жжёт на всех конах. Так как я довольно внимательно слежу за всем, что делают ребята из Gizra, то нового ничего не узнала, зато познакомилась с Amitai и вдоволь посмеялась.
Managing Complexity https://amsterdam2014.drupal.org/session/managing-complexity
Шла на технический доклад про сложные PHP-проекты, а попала на внутреннюю дискуссию ядерщиков. Ларри поднял вопросы организации и формального разграничения ответственности на drupal.org. По его мнению сейчас там творится хаус, у ядра нет Тим Лида, никто ни за что ответственен. Конечно же, из зала полетели упрёки и сомнения. Само наличие таких дискуссий говорит о том, что сообщество растёт, развивается и хочет себя организовывать.
Q&A with Dries https://amsterdam2014.drupal.org/session/qa-dries
Посмотрела на тех разработчиков ядра, которых знала только по никам. Простые люди, уставшие отвечать на одни и те же вопросы. На всех на них лежит ответственность огромного восьмого друпала. Многие работают с ядром на фул-тайме. Многие до сих пор сидят в vim/emacs. Впервые на коне я почувствовала сильный разрыв между их и моим Drupal-мирами.
Field API is dead. Long live Entity Field API! https://amsterdam2014.drupal.org/session/field-api-dead-long-live-entity-field-api
Хорошая техническая презентация, с которой, наверное, надо начинать изучать Drupal 8. Аншлаг, все радуются, задают кучу вопросов, а тем временем еврокон в Амстердаме закрывается анонсом следующего еврокона в Барселоне.
Закрытие
Участников кона я могу условно поделить на три группы: новички/отпускники, трудяги, огранизаторы/ядерщики.
Для первой группы кон был непрерывным потоком друпал-счастья, пива и других развлечений. К этой группе отношусь и я, т.к. это мой первый кон. Меня пёрло от всего, и я ощущала себя в отпуске в стране Друпляндии.
Многие же приезжают на кон работать. Бизнес устанавливает партнерские связи, кодеры в кодерских лаунжах закрывают свои задачи, менеджеры рекламируют и продают, HR’ы собеседуют и хантят. Процесс идёт непрерывно в любой из дней во время любых сессий. Не все могут себе позволить отлучиться из офиса на всю неделю. Купив полноценный билет, многие посещают конференцию 1-2 дня и улетают дальше по своим делам.
Но самые сосредоточенные лица были у тех, кто был озадачен выпуском беты1 прямо во время кона. За всем этим друпал-весельем стоит огромная работа организаторов, ядерщиков, менеджеров, евангелистов. На их лицах читалась усталость. Ещё бы. Я и сама подустала к моменту, когда добралась до клуба, где проходила Drupal Trivia Night.
С первого раза прикол Trivia Night (как и некоторые другие Drupal-развлечения) я не прочувствовала. Алкоголь был дорогой, а вопросы сложные. Скорее я поняла, что ещё плохо знаю друпал и его сообщество, так что мне надо активнее зависать на орге.
В последний официальный день кона мы пришли на код-спринт, где больше общались с разными представителями сообщества, чем кодили. Масштаб и атмосфера друпалконовских спринтов, конечно, вп��чатляют. В шуме и гаме довольных друпалеров удалось пару часов поработать над Promo Kit’ом, после чего мы отправились гулять, отдыхать и переваривать полученную за неделю информацию.
Город
Не могу не упомянуть о самом Амстердаме. В рамках своей туристической программы мы увидели кучу всего интересного начиная с ночного Амстердама с его кофешопами и красными фонарями и заканчивая тихим и умилительным островом Маркен в Ватерланде.
Конечно, он оказался для меня совсем не таким, как рассказывали друзья и показывали филь��ы. Интересно, а каковы Лос-Анжелес и Барселона? ;)
В заключение
Это скорее заметки на полях для себя, чем полноценный отчёт о конференции, так что прошу прощения за возможные неточности и субъективизмы. Друпалкон определенно вынес меня на новый виток развития и зарядил энергией и вдохновением. Многое ещё предстоит обдумать, ещё большее — сделать. И английский подучить :)
А делиться с сообществом я буду в ближайшее время на московском кемпе: http://2014.drupalcampmsk.ru/ (темы докладов готовятся).
Задавайте вопросы в комментариях, регистрируйтесь на кемп, подписывайтесь в твиттере или просто пишите на [email protected]!
0 notes
Text
Drupal 8 в России: как?
Не всё так гладко в Bitrix-королевстве. Ядро D7 для битрикса анонсировали ещё в октябре прошлого года (https://twitter.com/kalabro/status/395287991280603136), а один из ведущих битрикс-разрабов, MVP (http://www.1c-bitrix.ru/partners/mvp.php), написал сегодня буквально следующее: «D7 упрощает работу, значительно. Можно забыть про богомерзкое копирование осточертевших getlist из модуля в модуль. В общем, все низкоуровневое убрали под капот - круто, спасибо. Но из-за косяков (значительных пока что) использовать это получается коряво (красивый код, красивый код, херак GLOBALS). Неприятно.» Источник: http://dev.1c-bitrix.ru/community/webdev/user/11948/blog/11193/ Меня в контексте этой истории вовсе не битрикс волнует (за него-родимого я не переживаю), а сам факт низкой подготовленности разрабов. Коммьюнити битрикса больше полугода пытается перейти на простое OOP с ORM и всё натыкается на какие-то $GLOBALS. Как же русское сообщество Drupal будет переходить с hook_page_build_alter() на довольно сложный фреймворк Symfony2? Где будет хоститься? На каком сегменте рынка сможет конкурировать? Перед выходом беты пора об этом всём подумать.
0 notes
Text
Три истории
Первоначально я хотела написать отчёт о Drupal White Nights 2014, но вместо этого получилось 3 истории: об инструментах, о предрассудках и о сообществе. Возрастное ограничение: 18+
Если вы попали под возрастное ограничение, можете полистать мою презентацию, а также презентации всех докладчиков на сайте конференции.
История 1. Омлет.
На моей кухне есть миксер, блендер, сковородки, цептеры, пароварки и бог знает, что ещё. Однако самый лучший в мире омлет делает моя мама обычной вилкой.
На тренинге для новичков тренеры предложили участникам поставить XAMPP. Я всегда считала подобные вещи недостойными профессионала. Есть же Vagrant, VirtualBox, удалённое dev-окружение от Pantheon в конце концов.
Однако на деле оказалось, что XAMPP — это удобный и мощный инструмент, который прекрасно справляется со своими задачами. Многие разработчики успешно используют его и не жалуются.
При таком огромном количестве новых технологий, методологий, аббревиатур важно не забывать, что это всего лишь инструменты: вилки и комбайны.
История 2. Случай в парке.
Недавно я посетила открытый урок English First в парке Горького. Была чудесная погода, все дружелюбно общались на тему кто куда собирается в отпуск, и как объясниться с персоналом аэропорта, если опоздал на свой рейс. Моя группа (девушки 17-25 лет) за 40 мин обсудили всё, что касается отпуска, и мы решили на��онец познакомиться. Когда я обронила, что я программист, то тут же встретила недоумённые взгляды новых знакомых и почувствовала себя лишней, как будто кто-то мне сказал «вы самое слабое звено, прощайте». Я пыталась объяснить, что это очень важно и перспективно, что IT-коммьюнити ��уждается в свежем взгляде, в том числе женском, что программисты давно не сидят в подвалах поодиночке, а собираются в большие мощные сообщества. Всё это было бесполезно. Почти у каждой девушки из нашего кружка был свой неприятный опыт общения с программистами (1С, PHP). В итоге дамы сошлись на том, что я занимаюсь неинтересной фигнёй в компании с некрасивыми людьми ради денег. Их смартфоны попрятались по карманам, молча высасывая соки из бесплатного вайфая.
На фоне таких предрассудков и непонимания со стороны непосредственных потребителей того, что мы делаем, кажутся смешными холивары Bitrix vs Drupal, Ruby vs PHP и т.д.
История 3. Границы условные.
Пару недель назад я активно переписывалась с разработчиком из Бельгии (нет, не с Дрисом). Вчера я 2 часа болтала на своём ломаном английском с немцем о друпале, важности фронтенда и нативных C-модулях. А сегодня с утра менторила разраба с Гоа. У них там вообще другой мир! (А хуки те же).
Что уж говорить про украинских и белорусских коллег, которые очень активны в Drupal-сообществе, и ты сталкиваешься с ними на Drupal.org буквально на каждом шагу.
Благодаря активному украинскому Drupal-сообществу я дважды побывала в необыкновенно красивом городе Киеве, повстречала интересных и отзывчивых людей и, конечно, получила много новых знаний.
Существует ещё огромное количество проблем и стереотипов в стиле «русские пьют водку с медведями», но объединяющая магия друпала помогает эти проблемы преодолевать.
Главная особенность Drupal — это его сообщество, а русское Drupal-сообщество — это мы, так что на нас с вами и лежит ответственность за его будущий успех в России.
А теперь, внимание, вопрос: ПОЧЕМУ, Б*ТЬ, ТАК МАЛО НАРОДУ ХОДИТ НА КОНФЫ? Почему 10 человек стараются изо всех сил, договариваются, организуют, выступают с докладами, а вы просто тупо не приходите? Я уже не говорю о том, что на менее специализированных конфах вроде DevConf Drupal вообще никак не представлен.
0 notes
Text
Тесты для настоящих друпалеров
Вчера Дрис анонсировал программу сертификации от Acquia.
Тема сертификации Drupal-разработчиков обсуждается давно. Её даже на Drupal.ru поднимали :) Квалифицированных специалистов мало, и их надо как-то отличать от неквалифицированных.
Недавно даже я проводила свой тест на друпалера, о чем подробно отчиталась в отдельном посте: DJ — значит Drupal Junior.
После этого у меня состоялся продуктивный разговор с Евгением Масловским (@Spleshka), имеющим опыт набора специалистов, и выяснилось, что мои формулировки часто недостаточно однозначны и очевидны, чтобы включать их в тест по найму.
Я получала комментарии от совершенно разных людей на протяжении нескольких недель после публикации результатов, тогда как сам тест я написала за полчаса. Что ж, тема найма и проверки профпригодности в IT всегда была горячей.
И дело тут не в моём особом видении мира. Тесты для широкой публики написать действительно сложно. Достаточно вспомнить тестирование по друпалу на том же oDesk. В каждом вопросе либо недостаточно информации, либо он слишком специфический, чтобы вспомнить ответ за отведённую минуту, либо, наоборот, слишком простой. Для составителя эти тесты выглядят адекватными, у пытливого разработчика же вызывают недоумение.
Поэтому нет ничего неожиданного в том, что на единственный представленный Аквией в блюпринте вопрос уже поступают придирки и жалобы.
Ответить на него сможет даже моя мама (а с определённой долей вероятности и аквариумные рыбки моей мамы) — такова сама природа тестов. При этом остаётся привкус высасывания ненужных подробностей из пальца. Какой мобильный разработчик? У меня в мозге сразу табличка Services загорается. К чему всё это, если вы проверяете, знает ли кандидат о существовании во Views дисплей-плагина Feed для RSS? RSS — хорошая тема. Там можно придраться к относительным/абсолютным ссылкам, тегу link, вью моду, а ещё API ядра есть. В общем куча интересных подробностей, над которыми кандидату пришлось бы подумать явно не одну минуту. В итоге вопрос Аквии вроде как и про мобильные приложения, и про RSS, и про фильтр�� Views, а получилось ни о чем. @chx даже уязвимость безопасности в нём нашёл :)
Конечно, по одному вопросу глупо судить обо всей программе сертификации. Я уже подала заявку, записалась на вебинар и с радостью пройду онлайн-тестирование, чтобы ещё раз проверить себя, теперь уже с помощью Аквии.
UPDATE: Про онлайн-тест я погорячилась. Судя по всему придётся ехать в ЛАНИТ.
UPDATE2: Анджела Байрон набрала 85% (для сдачи нужно от 65%) и подготовила небольшой гид: http://webchick.net/files/AcquiaCertificationStudyGuide.pdf
UPDATE3: Несколько статей на тему:
85% Drupal core committer takes Acquia Certification exam. You won't believe what happens next!
Не работает на линуксе Grumpy Swedish developer try to setup for the Acquia Certified Developer exam, and you could not guess what happens next
83% Drupal Certification And Me
75% Cracking Acquia Drupal Certification
Сдал The acquia certified developer exam
0 notes
Text
Играй хорошо в Drupal
Часто смотрите на список последних зарегистрированных пользователей? Добавив admin/people?sort=desc&order=Member%20for в Shortcuts, вы избавите себя от лишних кликов. Вместо этого удивительное число разработчиков отключает модуль Shortcuts как балласт. Отключите лучше Field UI.
Но вообще-то я хочу поговорить не о Shortcuts, а об отношении к рутинной работе и «сложным» модулям друпала.
Начнём, пожалуй, с Panels.
В Panels 3.4 добавлена возможность перевода содержимого панелей и некоторых других настроек с по��ощью i18n_string на страничке admin/config/regional/translate/translate. В интерфейсе самих панелей ничего не изменилось, хотя можно было бы и добавить контекстную ссылку на страницу редактирования переводов, как это сделано, например, в Path Breadcrumbs. Для тех, кто не знает: там для каждой PB item появляется вкладка для перевода. Просто и очевидно.
К сожалению, модулем i18n_panels пользоваться пока не очень удобно ни администратору, ни тем более ушлому менеджеру, ради которого собственно Panels и затевался как быстрый способ добавить информацию в любое место на своём сайте.
Однако, спасибо архитектуре друпала и панелей, мы можем улучшить ситуацию, накидав 20 строк PHP-кода:
/** * Implements hook_get_pane_links_alter(). * * Add "Translate" link to translatable panel panes. */ function mymodule_get_pane_links_alter(&$links, $pane, $content_type) { if (!module_exists('i18n_panels') || empty($content_type['i18n_settings'])) { return; } if (isset($pane->uuid) && $translation_object = i18n_panels_get_i18n_translation_object($pane)) { $context = 'pane_configuration:' . $pane->uuid; // Load all available translations for this page. $translations = db_query("SELECT l.lid, l.context FROM {locales_source} l WHERE l.context LIKE :context AND l.textgroup = 'panels'", array(':context' => db_like($context) . '%'))->fetchAllAssoc('lid'); foreach ($translations as $lid => $translation) { $string = str_replace($context, '', $translation->context); $links['top'][] = array( 'title' => t('Translate @string', array('@string' => $string)), 'href' => 'admin/config/regional/translate/edit/' . $lid, 'query' => array('destination' => current_path()), ); } } }
Грязновато? Да, но это не конкурс красоты, а способ сделать повседневную работу удобнее и интереснее.
Отойдём от темы многоязычности, потому что, действительно, не все увидят проблему в переводе десятка-другого панелей и обучении администратора сайта этому самому переводу.
Допустим, разработчику нужно собрать на сайте N панелей. Он, как правило, использует стиль панелей “No markup at all” и кеш на 30 секунд. Постоянное кликание на ненавистный дропдаун панелей в какой-то момент может привести к тому, что разработчик просто возненавидит Panels.
— Я не обезьяна! Я веб-программист!
Что ж, спасибо архитектуре друпала и панелей, мы можем улучшить ситуацию, накидав 20 строк PHP-кода: Change default Panels panes settings (style, cache, etc).
Теперь можно клепать панели like a boss и думать о действительно важных вещах, а не о том, что ты забыл сбросить стиль панельки.
Или вот зубодробительный пример от Views. Бесят 'block_1' и 'page_1' в названиях новых дисплеев? hook_form_FORM_ID_alter() и противный префикс больше вас не беспокоит: Fix awful Views Display machine names with '_1' suffix.
Добавляете красивые алиасы для нод в ручную? Сделайте эту вертикальную вкладку вкладкой по умолчанию, чтобы случайно про неё не забыть.
Создаёте кастомные страницы управления? Выводите их в контекстных ссылках.
И таких способов улучшить “Workflow” для разработчиков и упростить работу администраторов/контент-менеджеров очень много. Нужно просто покопаться в рутине. С одной стороны, так можно постоянно изучать Drupal, не тратя при этом бессонные ночи на гигантские патчи, делать что-то новое, вдохновляться, избавляться от ненужного гнева и раздражения; с другой — глубже вникнуть в особенности взаимодействия пользователя с данным конкретным проектом, «понять» и полюбить проект, над которым работаете.
А что вас больше всего угнетает при разработке сайта на друпале, что можно было бы как-то усовершенствовать или полностью автоматизировать?
P.S.: LEGO (от дат. Leg Godt — «играй хорошо»).
0 notes
Text
DJ — значит Drupal Junior
Несколько дней назад я разместила на drupal.ru предложение о работе для начинающего друпалера (так называемого Drupal Junior).
Чтобы проверить профпригодность и адекватность кандидата, я предложила ответить на 10 вопросов на тему Drupal 7, которые пришли мне �� голову в тот час.
Я получила 12 полноценных анкет, из них одну от девушки. Также были 2 попытки пошутить и 2 попытки сделать вид, что на вопросы отвечать необязательно.
Итак, сначала разберу вопросы:
На сайте используется тема MyTheme на основе темы Bartik. Необходимо подключить библиотеку Modernizr. Как бы вы это сделали? Засчитано ответов как правильных: 100% Половина кандидатов рассказала, как пользоваться drupal_add_*(), другая половина вспомнила ещё и про модуль Modernizr. Ожидаемый ответ: drupal_add_js()/drupal_add_library() или модуль Modernizr.
В верстке страницы example.com/content/my-article-1 присутствует код:
<link rel="shortlink" href="/node/1" /> <link rel="canonical" href="/node/1" /> <meta content="My Article" about="/node/1" property="dc:title" />
Как убрать эти теги из <head>? Засчитано ответов как правильных: 75% 2 кандидата из 12 совсем не справились, остальные с переменным успехом пользовались hook_html_head_alter(). Про модуль RDF никто не вспомнил. Ожидаемый ответ: hook_html_head_alter(), выключить RDF.
На сайте имеется тип материала «Товар» с полем «Категории». Товаров 500 шт. Необходимо вывести все товары (название, цена) на одной странице сгруппированными по категориям. В каком направлении будете действовать? Засчитано ответов как правильных: 8% Была послана на Views 12 раз из 12-ти возможных. Про кеш этих самых Views и про 500 товаров подумал один кандидат. Так совпало, что на него в итоге и пал мой выбор. Встречайте будущего ниндзю: @Frantsuzzz2008. Ожидаемый ответ: Views + какие-нибудь предложения по улучшению производительности.
hook_field_formatter_info(), hook_field_formatter_settings_form(), hook_field_formatter_prepare_view(), hook_field_formatter_settings_summary(). Чего не хватает? Засчитано ответов как правильных: 54% Люди, ни разу не пользовавшиеся api.drupal.org, сразу спалились. Ожидаемый ответ: hook_field_formatter_view().
Кот Василий скачал на свой сайт mysite.com модуль Smart Crop, скопировал в папку /modules и включил. Оставшись недовольным работой модуля, он удалил папку /modules/smartcrop. Что вы скажете Василию, узнав об этом всём, и какие действия предпримете как агент поддержки сайта mysite.com? Засчитано ответов как правильных: 88% Все рассказали коту, что скачивать модули надо в sites/all/modules/*, что прежде чем удалять папку модуля, надо выполнить его деинсталляцию из друпала, иначе друпал будет бешено искать этот модуль везде где только можно. Почти все смогли удалить несчастный модуль Smart Crop, но прогонять сайт через Bootstrap optimizer или Clean missing modules никто не стал. Ожидаемый ответ: Погладь кота, друпалер!
Предположите, что делает эта команда: drush rsync @mysite-dev:%modules @mysite-stage:%modules --exclude-vcs --dry-run Засчитано ответов как правильных: 70% Drush настолько прост и очевиден, что почти все смогли понять, что делает эта хитрая конструкция. При этом количество не использующих Drush кандидатов зашкаливало. Идеальных ответов, учитывающих все нюансы команды, было 4, что тоже много. Отмечу, что в самой команде закралась опечатка: --exclude-vcs вместо --include-vcs, но с кем не бывает. Ожидаемый ответ: эмуляция (--dry-run) синхронизации папок %modules (%modules определена в конфиге aliases.drushrc.php) с сайта @mysite-dev на сайт @mysite-stage.
Клиент Юлия забыла админский пароль на свой сайт ya-juliya.ru. Почта пользователя admin (uid: 1) указана [email protected] (т.е. недействительная). У Юлии есть только FTP-доступ к сайту. Что предпримете? Засчитано ответов как правильных: 92% Шовинисты спалились на этом вопросе. 4 человека предложили подменить хеш пароля первого пользователя программно. 6 человек возжелали залить phpmyadmin или аналог и поменять хеш пароля. 1 кандидат подумал в сторону user_login_finalize() Ещё один предложил хакнуть ядро, чтобы оно временно не проверяло пароль. Ожидаемый ответ: авторизоваться программно (http://dropbucket.org/node/143) ну или хоть как-нибудь.
После того, как вы решили проблему Юлии, она вдруг вспомнила свой пароль администратора: 12345. Что предпримете? Засчитано ответов как правильных: 38% Юля усыпила бдительность друпалеров. Большинство, представляя, видимо, молодую и красивую Юлию, не смогло сконцентрироваться на вопросе. Остальные провели воспитательную лекцию насчет простых паролей. Ожидаемый ответ: ужесточить минимальные требования к паролю администратора или хотя бы убедить Юлию использовать более сложный пароль.
Когда можно использовать модуль PHP Filter? Засчитано ответов как правильных: 60% Носом в статью о вреде eval() никто не ткнул (версия на русском здесь, тоже под номером 9). Ожидаемый ответ: никогда (но правила существуют, чтобы их нарушать).
Что не так с этим файлом node--article.tpl.php (см. код здесь)? Засчитано ответов как правильных: 75% В этом файле действительно ужасно всё, поэтому смысла перечислять все косяки нет. Краткие ответы «Нарушен принцип MVC» или «Логика не должна быть в шаблоне, и вообще в данном случае лучше воспользоваться Views» засчитывались. Ожидаемый ответ: всё плохо ($_SESSION в шаблоне, запросы к БД в шаблоне, строковая константа «Другие материалы:» повисла в воздухе, для ссылок не используется l()/url(), substr() и наверняка что-то ещё).
Хотя вопросы составлялись так, чтобы можно было оценить и техническую подкованность, и человеческую адекватность одновременно, мне хотелось видеть какую-то дополнительную информацию (резюме, портфолио, вопросы или ожидания от вакансии).
Только четверо такую информацию предоставили, хотя, казалось бы, чего стоит накидать пару строк о себе. А некоторые так засекретились, что даже не подписывались, так что я не знала, как к человеку обратиться. Приходилось рыться на страничках кандидатов в социальных сетях, которые любезно подсказывала Яндекс.Почта.
7-ми кандидатам (из 12-ти) было предложено оценить время выполнения небольшой задачи (создание на конкретном сайте некоего блока и темизация его в соответствии с дизайн-макетом). Была выдана ссылка на сайт, дизайн-макет и небольшой комментарий.
Как в результате выяснилось, простейший бизнес-вопрос для кандидата на почасовую ставку вызвал невероятные сложности. Ответы разнились от 15 мин до 10 дней. Конечно, я предварительно спрогнозировала время сама, заложив запас для джуниора. Приемлемые оценки были буквально у 2-3 кандидатов.
Многие возмутились, что я ищу начинающего разработчика. Какой же он начинающий, если на такие вопросы должен отвечать. Видимо дело в том, что я ��риентируюсь на уровень зарубежных друпал-шопов, где Junior Developer — это личность, а Senior Developer — это бог.
Мои представления во многом подтверждаются моими товарищами по сообществу, классными спецами, постоянно покоряющими новые вершины.
И всё же, почему Junior?
Во-первых, уровень текущих задач должен быть интересен исполнителю. Нет интереса, нет результата. Когда мне надо будет запустить ракету на друпале, я позову сеньёров. Благо, их есть у нас в сообществе. Stay Hungry, короче.
Во-вторых, мне, конечно же, хочется зажечь новую звезду, как когда-то зажгли и меня. Наша сфера (веб-разработки) предоставляет широчайшие возможности для любого. Нужен только комп и желание.
Ну, и в-третьих, настоящие сеньёры вырастают только из настоящих джуниоров.
В целом, я довольна результатами своих поисков. Для себя отметила, что в следующий раз надо просить ссылки на профили d.org/d.ru и на личный блог (это вообще адский плюс, когда человек умеет писать).
Надеюсь, данная заметка поможет соискателям и работодателям найти друг друга в дивном Drupal-мире.
0 notes
Text
Почему пропало содержимое поля Body?
Характерные признаки этого недуга: в форме ноды один текст (или вообще нет текста), на странице другой, а клиент ожидает, что будет вообще третий.
Дело в том, что кто-то или что-то (например, модуль Entity Translation, поставленный «поиграться»), сделал ваше поле Body (и, возможно, другие поля) переводимым, и значения теперь ищутся не с ключем 'und', а с ключем 'ru' или 'en' или что там у вас.
Убедиться, что это так, можно, взглянув на информацию о поле:
dpm(field_info_field('body'));
Проблемы с Body могут возникнуть из-за того, что конвертация поля из непереводимого в переводимое прошла с ошибками или вообще не производилась.
Тем же девелом можно посмотреть, где ваши потерянные данные, и какой способ восстановления вам нужен:
Скорее всего данные в 'und'. Отключить переводимость можно двумя способами.
Если нужно при этом перекинуть данные из 'en' в 'und' (как в моём примере), то можно воспользоваться Entity Translation UI:
Если же, наоборот, данные в 'und' полезные, а 'en' нужно просто убить, то можно воспользоваться этим кодом:
$field = field_info_field('body')); $field['translatable'] = FALSE; field_update_field($field);
Field API начнёт снова использовать 'und'.
Эта чехарда с переводимыми полями, наконец, исправлена в восьмёрке:
Content field translation settings are easily reversible
Language codes for original field values always match entity language regardless of field translatability
0 notes
Text
Отладка запросов в Drush
Нет времени объяснять, просто пишем:
drush_print(dpq($query, TRUE));
И запускаем Drush от админа, потому что dpq() проверяет право на просмотр отладочной информации.
drush -u admin ...
Для дебага массивов и объектов есть drush_print_r().
0 notes
Text
О правах на файлы в Drupal
Есть отличная инструкция от луллаботов, как настраивать права на файлы (sites/default/files), но она неполная.
Итак, задача: файлы и папки в sites/default/files должны быть доступны на запись (изменение, удаление, создание) и веб-серверу (www-data), и разработчику (kalabro).
Как и сказано в инструкции луллаботов, добавляем kalabro в группу www-data. sudo usermod -a -G www-data kalabro
Выставляем веб-серверу (в моём случае апачу) umask 002, чтобы 775 не превращалось в 755.
Здесь предлагается просто дать папке files 2775 и всё само заработает, но это не так. Функция file_prepare_directory() делает дополнительный вызов drupal_chmod(), который благополучно трёт то, что выставила ОС после вызова mkdir(). И здесь самое важное: в settings.php пишем:
$conf['file_chmod_directory'] = octdec('2775'); // или 1533 :)
Теперь drupal_chmod будет сохранять флаг SGID (setgid) для всех вновь созданных поддиректорий. Это значит, что созданная друпалом папка и файл в ней будут иметь такой вид:
drwxrwsr-x 2 www-data kalabro 4096 Nov 18 00:50 . drwxrwsr-x 3 www-data kalabro 4096 Nov 18 00:50 .. -rw-rw-r-- 1 www-data kalabro 358057 Nov 18 00:50 Holden Hurricane Concept 1969.jpg
На Drupal.org
0 notes
Link
��ам стоит прочитать эту статью Эрика Петерсона, потому что:
Это одна из лучших технических статей о друпале, которые я читала в последнее время. В ней рассматриваются особенности работы Form & Ajax API в друпале, о которых стоит всегда помнить, но о которых почему-то не любят говорить. В данном конкретном случае круг пользователей ограничен анонимами без сессии, но "An illegal choice", например, ловят периодически и на более простых задачах. Предупреждён, значит вооружён.
Автор не просто жалуется на жизнь, но предлагает работающее решение (модуль, дополняющий AddressField): можно поставить, можно открыть и почитать код.
Автор помогает разработчикам модуля AddressField, а не просто выпускает в свет ещё один костыль. Когда я первый раз читала статью, у меня сложилось впечатление, что Петерсон несколько разочарован в качестве поддержки AddressField авторами. Он ссылался на ишьюсы, в которых уже давно не было активности. Читалось между строк: «Эх, Райан, Райан, подзабил ты на модуль.» Я тут же вспомнила свои похожие истории, когда ты и патч кидаешь, и проблему подробно описываешь, а мэйнтейнеру всё равно. Когда я позже открыла статью второй раз, там уже был комментарий от Райана, мэйнтейнера AddressField. Стандартная форма: «У меня всё работает. Повторить баг не могу. И вообще можно отключить аякс.» Что сделал Петерсон:
Согласился.
Объяснил другими словами, как всё-таки увидеть баг.
Написал тесты!!!111
Поблагодарил Райана за модуль AddressField.
Пожалуй, этот комментарий круче самой статьи! И не потому что автор — крутой чувак, который нашёл в себе силы написать Drupal-тесты на AJAX-баг, а потому что он сказал человеческое «Спасибо» там, где хочется огрызнуться «Вы все козлы криворукие!» и сразу поменял атмосферу диалога на 180°.
Это нормальное поведение для мэйнтейнера модуля — отнекиваться от багов до последнего. В конце концов, это камень в его огород, и он инстинктивно защищается. Ситуация усугубляется тем, что в issue queue популярных модулей творится ад и вакханалия из пошлых юзеров, а поддерживает это всё в итоге один человек. Ну, два, если повезёт.
Приходим к очевидному. Программистам недостаточно баг-репортов, патчей, объяснений, тестов. Нужно ещё человеческое отношение.
Отойдём от друпала и вообще от опенсорса и вывод не поменяется.
Будем людьми! :)
0 notes
Text
Шпаргалка на время технических работ на Drupal.org
Зеркала с базами модулей: http://drupalmodules.com/, http://drupalextensions.com/
Поиск нужной версии модуля по его машинному имени: http://updates.drupal.org/release-history/views/7.x (views заменить на имя модуля, например, panels, devel, admin_menu, ui_cache_clear и т.д.)
Получение кода из git: git clone http://git.drupal.org/project/views.git Просмотр веток: git branch -r Переключение на нужную ветку: git fetch origin 6.x-3.x; git checkout 6.x-3.x
Просмотр кода модуля онлайн: http://drupalcode.org/project/views.git
В Drush всё будет работать как обычно: drush dl views --select
Кеш гугла.
0 notes
Text
Devel Yandex.Referat vs Faker
Несмотря на то, что Devel Yandex.Referat давно не обновлялся, он п��-прежнему выполняет свою функцию: генерирует тестовый контент на русском.
Недавно появился проект Faker, использующий для генерации контента одноименную библиотеку. Я решила глянуть, как она поддерживает русский.
// Код для devel/php $lib = libraries_load('faker'); $faker = Faker\Factory::create('ru_RU'); dpm($faker->name); dpm($faker->name); dpm($faker->email, 'mail'); dpm($faker->text);
Не очень, прямо скажем.
Зато для англоязычного пользователя он очень даже ничего. Имена, адреса, телефоны, айпишники, года и много чего ещё. Правда автор модуля для друпала решил не делать никаких UI. Мол, прогерам нужно, прогеры хук быстрее напишут, чем в интерфейсе разбираться будут. В любом случае, на заметку взять стоит.
0 notes
Text
Письмо в тоскливом октябре
Закрытие Google Reader пагубно повлияло как на моё чтение блогов, так и на их наполнение.
Заметки в стиле «Я узнала, как зайти в админку и сейчас я вам это расскажу» приходят на ум всё реже и реже. Просто пересказ постов из Drupal Planet (не всегда, кстати, качественных) без указания источников — это несерьёзно, друзья.
В июне всё же меня посетило вдохновение, и я написала огромную простыню, не имеющую аналогов ни на русском, ни на английском, о том, как простому смертному пользоваться друпал-огром:
Часть I: Откуда качать модули; информация о релизах и авторах. Часть II: Волшебный правый сайдбар и всё что в нём скрыто. Часть III: Как писать в Issue queue, как скачать dev-версию и не запутаться в патчах.
Там же на DrupalSPB был опубликован Топ вопросов с drupal.stackexchange.com: http://drupalspb.org/articles/kalabro/top-10-populyarnyh-voprosov-i-otvetov-pro-drupal
Ещё один топ (собранный с помощью Parser 2 и Views) не дожил до статьи и так и остался в виде твита: https://twitter.com/kalabro/status/366663740608892930 Дистрибутивы — это вторая моя страсть после многоязычности :)
В апреле я стала, наконец-то, полноправным контрибьютером, зарелизив модуль UI Cache Clear для частичного сброса кеша вьюх, блоков и панелей через контекстное меню. Недавно модуль стал также поддерживать Path Breadcrumbs.
О Path Breadcrumbs скажу отдельно. Когда-то Spleshka доблестно закоммитил мой первый серьёзный патч, добавлявший поддержку тру-многоязычности, а потом и вовсе сделал ко-мэйнтейнером. Получила я третью ветку модуля с кучей открытых тикетов и не знала, за что хвататься. В итоге за три релиза привела-таки issue queue в порядок и даже начала писать документацию.
Совместное ведение модуля — это очень хороший опыт, который я получила в проекте Yandex.Metrics. Есть у кого поучиться, есть с кем обсудить приоритеты, есть кому поревьюить качество твоего кода.
А вот когда ты в одиночестве ковыряешься в своём модуле, всем в общем-то плевать. Качество предлагаемых в issue queue патчей, как правило, оставляет желать лучшего, а каждый второй пользователь не в состоянии прочитать README и плодит одни и те же тикеты с приоритетом critical. Юзер мэйнтейнеру — враг, мэйнтейнер мэйнтейнеру — друг :)
Вместе с Константином Комелиным, автором Yandex.Metrics, мы ездили в Киев на DrupalCamp и 1,5 часа рассказывали про портирование модулей на Drupal 8: #D8CX: Upgrade your modules to Drupal 8. Его отчёт можно почитать здесь: http://komelin.com/content/nash-doklad-na-drupalcamp-kyiv-2013 В общем, мы говорили про Drupal 8 по-русски, когда это было ещё не модно :)

В августе я досказала недосказанное на конференции DrupalCampСНГ, сделав провалившийся с треском доклад про многоязычность в Drupal 8. Пустой зал, непонимающие взгляды. Но я всё равно продолжаю гнуть свою линию. Например, вчера я добавила в так полюбившийся блогерам модуль Hello World для Drupal 8 языковую поддержку, правда опубликовала в этот раз на английском: http://drupal.stackexchange.com/questions/87922/add-multilingual-support-to-drupal-8-hello-world-module/87923#87923 и опять сражаюсь, чтобы вопрос не закрыли :)
Кстати, в ближайшее время меня можно будет увидеть всё там же в Питере на DrupalCafe. Буду про что-то рассказывать. Открыта к холиварам по Backdrop CMS!
0 notes
Text
Великий фэил константы LANGUAGE_NONE
Update: https://drupal.org/node/2040323
Если вдруг кто-то сделает полнотекстовый поиск по всем контрибам, он увидит, как часто используется эта константа.
Хорошо, если хотя бы один из десяти друпалеров знает об этих тонкостях многоязычности полей: http://drupal.stackexchange.com/questions/36949/create-multilingual-node-programmatically/36960#36960
Зато код типа $node->body['und'][0]['value'] не пропустит ни один ревьювер, заставив поменять 'und' на LANGUAGE_NONE.
Шутка в то, что первый вариант и короче, и совместим с Drupal 8.
А константа LANGUAGE_NONE должна будет заменяться другими тремя: http://drupalcode.org/project/drupal.git/blob/refs/heads/8.x:/core/includes/bootstrap.inc#l198
Для тех, кого многоязычные сайты вообще не волнуют, это ничего не меняет. Для остальных же разработка многоязычных сайтов остаётся труднодоступной.
http://drupal.org/node/1473200
0 notes
Photo
Devel PHP Exec Extra уже умеет табы, автокомплит и авто-сохранение. Последнее аяксом через user_save(), так что сниппеты будут с вами на любом компе, с которого вы решите подебажить разрабатываемый сайт.
Saying thanks: http://drupal.org/node/1941880
0 notes