На drupal.org интересно!

Так уж приключилось, что на drupal.ru мало обсуждают новости ядра и разработки. Может потому что основное обсуждение происходит на drupal.org и в скайп-чатах. Хочу кинуть один день (даже по факту - один час :) обсуждения в одном из скайп-чатов.

Логи:
----------------------------

среда, 10 октября 2012 г.

[22:47:17] Alexander Dubovskoy: в backbone тоже интересная движуха) http://drupal.org/node/1149866 . Вопрос хотим ли мы иметь удобный edit модуль и потенциально те же проблемы что и с jquery или нет.
[22:53:18] Pavel Makhrinsky: там дет ишуя пробегала чтоб добавлять стабильные версии js и помечать их, что даст возможность для ядерных модулей независить от желания остальных обновлять версии
[22:54:46] andypost2005: на самом деле с бакбон одна только трабла - в ядре нет ничего, что может использовать
[22:55:24] andypost2005: если бы добавили не саму либо, а например на ней переделали fieldUI - полагаю вопросов было бы меньше
[23:01:38] Alexander Dubovskoy: я жду пока появится кто-то кто скажет "а давайте выводить ВСЕ через backbone"...)
[23:01:48] Pavel Makhrinsky: а че
[23:01:55] Alexander Dubovskoy: первый есть)
[23:02:08] Alexander Dubovskoy: Многовато переписывать придется, Паш)
[23:02:17] Pavel Makhrinsky: я готов тебя послушать :)
[23:03:08] Alexander Dubovskoy: не, мне нравиться, я как-то работал с underscore, все имеет смысл и с точки зрения траффика для клиента и гибкости.
[23:12:14] andypost2005: Ну если ты можешь сделать краткий крешкурс - я готов что-нить сделать
[23:12:28] andypost2005: а самое главное - чем это удобнее/проще чем jQ
[23:13:15] andypost2005: Хотелось бы еще dealancer услышать по этому поводу
[23:23:11] Alexander Dubovskoy: поясню про сравнение с jq.
jq скорее создан для того чтобы оперировать объектами в dom - всякие манипуляции с элементами и кое-какие свои события. Ну и чуть упростить работу с ajax. бекбон же создан для того чтобы: 1) удобно гонять данные межды сервером-клиентом в json, с удобочитаемым кодом. 2) делать сборку страницы на стороне клиента через свой js шаблонизатор.

