Еще один сайт на 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 с первого взгляда, но возможности использовать на практике до сих пор не было. Начинающий смолтокер =)
Есть вопрос. Сайт (по крайней мере, на первый взгляд) выглядит в основном контентным. Seaside сам по себе ориентирован на веб-приложения --- в смысле на "динамику". То есть, делать статическое содержимое на чистом Seaside, по идее, достаточно трудоемкая задача. Есть такая проблема? И если да, то как она решалась? Использовался/рассматривался ли Pier? Или было сделано что-то свое для ввода и управления?
2 февраля 2010 г. 5:59 пользователь Iwannt <iwa...@gmail.com> написал:
> Еще один сайт на 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 с первого взгляда, но возможности > использовать на практике до сих пор не было. Начинающий смолтокер =)
Pier не задействовал. Вся динамика на стороне управления сайтом - редактирование блогов/страниц/пользователей и т.п. Еще в мобильной версии (/m, в разработке, на неделе руки дотянутся закончить XD).
Что касается фронта, то динамики в привычном дли Seaside смысле нет. URL, как можно видеть, без континуаций и сессий. Обработка путей производится в WAMyComponent>>initialRequest: и updateUrl: Весь фасад работает на одном компоненте с несколькими children.
Открывается пост в блоге, меняется путь с помощью WAAnchorTag>>addToPath: в дочернем компоненте, далее главный компонент перенаправляет на такой же путь (тут срабатывает WAComponent>>updateUrl:), но с новыми _s и _k переменными.
Теперь собственно то, что заставило меня отказаться от сохранения _s и _k переменных в путях, как это есть в Pier. Кто-то из посетителей открыл с главной страницы несколько статей подряд в разных вкладках. Далее прокомментировал статью в одной вкладке, а коммент добавился к статье из другой вкладки. Вот такой забавный баг.
Не могу представить, как это может в Pier-е проявиться... В пире ведь url состоит из статического пути (для каждого поста свой) и динамической части. Так что уйти другой статье коммент, вроде, не может...
...Хотя, я не понимаю, и как вообще могло произойти описанное. Урлы ссылаются на континуации в отношении "один к одному". И если с заданными значениями _k и _s связан конкретный контекст с конкретной статьей, то проблем быть не должно. Больше похоже на баг, и, скорее, на баг в приложении. Или я ошибаюсь?
2 февраля 2010 г. 12:34 пользователь Iwannt <iwa...@gmail.com> написал:
> Теперь собственно то, что заставило меня отказаться от сохранения _s > и _k переменных в путях, как это есть в Pier. Кто-то из посетителей > открыл с главной страницы несколько статей подряд в разных вкладках. > Далее прокомментировал статью в одной вкладке, а коммент добавился к > статье из другой вкладки. Вот такой забавный баг.
> Открывается пост в блоге, меняется путь с помощью > WAAnchorTag>>addToPath: в дочернем компоненте, далее главный компонент > перенаправляет на такой же путь (тут срабатывает > WAComponent>>updateUrl:), но с новыми _s и _k переменными.
> Теперь собственно то, что заставило меня отказаться от сохранения _s > и _k переменных в путях, как это есть в Pier. Кто-то из посетителей > открыл с главной страницы несколько статей подряд в разных вкладках. > Далее прокомментировал статью в одной вкладке, а коммент добавился к > статье из другой вкладки. Вот такой забавный баг.
Уверен проблема была не с "_s и _k переменных в путях", то есть не с континуациями. Континуации в сисайде как раз и применяются, чтобы таких багов не было и для этого ничего не нужно было программить.
Могу предположить что внутри вашего WAComponent был некий instance variable указывающий на пост, в который добавлять коммент. При открытии другого окна пользователем программа по каким-то причинам могла использовать тот же экземпляр вашего WAComponent и изменить instance variable c текущим постом. Ну а дальше, думаю, понятно
В точку! Теперь и я просек. Вот что значит здраво мыслить в свободное от авралов время :)
Комменты привязывались к блогу через переменную инстанции blog. Вот и все. Однако мой вариант решения тоже подействовал, однако теперь каждый раз новая сессия создается =(.
Вот сижу и думаю. У меня в главном компоненте есть переменная инстанции post и в дочернем компоненте (рендерящем статью) тоже есть post.
Открываю главную страницу в первой вкладке.
Теперь открываю во второй вкладке некую статью, и для текущей сессии (т.е. текущих инстанций главного и дочерних компонентов) присваиваются соответствующие статье значения post в компонентах.
Открываю из первой вкладки в третью другую статью. Для ЭТОЙ ЖЕ сессии меняются ТЕ ЖЕ переменные post. Теперь, если во второй вкладке добавить коммент, то он привяжется к статье из второй вкладки, т.к. post указывает на статью оттуда.
Получается, что приходится иметь ввиду такое вот "распараллеливание" на вкладки.
> Вот сижу и думаю. У меня в главном компоненте есть переменная > инстанции post и в дочернем компоненте (рендерящем статью) тоже есть > post.
> Открываю главную страницу в первой вкладке.
> Теперь открываю во второй вкладке некую статью, и для текущей сессии > (т.е. текущих инстанций главного и дочерних компонентов) присваиваются > соответствующие статье значения post в компонентах.
> Открываю из первой вкладки в третью другую статью. Для ЭТОЙ ЖЕ сессии > меняются ТЕ ЖЕ переменные post. Теперь, если во второй вкладке > добавить коммент, то он привяжется к статье из второй вкладки, т.к. > post указывает на статью оттуда.
> Получается, что приходится иметь ввиду такое вот "распараллеливание" > на вкладки.
> Получается, что приходится иметь ввиду такое вот "распараллеливание" > на вкладки.
Это всегда нужно иметь в виду когда создаешь веб-приложение. В десктопных приложениях такое поведение в принципе отсутствует. Сисайд с континуациями позволяет решать эту проблему булее просто и прозрачно
> Получается, что приходится иметь ввиду такое вот "распараллеливание" > на вкладки.
Это всегда нужно иметь в виду когда создаешь веб-приложение. В десктопных приложениях такое поведение в принципе отсутствует. Сисайд с континуациями позволяет решать эту проблему булее просто и прозрачно