Еще один сайт на Seaside & Pharo

13 просмотров
Перейти к первому непрочитанному сообщению

Iwannt

не прочитано,
1 февр. 2010 г., 21:59:4701.02.2010
– Russian Smalltalk User Group
Еще один сайт на Seaside & Pharo - Православный Сахалин

С нового года воссоздан сайт Южно-Сахалинской и Курильской епархии
РПЦ , который теперь располагается по адресу http://pravosakh.ru. С
радостью сообщаю о том, что сайт работает на Seaside 2.8.4 & Pharo 0.1
(один из готовых образов на Seaside.st). Pharo VM запущена на
собственном сервере под управлением Windows XP (32bit). Очень надеюсь,
что в скором времени удастся обзавестись простеньким веб-сервером,
куда я планирую поставить Linux.

Кратко о самом сайте: целиком приложение на Seaside. Разрабатывается
инкриментально, или, правильнее сказать, рывками, поскольку это не
основная работа у меня. Персистентность в образе (возможно, только
пока), как у DdableDB. С заказчиком отношения очень доверительные,
относительно выбора в пользу Seaside&Pharo никаких претензий, полный
простор =)

Кратко обо мне: Травкин Иван, аспирант по педагогике в СахГУ (диплом
по учительской специальности), немного преподаю математику, пытаюсь
руководить студ. науч. обществом в нашем универе (http://shosakhgu.ru)
и мечтаю создать студенческую секту Smalltalk (XDDD). Восхищаюсь
Smalltalk, полюбил Seaside с первого взгляда, но возможности
использовать на практике до сих пор не было. Начинающий смолтокер =)

Dennis Schetinin

не прочитано,
1 февр. 2010 г., 23:00:1601.02.2010
– su...@googlegroups.com
Есть вопрос. Сайт (по крайней мере, на первый взгляд) выглядит в основном контентным. Seaside сам по себе ориентирован на веб-приложения --- в смысле на "динамику". То есть, делать статическое содержимое на чистом Seaside, по идее, достаточно трудоемкая задача. Есть такая проблема? И если да, то как она решалась? Использовался/рассматривался ли Pier? Или было сделано что-то свое для ввода и управления?

2 февраля 2010 г. 5:59 пользователь Iwannt <iwa...@gmail.com> написал:



--
Dennis Schetinin

Iwannt

не прочитано,
2 февр. 2010 г., 04:22:1402.02.2010
– Russian Smalltalk User Group
Pier не задействовал. Вся динамика на стороне управления сайтом -
редактирование блогов/страниц/пользователей и т.п. Еще в мобильной
версии (/m, в разработке, на неделе руки дотянутся закончить XD).

Что касается фронта, то динамики в привычном дли Seaside смысле нет.
URL, как можно видеть, без континуаций и сессий. Обработка путей
производится в WAMyComponent>>initialRequest: и updateUrl:
Весь фасад работает на одном компоненте с несколькими children.

Iwannt

не прочитано,
2 февр. 2010 г., 04:34:1502.02.2010
– Russian Smalltalk User Group
На ранних порах столкнулся с такой проблемой.

Открывается пост в блоге, меняется путь с помощью
WAAnchorTag>>addToPath: в дочернем компоненте, далее главный компонент
перенаправляет на такой же путь (тут срабатывает
WAComponent>>updateUrl:), но с новыми _s и _k переменными.

Теперь собственно то, что заставило меня отказаться от сохранения _s
и _k переменных в путях, как это есть в Pier. Кто-то из посетителей
открыл с главной страницы несколько статей подряд в разных вкладках.
Далее прокомментировал статью в одной вкладке, а коммент добавился к
статье из другой вкладки. Вот такой забавный баг.

Dennis Schetinin

не прочитано,
2 февр. 2010 г., 05:20:2402.02.2010
– su...@googlegroups.com
Не могу представить, как это может в Pier-е проявиться... В пире ведь url состоит из статического пути (для каждого поста свой) и динамической части. Так что уйти другой статье коммент, вроде, не может...