Допустим нам надо отрендерить ноду. Как это сейчас - на уровне php на сервере строиться весь html вывод страницы и весь отдается клиенту. Клиент переходит на страницу (у которой может быть та же html структура, но другие данные), он все равно грузит весь html.
JS-шаблонизатор отрисовывает все на клиенте. Мы отдаем клиенту 1 раз html-структуру в виде js-объекта (а в случае underscore даже не отдаем, а строим по запросу), а потом при переходе на другую страницу мы отдаем только меняющийся контент в json'е. Это и на порядок шустрее и меньше траффика.
[23:31:47] andypost2005: меня пугает сборка на клиенте:
1) скорость вывода больших объемов данных (таблицы например) будет очень медленно и зависеть от скорости клиентского компа (ререндер может сжирать много)
2) количество подзапросов к ядру - если страница делается не за один прием, может очень сказаться на серверной стороне
[23:33:20] whice: это все лучше цеплять на nodejs
[23:33:40] Alexander Dubovskoy: 1) скорость обработки js'а на всем старше ie7 сейчас такая, что позволяет играть в порт quake2 на js. Собственно из-за выйгрыша в скорости на ВСЕХ больших сервисах сейчас используется js-шаблонизация. От forsquare  (на бекбоне кстати) до  почты гугло/яндекса.
2) не знаю ничего про серверную часть :)
[23:34:04] whice: немного не в тему.. но с таким подходом надо менять архитектуру целиком.. от друпала мало что останется. проше на базе nodejs писать новый фреймворк
[23:34:42] Alexander Dubovskoy: 2whice: да, именно поэтому страшно начинать диалог про использование backbone в ядре. больно много работы)
[23:35:46] whice: было бы время - было бы интересно сделать порт идеи друпала на nodejs
[23:35:51] whice: именно идеи как фреймворка
[23:36:01] whice: с hook_ ориентацией
[23:36:21] whice: кстати я лично не особо в восторге от активного внедрения ООП в новые версии дру
[23:40:45] Alexander Dubovskoy: но тут надо заметить что это таки разные вещи. бекбон не трогает серверную часть вообще, это способ удобно собрать json и далее все рисовать на клиенте. и пофигу как и от чего мы этот json получили. народ вполне успешно ставил на серваке nodejs, и прикручивал backbone (через npm кажется бекбон вполне можно поставить). но в нашем случае можно вообще не трогать серверную часть. кому надо - напишет отдачу json в своем модуле и маленький js который будет отдаваться клиенту и решать что с этой инфой делать и как ее рисовать.
[23:45:05] andypost2005: whice, мы о разных вещах говорим... nodejs - серверная сторона
[23:45:42] andypost2005: 4kitchens последнее время как раз продвигают такую солянку о которой ты гвооришь
[23:46:27] andypost2005: а вот bachbone underscore createjs - это вещи фронта, клиентские тобишь
[23:47:58] andypost2005: на самом деле то, что сейчас в ядре8 происхоходит - релаьно должно снизить нагрузку, но так как еще не всё конвертировано на плагины мы наблюдаем тормоза - фактически 2 версии системы живут
[23:49:12] andypost2005: фактически сейчас поднимается старое ядро, потом инициализируется симфони и начинается гибридный вызов из хуков и плагинов
[23:49:33] Vadim Mirgorod: Привет
[23:49:37] Vadim Mirgorod: я здесь
[23:49:42] Alexander Dubovskoy: воот)
[23:49:53] Vadim Mirgorod: Саша хорошо объяснил что такое бб
[23:49:59] andypost2005: супер! Вадим, просвяти в возможном профите от backbone
[23:50:07] Vadim Mirgorod: только хочу отменить что шаблонизатор можно любой использовать
[23:50:09] Vadim Mirgorod: даже твиг
[23:50:29] andypost2005: а как на клиент приедет шаблоН?
[23:50:55] Vadim Mirgorod: зависит от реализации
[23:51:08] Vadim Mirgorod: скорее всего просто как файл
[23:51:27] andypost2005: catch: andypost: it's adding them to core in preparation for other patches. If those don't get in it'll be git rm
nod_: andypost: performance? It'll be used in the context of a 350kb lib next to it, that won't be the bottle neck anyway
nod_: andypost: the edit module is underway though
[23:51:27] Vadim Mirgorod: по хттп,
[23:51:30] Vadim Mirgorod: но способов много
[23:51:52] Vadim Mirgorod: можно даже в жс файл встроить
[23:52:03] Vadim Mirgorod: я конечно сторонник не старого способа и не способа с бб
[23:52:13] Vadim Mirgorod: т.к. это два хороший способа но для разных задач
[23:52:16] andypost2005: а второй момент, что количесво обращений к севреру увеличится?
[23:52:20] Alexander Dubovskoy: де-то я видел.... а. вот http://groups.drupal.org/node/232593
[23:52:25] Vadim Mirgorod: хорошо, чтобы друпал поддердживал и то и другое
[23:55:23] Vadim Mirgorod: окей, второй способ будет работать, правда там идея в том чтобы, бутсрапить данные т.е. не по ресту передавать а в страницу записывать
[23:55:27] Vadim Mirgorod: имхо
[23:55:31] Vadim Mirgorod: так то же можно
[23:56:09] Vadim Mirgorod: если говорить о приложении для мобильного, которое в phonegap оборачивается, то там rest лучше
[23:57:38] Vadim Mirgorod: в общем у меня есть такая идея:
[23:58:58] Vadim Mirgorod: *все это довольно сложно, надо подумать :)*
[23:59:06] whice: =)
четверг, 11 октября 2012 г.
[0:00:13] Vadim Mirgorod: предположим друпал нам выдает все красиво в жейсоне через рест или бутстраппинг
[0:01:06] Vadim Mirgorod: а в браузере собирается страничка
[0:01:32] Vadim Mirgorod: вопрос: что происходит с form-api?
[0:04:04] Vadim Mirgorod: и что выдают калбеки описанные в хук меню?
[0:08:24] Alexander Dubovskoy: через delegateEvents в случае форм это пустить не получиться?
[0:09:45] Vadim Mirgorod: что именно? обработчики нажатий кнопок?
[0:09:47] Vadim Mirgorod: можно
[0:10:29] Alexander Dubovskoy: ну, теоретически (не работал - так что может вопросы глупые, пальцем в небо), будет проще с #ajax у форм
[0:10:30] Vadim Mirgorod: я о том где форме собираться - очевидно на клиенте
[0:10:38] Alexander Dubovskoy: да, на клиенте.
[0:10:58] Vadim Mirgorod: но тогда форму надо передавать в виде структуру по json
[0:10:58] Alexander Dubovskoy: бугага. я только сейчас понял вопрос)
[0:11:14] Vadim Mirgorod: он затрагивал и тот вопрос то же :)
[0:11:23] Vadim Mirgorod: такой абстрактный
[0:11:32] Alexander Dubovskoy: куда ни плюнь - засада.)
[0:13:18] Vadim Mirgorod: В общем у приложения получается два уровня
[0:13:30] Vadim Mirgorod: веб сервис и клиентская надстройка
[0:13:42] Vadim Mirgorod: причем хорошо бы и так, чтобы поисковики счастливы были
[0:14:33] Vadim Mirgorod: может пора начать все сначала
[0:14:35] Vadim Mirgorod: ну его друпал?
[0:15:03] Vadim Mirgorod: еще и адмика и все остальное
[0:15:05] Alexander Dubovskoy: ))
[0:15:17] Alexander Dubovskoy: давай на руби, а?
[0:15:34] Vadim Mirgorod: я руби не знаю :-/
[0:15:38] andypost2005: [0:01:31] Vadim Mirgorod:  что происходит с form-api?

