Посоветуйте грамотный подход при реализации веб-сайта

Тема в разделе "Lotus - Программирование", создана пользователем Gandliar, 5 янв 2011.

  1. Gandliar

    Gandliar Well-Known Member

    Регистрация:
    16 фев 2004
    Сообщения:
    222
    Симпатии:
    0
    Привет!

    На веб-страничке надо отобразить два блока "Популярное" и "Новое" по 10 документов в каждом

    Документы соответственно отсортированы по популярности и по дате.

    1. 2 вида на веб-страницу вставить нельзя
    2. @dbcolumn имеет ограничение 64кб

    Как лучше реализовать отображение двух блоков? Посоветуйте пожалуйста подход и поясните почему именно он. Заранее благодарю.

    Еще вот что, документы разбиты на категории и для каждой категории надо популярное и новое. каждый документ относится только к одной категории.
     
  2. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.046
    Симпатии:
    18
    это смотря как :discard:
     
  3. alik86

    alik86 Lotus team
    Lotus team

    Регистрация:
    20 ноя 2008
    Сообщения:
    465
    Симпатии:
    0
    Почему нельзя?
    Framesets разве в вэбе не работают? Да и в Xpage вроде как можно.
    P.S. Ах, да, я с лотусиным вэбом практически не знаком... :discard:
     
  4. Gandliar

    Gandliar Well-Known Member

    Регистрация:
    16 фев 2004
    Сообщения:
    222
    Симпатии:
    0
    фрэймы совсем не подходят в данном случае

    Добавлено:
    Оо

    без фрэймов можно? Просба рассказать как.
     
  5. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.046
    Симпатии:
    18
    Gandliar
    если хочешь действительно ГРАМОТНО
    то тебе нужно подсовывать ДОК - в котором уже сделаны все результаты и итоги, док лучше набить агентиком, тогда доминохе нужно будет лишь показывать контекст дока, что менее затратно, чем рефрешить виды и показывать их контент...
     
  6. Gandliar

    Gandliar Well-Known Member

    Регистрация:
    16 фев 2004
    Сообщения:
    222
    Симпатии:
    0
    Спасибо, видимо так и поступлю.
     
  7. duchan

    duchan Well-Known Member

    Регистрация:
    20 сен 2006
    Сообщения:
    105
    Симпатии:
    2
    если 8.5 - лучше xPages...
    ну или 2 вычисляемых для показа поля, где получаешь свои 10 доктов, а затем формируешь HTML можно с CSSом так как хочешь это видеть, ну и поставь отображать как HTML...
     
  8. turumbay

    Регистрация:
    13 мар 2009
    Сообщения:
    625
    Симпатии:
    2
    +1. Не надо мешать доминошный головняк и веб.
    Делаем статическую страницу myMegaPage.html
    Код (Text):
    <!doctype html ...>
    ...
    <body>
    <ul class="last">
    </ul>
    <ul class="popular">
    </ul>
    ...
    </body>
    ...
    на onload вешаем два ajax запроса к вьюхам типа lastDocs?readViewEntries&outputFormat=json&count=10 , popularDocs?readViewEntries&outputFormat=json&count=10
    (если одна категоризованная вьюха, добавляем в параметры запроса &RestrictToCategory=... ). разбираем json, набиваем соответствующие списки.
    дальше при помощи css отрисовываем как хочеца.
    Жуткие readViewEntries и пр. можно убрать при помощи Web Rules: будут вызовы типа /lastDocs&count=10. Т.е. можно полностью скрыть факт использования domino. Т.о. при желании всегда можно поменять бэкенд не меняя логики сайта. Это удобно для отладки страницы - вместо обращений к домине можно юзать стабы из файловой системы.
    плюсы: получаем чистый html+js+css. Т.е. писать(отлаживаца, тестироваца) можно в любой IDE. От разработчика клиентской части не требуется знание domino.
    На jquery это делаеца в несколько строк:
    Код (Text):
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.4.4.min.js"></script>
    <script type="text/javascript">
    $(function(){
    $.getJSON('/lastDocs&count=10', function(data) {
    $.each(data.viewentry, function(i,viewentry){
    $(".last").append( $("<li></li>").html( выдираем данные из entry) );
    });
    })
    })
    });
    </script>
     
  9. NetWood

    NetWood Lotus team
    Lotus team

    Регистрация:
    17 апр 2008
    Сообщения:
    308
    Симпатии:
    0
    А есть у Вас пример простейшего шаблона с аяксом. Например отправка запроса из поля - получение данных на этой же странице НЕ в редактируемом поле, то есть не так. Там есть поле Result(s):, вот как сделать его контентным? Шаблон. Я несколько притормаживаю с этой техникой. Где-то не хватает запятой :)

    Хотя по сабджу я с Тохой согласен. Слепил страничку статиком и всех делов. Но я лично так ленюсь. Хватает и вычисляемых полей и одной вьюхи. Контент там не бывает более 64К в одном поле, а если и бывает, то такие страницы не нужны - слишком медленно открываться будут, да и смысл такого контента...
     
  10. turumbay

    Регистрация:
    13 мар 2009
    Сообщения:
    625
    Симпатии:
    2
    Честно говоря, не понял вопроса. Особенно про нередактируемое поле. $.get -> получили данные -> дальше делаем с ними что хотим. можем хранить в объектах js, можем отрисовывать на странице...
    Простого шаблона нет, но потрогать можно примерно так:
    Делаем пустую базу, набиваем документами, строим вьюху myView. Далее, кладем в ресурсы базы html файл примерно такого содержания:
    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">helloLotusWorld.html</div></div><div class="sp-body"><div class="sp-content">
    Код (Text):
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
    <title>Title</title>
    </head>
    <body>
    <ul class="viewcontent">
    </ul>
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.4.4.min.js"></script>
    <script type="text/javascript">
    //<![CDATA[
    $(function(){
    $.getJSON('myView?readViewEntries&outputFormat=json&count=10', function(data) {
    $.each(data.viewentry, function(i,viewentry){
    $(".viewcontent").append( $("<li></li>").html( viewentry.entrydata[0].text[0]) );
    });
    })
    });
    //]]>
    </script>
    </body>
    </html>
    Открываем http://server/db/helloLotusWorld.html и смотрим результат.
    Тот же код можно повесить на кнопку: $("#myButtonID").click( function(){ /*$.get .... */ })

    Домино в данном случае выступает как веб-сервер для статики( html, js, css ) и хранилище данных. Причем эти функции строго разделены.
    Т.е. для создания клиентской части приложения, разработчику нет необходимости знать специфику lotus. Архитектура понятна любому веб-разработчику, а не только лотусоводам.
    Это конечно слегка идеализировано, но в общем все примерно так и есть. Статику можно ваять в любой ide и заливать в БД через webdav. При этом 99% времени клиент lotus вообще не запущен на машине разработчика.

    P.S. Если мне не изменяет память, то outpuformat=json доступен, начиная с 7.0.2.
     
  11. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    в реалиях современной домины - луча не jquery, а dojo
     
  12. dmytro.pastovenskyi

    dmytro.pastovenskyi Гость

    я бы сделал как ToxaRat предложил.

    2 лукапа при каждом открытии странички - достаточно затратно, делай это либо шедульно (компут виз форм) либо как более логично исходя из бизнес логики приложения (рефреш при сейве новости-статьи). достаточно одноразово выполнить лукапы и сохранить результаты в документе в виде хтмл и все - на вывод в мир.

    аякс - это все хорошо и т.д. но если у тебя сайт внешний и тебе интересн инкам юзеров, то гугл такое не схавает соотв. для PR - плохо.
    делать лукапи - понижать скорость, плохо и для юзеров и для гугл-СЕО.
     
  13. turumbay

    Регистрация:
    13 мар 2009
    Сообщения:
    625
    Симпатии:
    2
    это типичный лотусовый подход. оно работает, но требует от разработчика знания веб и домино.
    отделение данных от представления позволяет вести "классическую" веб-разработку.
    Кроме того в варианте с тремя GET запросами можно получить профит от правильной настройки кэша, отделяя статику от динамики.
    Т.е. типа сама страница cc:max-age 1 year,
    popularDocs cc:max-age 1 day
    lastDocs cc:must-revalidate
    в идеальном случае кэш можно настроить так, что в большинство запросов вообще не будет обслуживаться сервером...

    внешний сайт на домино - это для фанатов или мазохистов. даже интертраст отказался от доминошного сайта(хотя форум там был авторитетный)
    seo - отдельная тема. аякс сайты могут нормально индексироваца. в гугле полно информации. простейший в данном случае путь - две ссылки на вьюхи, которые в onload будут заменены на содержимое видов.

    а вообще тема достойная. я бы с удовольствием включился в холивар, посвященный архитектуре веб-приложений на домине. :)
     
  14. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    Интертраст принял странное решение...
    перевод на пых, с домины...
    куда логичнее был бы томкат (как апсервер) с жсп
    на кеширование - можно установить фронтэнд сервер (нжинкс тот же)
     
  15. K-Fire

    K-Fire Гость

    Вообще-то совершенно логичное и верное решение. Для опытного пхп разработчика сделать сайт будет раза в 1.5-2 быстрее чем на яве. Работать под нагрузкой будет гораздо быстрее.

    Имхо только 1 вариант для веба когда вам нужно выбрать яву а не пхп - это большие веб-порталы с серьезной серверной логикой. Сайты-визитки (даже сложные) делать на яве нет никакого смысла.
     
  16. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    K-Fire я в корне не согласен...
    -на пыхе не легче делать сайты (просто было модно)
    -язык требует внимательности и большого опыта - иначе дыры неизбежны
    -быстрее сайт не будет (да и с чего бы) - пых интрепретируемый язык, там и там есть "ускорители", есть результаты, в кот. пых выглядит ущербно http://blog.dhananjaynene.com/2008/07/perf...n-jruby-groovy/
    -апач не быстрее и не устойчивее к нагрузкам чем тот же томкат (хотя пых живет и на др. хттп движках)
    -в домине джава "родная" и даже есть интеграция в сервлетманаерами
    -выбор фрэймворков у пыха беднее http://en.wikipedia.org/wiki/Comparison_of...tion_frameworks
    -у пыха байдизайн плохое "разделение" кода (просто он так замышлялся, теперь это пытаются править)
    ну и вот такая картинка:
    http://shootout.alioth.debian.org/u32/benc...a&lang2=php
    вывод - если оборудование старое (или слабое - по памяти) и денег жалко - можно ставить пых на "лёгкий" двиг (lighttpd, nginx)
    в России (единственно) много "кодеров" (особливо студентов) для пыха - дешевизна раб-силы (НО не качество)
     
  17. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.046
    Симпатии:
    18
    загляните сюды http://lotus.net.ua/
    обратите внимание как я сделал RSS/Atom - http://lotus.net.ua/rss/news.xml
    формирую агентом этот файл, дальше веб-домино его кешит и всё, простенько и эффективненько
     
  18. turumbay

    Регистрация:
    13 мар 2009
    Сообщения:
    625
    Симпатии:
    2
    гм. насчет кэша похоже вы заблуждаетесь... сервер не возвращает для http://lotus.net.ua/rss/news.xml заголовков cache-control (СС). Поэтому запрос всегда обслуживаеца сервером. Каждый get гонит 46Kb трафика от сервера на клиента. Добавьте заголовки CC:max-age = интервал запуска агента и ETag и получите:
    - разгрузку вычислительных мощностей сервера
    - экономию исходящего трафика на сервере
    - экономию входящего на клиенте.
    Кэширование atom feeds - одна из ключевых фич, благодаря которой формат популярен.
     
Загрузка...
Похожие Темы - Посоветуйте грамотный подход
  1. KhNarg
    Ответов:
    5
    Просмотров:
    889
  2. IllusionYes
    Ответов:
    0
    Просмотров:
    986
  3. megobite
    Ответов:
    3
    Просмотров:
    1.487
  4. Shandrik
    Ответов:
    0
    Просмотров:
    1.352
  5. RadoXX
    Ответов:
    2
    Просмотров:
    1.436

Поделиться этой страницей