...Хотя, я не понимаю, и как вообще могло произойти описанное. Урлы ссылаются на континуации в отношении "один к одному". И если с заданными значениями _k и _s связан конкретный контекст с конкретной статьей, то проблем быть не должно. Больше похоже на баг, и, скорее, на баг в приложении. Или я ошибаюсь?

2 февраля 2010 г. 12:34 пользователь Iwannt <iwa...@gmail.com> написал:
Теперь собственно то, что заставило меня отказаться от сохранения  _s
и _k переменных в путях, как это есть в Pier. Кто-то из посетителей
открыл с главной страницы несколько статей подряд в разных вкладках.
Далее прокомментировал статью в одной вкладке, а коммент добавился к
статье из другой вкладки. Вот такой забавный баг.



--
Dennis Schetinin

Denis Kudriashov

не прочитано,
2 февр. 2010 г., 05:22:0702.02.2010
– su...@googlegroups.com
Уверен проблема была не с "_s и _k переменных в путях", то есть не с континуациями. Континуации в сисайде как раз и применяются, чтобы таких багов не было и для этого ничего не нужно было программить.

Могу предположить что внутри вашего WAComponent был некий instance variable указывающий на пост, в который добавлять коммент. При открытии другого окна пользователем программа по каким-то причинам могла использовать тот же экземпляр вашего WAComponent и изменить instance variable c текущим постом. Ну а дальше, думаю, понятно

Iwannt

не прочитано,
2 февр. 2010 г., 05:57:3602.02.2010
– Russian Smalltalk User Group
В точку! Теперь и я просек. Вот что значит здраво мыслить в свободное
от авралов время :)

Комменты привязывались к блогу через переменную инстанции blog. Вот и
все. Однако мой вариант решения тоже подействовал, однако теперь
каждый раз новая сессия создается =(.

Iwannt

не прочитано,
2 февр. 2010 г., 06:15:4502.02.2010
– Russian Smalltalk User Group
Вот сижу и думаю. У меня в главном компоненте есть переменная
инстанции post и в дочернем компоненте (рендерящем статью) тоже есть
post.

Открываю главную страницу в первой вкладке.

Теперь открываю во второй вкладке некую статью, и для текущей сессии
(т.е. текущих инстанций главного и дочерних компонентов) присваиваются
соответствующие статье значения post в компонентах.

Открываю из первой вкладки в третью другую статью. Для ЭТОЙ ЖЕ сессии
меняются ТЕ ЖЕ переменные post. Теперь, если во второй вкладке
добавить коммент, то он привяжется к статье из второй вкладки, т.к.
post указывает на статью оттуда.

Получается, что приходится иметь ввиду такое вот "распараллеливание"
на вкладки.

Dennis Schetinin

не прочитано,
2 февр. 2010 г., 10:47:5202.02.2010
– su...@googlegroups.com
Вопрос: используется ли метод #states в компонентах --- включено ли туда их состояние? Суть того, что (вероятно) происходит и как с этим бороться описана здесь: http://book.seaside.st/book/components/calling/back-button.

2 февраля 2010 г. 14:15 пользователь Iwannt <iwa...@gmail.com> написал:



--
Dennis Schetinin

Denis Kudriashov

не прочитано,
2 февр. 2010 г., 10:55:5102.02.2010
– su...@googlegroups.com
Получается, что приходится иметь ввиду такое вот "распараллеливание"
на вкладки.

Это всегда нужно иметь в виду когда создаешь веб-приложение. В десктопных приложениях такое поведение в принципе отсутствует.
Сисайд с континуациями позволяет решать эту проблему булее просто и прозрачно

Denis Kudriashov

не прочитано,
2 февр. 2010 г., 10:56:5902.02.2010
– su...@googlegroups.com
Получается, что приходится иметь ввиду такое вот "распараллеливание"
на вкладки.

Ответить всем
Отправить сообщение автору
Переслать
0 новых сообщений