<<< это отдельный плагин(бандл) живет себе по требованию и интсатинируется по требованию чреез контейнер
[0:15:39] Vadim Mirgorod: немного питона
[0:15:43] Alexander Dubovskoy: как с версткой проще будет. gem install sass compass susy и все...
[0:17:17] andypost2005: [0:04:02] Vadim Mirgorod:  что выдают калбеки описанные в хук меню?

<<< прописаные в плагине-роутере, а нынче еще проще http://drupal.org/node/1734540
[0:18:34] andypost2005: со второны ядра всё готово к таким обработкам, осталось лишь решить с правами к роутерам
[0:18:48] Vadim Mirgorod: отстал я от жизни
[0:19:01] andypost2005: ну и избавиться от зависимости хуков, они теперь через декорацию навешиваются к другим плагинам
[0:21:22] Andriy Podanenko: > [Wednesday, 10 October 2012 22:23:14 Alexander Dubovskoy] 1) удобно гонять данные межды сервером-клиентом в json, с удобочитаемым кодом. 2) делать сборку страницы на стороне клиента через свой js шаблонизатор.

для того, чтобы он был принят в ядро - осталось просто обозначить места в существующем ядре, в которых мы нуждаемся именно этого
Банально описать пункты с указателями на места и с аргументами.
Остальное - дело follow-up
не обязательно оно войдет в восьмерку - никто же не мешает его притянуть уже в девятку, но если в єтом есть необходимость, то почему бы и не да?
[0:22:39] Andriy Podanenko: > [Wednesday, 10 October 2012 22:33:43 Alexander Dubovskoy] не знаю ничего про серверную часть :)
а ты спроси, что нужно знать ;) ответы будут
[0:23:39] Andriy Podanenko: > [Wednesday, 10 October 2012 22:34:44 Alexander Dubovskoy] именно поэтому страшно начинать диалог про использование backbone в ядре. больно много работы)
не останавливай себя страхом множества работы - то, о чем ты говоришь - имеет большой смысл и правда позволит уменьшить нагрузку на серверную часть. Поддержу тебя в описании этого в качестве ишью
[0:24:00] Alexander Dubovskoy: таааак. )
[0:24:17] Andriy Podanenko: > [Wednesday, 10 October 2012 22:36:23 whice (it-patrol) gor] кстати я лично не особо в восторге от активного внедрения ООП в новые версии дру
чего? это реально качественнее и более предсказуемее даже с точки зрения серверной части ;)
[0:25:17] andypost2005: а мне нравится еще и юнит-тестируемостью
[0:25:49] Andriy Podanenko: > [Wednesday, 10 October 2012 22:52:23 Andy Postnikov] а второй момент, что количесво обращений к севреру увеличится?
ну это вроде ж не проблема с keepalive
[0:26:29] Andriy Podanenko: > [Wednesday, 10 October 2012 23:04:05 Vadim Mirgorod] и что выдают калбеки описанные в хук меню?
забудь про хук меню ;)
[0:28:13] Andriy Podanenko: > [Wednesday, 10 October 2012 23:25:19 Andy Postnikov]  а мне нравится еще и юнит-тестируемостью
ну это ж один из первых пунктов для чего вообще ООП ;)
[0:28:41] Andriy Podanenko: 12 человек, а такой чат устроили крутой
[0:29:26] andypost2005: а наличие вьюзов в ядре еще даст 2 дополнительных слоя кеша: запросы и рендер
[0:29:57] andypost2005: а вот с формапи... к сожалению до 9ки ;(
[0:31:06] andypost2005: а вот кстати монга красиво вписывается в кеширование строк и дисплеев вьюза
[0:33:00] andypost2005: в идеале - статично хранимые роуты (например htaccess) вызывают через кеш-бутстрап и данные и дальше передают шаблонизатору (или выдают напрямую в клиента)
[0:34:27] andypost2005: [0:25:47] Andriy Podanenko: с keepalive

<<< если это поддерживается клиентом - вообще песня! websockets++
[0:36:49] Andriy Podanenko: > [Wednesday, 10 October 2012 23:34:29 Andy Postnikov] если это поддерживается клиентом - вообще песня
так кажется все браузеры это сейчас держат.. разве нет?
[0:37:00] Vadim Mirgorod: бекбон идеально заточен для общения по РЕСТу с сервером, в случае рендеринга данных я это хорошо представляю, получает коллекции и модельки по рест, затем рендерит, если пользователь что-то делает с УИ, что-то добавляет, то ББ сохраняет объекты опять же по рест. В ББ есть свой раутер, но его можно отключить.
[0:38:33] Vadim Mirgorod: вопрос к примеру такой как на базе ББ сделать друпаловскую админку?
[0:39:10] Vadim Mirgorod: в общем по ресту передовать можно любые структуры
[0:39:12] andypost2005: сейчас будет проще - у каждой сущности (контент и конфиг) есть контроллер форм и контроллер списков
[0:40:38] Vadim Mirgorod: в общем можно сделать
[0:40:59] andypost2005: очень рекомендую посмотреть на патч http://drupal.org/node/1588422#comment-6576564
большой но всё понятно на простом примере
[0:41:44] andypost2005: добавится еще 2 контроллера - персональная контактная форма и sitewide
[0:42:28] Andriy Podanenko: много удаляется... но добавляется в полтора раза больше
[0:42:36] Alexander Dubovskoy: "Andriy: ..так кажется все браузеры это сейчас держат.. разве нет?.."
IE начиная с 8ки.
[0:43:21] Alexander Dubovskoy: у 6-7 есть проблемы с backbone.history, которая собстно хранит кучу всего до отправки на сервер.
[0:43:54] Andriy Podanenko: > [Wednesday, 10 October 2012 23:42:38 Alexander Dubovskoy] IE начиная с 8ки.
семерке еще недолго жить... сейчас все хотят 64 битную систему - память дешевая, а ИЕ7 - он в основном на 32битках, что уже корчится в агонии умирания
[0:43:56] andypost2005: http://drupalcode.org/project/drupal.git/tree/refs/heads/8.x:/core/modules/user/lib/Drupal/user вот пример форм у пользователя
[0:44:45] andypost2005: [0:42:26] Andriy Podanenko: добавляется в полтора раза больше

<<< ты код в читаемости или байтах измеряешь?
[0:45:15] Andriy Podanenko: "-  // Insert a default contact category.
-  db_insert('contact')
-    ->fields(array(
-      'category' => 'Website feedback',
-      'recipients' => $site_mail,
-      'selected' => 1,
-      'reply' => '',
-    ))
-    ->execute();
+  config('contact.category.feedback')->set('recipients', array($site_mail))->save();"

это прекрасно
[0:45:27] Andriy Podanenko: > [Wednesday, 10 October 2012 23:44:47 Andy Postnikov] ты код в читаемости или байтах измеряешь?

да просто дредитором ;)
[0:46:23] andypost2005: 9 files changed, 505 insertions(+), 377 deletions(-)
[0:47:31] Vadim Mirgorod: все выглядит так красивинько, ООПшно :)
[0:47:39] Andriy Podanenko: АГА
[0:49:30] Andriy Podanenko: Сообщение удалено.
[0:49:50] Andriy Podanenko: Сообщение удалено.
[0:50:38] Alexander Dubovskoy: небольшой оффтопик. Люди, а можно мне лог чата выложить? А то у мну соседний чат - drupal.edu, где люди жалуются про отсутствие русскоязычных материалов о разработке, d8 и вообще. на d.ru таких обсуждений как в скайпе не случается, многим может быть интересно.
[0:51:43] Andriy Podanenko: > [Wednesday, 10 October 2012 23:50:40 Alexander Dubovskoy] А то у мну соседний чат - drupal.edu,

вкинь меня туда
[0:51:49] andypost2005: конечно... вот в довесок http://groups.drupal.org/node/260738
 

Партнерская программа

Кстати, для интересующихся технологиями, у нас есть партнерская программа. Если по вашей специализации:

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

Тогда, добро пожаловать в партнерку :)