Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 16 17 18 19 20 21 22 [23] 24 25   вперед  Ctrl
 Re: Что такое серверный рендеринг  [new]
mayton
Member

Откуда: loopback
Сообщений: 46531
Ваде надо было показать Intersystems Cache.

Там как раз (в 2000е еще было) интеграция БД и веб сервера была нативная.
10 апр 20, 10:24    [22113994]     Ответить | Цитировать Сообщить модератору
 Re: Что такое серверный рендеринг  [new]
mad_nazgul
Member

Откуда:
Сообщений: 5288
mayton
Ваде надо было показать Intersystems Cache.

Там как раз (в 2000е еще было) интеграция БД и веб сервера была нативная.


Зачем заниматься некромантией, когда есть Oracle :-)
10 апр 20, 12:33    [22114090]     Ответить | Цитировать Сообщить модератору
 Re: Что такое серверный рендеринг  [new]
mayton
Member

Откуда: loopback
Сообщений: 46531
Жива. Вроде. https://ru.wikipedia.org/wiki/Cache

Я в 2000х чуть не стал разработчиком Cache. Ну по крайней мере купил книжку и готовился к собеседованию.
Уже была под меня позиция. Но... повезло.
10 апр 20, 12:43    [22114095]     Ответить | Цитировать Сообщить модератору
 Re: Что такое серверный рендеринг  [new]
hVostt
Member

Откуда:
Сообщений: 17476
mayton
Ваде надо было показать Intersystems Cache.


Ваде лучше ничего не показывать :)
10 апр 20, 15:22    [22114203]     Ответить | Цитировать Сообщить модератору
 Re: Что такое серверный рендеринг  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 17735
как такое на js заменить на код в java
// плоский список в дерево
function toTree(items, parentId) {
  return items
    .filter(p => p.id_parent == parentId)
    .map(p => Object.assign({
    	items: toTree(items, p.id)
    }, p));
}

function escapeHtml(unsafe) {
    return unsafe
         .replace(/&/g, "&")
         .replace(/</g, "&lt;")
         .replace(/>/g, "&gt;")
         .replace(/"/g, "&quot;")
         .replace(/'/g, "&#039;");
 }

function treeToHtml(items) {
  return items
    ? "<ul>"
      + items
        	.sort((a, b) => a.order - b.order)
        	.map(p => "<li>" + escapeHtml(p.name) + treeToHtml(p.items) + "</li>")
          .join('')
      + "</ul>"
    : "";
}

document.write(treeToHtml(toTree(getDataItems(), null)));

т.е. получить необходимую строку
что-то у меня не получается...
12 апр 20, 13:49    [22114953]     Ответить | Цитировать Сообщить модератору
 Re: Что такое серверный рендеринг  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 17735
вообще реально это сформировать на java?
13 апр 20, 19:26    [22115609]     Ответить | Цитировать Сообщить модератору
 Re: Что такое серверный рендеринг  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 4832
вадя,
Конкретнее.
Разговариваешь как домохозяйка или эллочка людоедка:
"такое", "это", "что то не получается"
14 апр 20, 07:23    [22115753]     Ответить | Цитировать Сообщить модератору
 Re: Что такое серверный рендеринг  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 17735
PetroNotC Sharp
Конкретнее.
есть таблица - "дерево"
"id""id_parent""order""name"
1null1"1_1"
2null2"1_2"
4null3"ffff"
511"1.2"
652"1.2.3_2"
751"1.2.3_1"
821"1"
12null6"33"
1341"rrr"
1553"1.2.3_3"
17null4"5555555'5'3"
24130"676767677-----"
29241"oooooooooo"
30291"ooooooooooo"
31243"ooooooooooooo"
32311"5555"
33null5"еее"
34null7"ffgfgfgf----""-""-------"

в итоге надо получить такую структуру
    <ul class="treeCSS" id="ul_tree">
    <li data-lev="1" data-order="1" data-p_id="0" data-id="1"><span>1_1</span>
      <ul>
        <li data-lev="2" data-order="1" data-p_id="1" data-id="5"><span>1.2</span>
          <ul>
            <li data-lev="3" data-order="1" data-p_id="5" data-id="7"><span>1.2.3_1</span>
            <li data-lev="3" data-order="2" data-p_id="5" data-id="6"><span>1.2.3_2</span>
            <li data-lev="3" data-order="3" data-p_id="5" data-id="15"><span>1.2.3_3</span>
          </ul>
      </ul>
    <li data-lev="1" data-order="2" data-p_id="0" data-id="2"><span>1_2</span>
      <ul>
        <li data-lev="2" data-order="1" data-p_id="2" data-id="8"><span>1</span>
      </ul>
    <li data-lev="1" data-order="3" data-p_id="0" data-id="4"><span>ffff</span>
      <ul>
        <li data-lev="2" data-order="1" data-p_id="4" data-id="13"><span>rrr</span>
          <ul>
            <li data-lev="3" data-order="0" data-p_id="13" data-id="24"><span>676767677-----</span>
              <ul>
                <li data-lev="4" data-order="1" data-p_id="24" data-id="29"><span>oooooooooo</span>
                  <ul>
                    <li data-lev="5" data-order="1" data-p_id="29" data-id="30"><span>ooooooooooo</span>
                  </ul>
                <li data-lev="4" data-order="3" data-p_id="24" data-id="31"><span>ooooooooooooo</span>
                  <ul>
                    <li data-lev="5" data-order="1" data-p_id="31" data-id="32"><span>5555</span>
                  </ul>
              </ul>
          </ul>
      </ul>
    <li data-lev="1" data-order="4" data-p_id="0" data-id="17"><span>5555555'5'3</span>
    <li data-lev="1" data-order="5" data-p_id="0" data-id="33"><span>еее</span>
    <li data-lev="1" data-order="6" data-p_id="0" data-id="12"><span>33</span>
    <li data-lev="1" data-order="7" data-p_id="0" data-id="34"><span>ffgfgfgf----"-"-------</span>
  </ul>


проверить результат можно тут https://jsfiddle.net/qbua0v92/1/ заменив содержимое <div id="div_tree" data-bind=""> на полученный результат.
стримы, шаблоны - всё принимается.

Сообщение было отредактировано: 14 апр 20, 09:13
14 апр 20, 09:12    [22115773]     Ответить | Цитировать Сообщить модератору
 Re: Что такое серверный рендеринг  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 4832
вадя,
Java не заточен для этого. Вам в php
14 апр 20, 09:17    [22115777]     Ответить | Цитировать Сообщить модератору
 Re: Что такое серверный рендеринг  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 17735
PetroNotC Sharp
Java не заточен для этого. Вам в php
кто-то говорил что шаблоны могут всё.
14 апр 20, 09:22    [22115779]     Ответить | Цитировать Сообщить модератору
 Re: Что такое серверный рендеринг  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 4832
вадя,
Слово "всё" было в контексте.
14 апр 20, 09:24    [22115780]     Ответить | Цитировать Сообщить модератору
 Re: Что такое серверный рендеринг  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 17735
PetroNotC Sharp
Слово "всё" было в контексте.
на 23 странице - Petro быстро переобулся....
тогда какого чёрта в одном из прошлых топиков мне парили мозги про использовании шаблонов, когда я использовал стрингбилдер для построения html строки таблицы?
и ни один не заявил, что java для этого не приспособлен....
14 апр 20, 09:31    [22115782]     Ответить | Цитировать Сообщить модератору
 Re: Что такое серверный рендеринг  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 4832
вадя,
Ты неспособен понять, что Архитектура (как писать) - это всегда компромисы.
Ты это назвал ПЕРЕОБУЛСЯ.
Тебе это до гроба не понять. Вот уже лет 20.

Сообщение было отредактировано: 14 апр 20, 09:44
14 апр 20, 09:44    [22115787]     Ответить | Цитировать Сообщить модератору
 Re: Что такое серверный рендеринг  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 4832
вадя

и ни один не заявил, что java для этого не приспособлен....

"Один дурак может задать столько вопросов что и 100 мудрецов не ответят" [(с) В.И. Ленин ПСС том 8 стр.15, работа "Как нам преобразовать РабКрин"]
14 апр 20, 09:49    [22115791]     Ответить | Цитировать Сообщить модератору
 Re: Что такое серверный рендеринг  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 17735
PetroNotC Sharp
Ты неспособен понять, что Архитектура (как писать) - это всегда компромисы.
Ты это назвал ПЕРЕОБУЛСЯ.
Тебе это до гроба не понять. Вот уже лет 20.
так какого ? ты об этом написал счас? а эти 23 страницы где был? я это условие уже 3 раза писал...
и только счас до тебя дошло, что java не подходит?
это всего лишь построение строки.
а для построения json - java подходит?
чем отличается строка json от строки html? xml?
ещё раз - для формирования таблиц - можно и нужно шаблонизаторы, а для этой структуры java не подходит?
14 апр 20, 09:54    [22115795]     Ответить | Цитировать Сообщить модератору
 Re: Что такое серверный рендеринг  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 4832
вадя,
Дай ссыль на вопрос задаваемый раньше.
Хорош флудить и всех обвинять.
14 апр 20, 10:11    [22115807]     Ответить | Цитировать Сообщить модератору
 Re: Что такое серверный рендеринг  [new]
mayton
Member

Откуда: loopback
Сообщений: 46531
вадя
вообще реально это сформировать на java?

Java - это Тьюринг-полный язык.
14 апр 20, 10:38    [22115821]     Ответить | Цитировать Сообщить модератору
 Re: Что такое серверный рендеринг  [new]
mad_nazgul
Member

Откуда:
Сообщений: 5288
вадя

проверить результат можно тут https://jsfiddle.net/qbua0v92/1/ заменив содержимое <div id="div_tree" data-bind=""> на полученный результат.
стримы, шаблоны - всё принимается.


Не истины ради, а флейма для <:o)

+
package kz.mad_nazgul

import io.ktor.application.Application
import io.ktor.application.call
import io.ktor.client.HttpClient
import io.ktor.client.engine.apache.Apache
import io.ktor.html.respondHtml
import io.ktor.routing.get
import io.ktor.routing.routing
import kotlinx.html.*

data class Table (
    val id: Long = 0L,
    val idParent: Long = 0L,
    val order: Int = 0,
    val name: String = ""
)

val data: Array<Table> = arrayOf(
    Table(1L, 0L, 1, "1_1"),                                  //  0
    Table(2L, 0L, 2, "1_2"),                                  //  1
    Table(3L, 0L, 3, "ffff"),                                 //  2
    Table(5L, 1L, 1, "1.2"),                                  //  3
    Table(6L, 5L, 2, "1.2.3._2"),                             //  4
    Table(7L, 5L, 1, "1.2.3._1"),                             //  5
    Table(8L, 2L, 1, "1"),                                    //  6
    Table(12L, 0L, 6, "33"),                                  //  7
    Table(13L, 4L, 1, "ггг"),                                 //  8
    Table(15L, 5L, 3, "1.2.3_3"),
    Table(17L, 0L, 4, "5555555'5'3"),
    Table(24L, 13L, 0, "676767677-----"),
    Table(29L, 24L, 1, "oooooooooo"),
    Table(30L, 29L, 1, "ooooooooooo"),
    Table(31L, 24L, 3, "ooooooooooooo"),
    Table(32L, 31L, 1, "5555"),
    Table(33L, 0L, 5, "еее"),
    Table(34L, 0L, 7, "\"ffgfgfgf----\"\"-\"\"-------")
)

open class TableRepository {

    fun findById(id: Long): Table? =
        data.find{ row -> row.id == id}

    fun findByParentId(parentId: Long): List<Table> =
        data.filter { row -> row.idParent == parentId }.sortedBy { row -> row.order }

}

data class DataModel(
    val id: Long = 0L,
    val order: Int = 0,
    val name: String = "",
    val parentId: Long = 0,
    val children: List<DataModel> = emptyList()
)

val tableRepository = TableRepository()

fun Table.toDataModel(): DataModel =
    DataModel(
        id = this.id,
        name = this.name,
        order = this.order,
        parentId = this.idParent,
        children = makeDataModel(tableRepository.findByParentId(this.id))
    )

fun makeDataModel(dataList: List<Table>): List<DataModel> =
    dataList.map { it.toDataModel() }


@HtmlTagMarker
fun FlowContent.printDataModel(level: Int, list: List<DataModel>) {
    if (list.size > 0) {
        ul {
            list.forEach { row ->
                li {
                    attributes["data-lev"] = level.toString()
                    attributes["data-order"] = row.order.toString()
                    attributes["data-p_id"] = row.parentId.toString()
                    attributes["data-id"] = row.id.toString()
                    span {
                        + row.name
                    }
                    printDataModel(level+1, row.children)
                }
            }
        }
    }
}

fun main(args: Array<String>): Unit = io.ktor.server.netty.EngineMain.main(args)

@Suppress("unused") // Referenced in application.conf
@kotlin.jvm.JvmOverloads
fun Application.module(testing: Boolean = false) {
    val client = HttpClient(Apache) {
    }

    routing {
        get("/") {
            call.respondHtml {
                head {
                    title { + "Ktor test"}
                }
                body {
                    printDataModel(1, makeDataModel(dataList = data.toList()))
                }
            }
        }

    }
}
14 апр 20, 14:12    [22115963]     Ответить | Цитировать Сообщить модератору
 Re: Что такое серверный рендеринг  [new]
mad_nazgul
Member

Откуда:
Сообщений: 5288
mad_nazgul,

Немного ошибся

+
package kz.mad_nazgul

import io.ktor.application.Application
import io.ktor.application.call
import io.ktor.client.HttpClient
import io.ktor.client.engine.apache.Apache
import io.ktor.html.respondHtml
import io.ktor.routing.get
import io.ktor.routing.routing
import kotlinx.html.*

data class Table (
    val id: Long = 0L,
    val idParent: Long = 0L,
    val order: Int = 0,
    val name: String = ""
)

val data: Array<Table> = arrayOf(
    Table(1L, 0L, 1, "1_1"),                                  //  0
    Table(2L, 0L, 2, "1_2"),                                  //  1
    Table(4L, 0L, 3, "ffff"),                                 //  2
    Table(5L, 1L, 1, "1.2"),                                  //  3
    Table(6L, 5L, 2, "1.2.3._2"),                             //  4
    Table(7L, 5L, 1, "1.2.3._1"),                             //  5
    Table(8L, 2L, 1, "1"),                                    //  6
    Table(12L, 0L, 6, "33"),                                  //  7
    Table(13L, 4L, 1, "ггг"),                                 //  8
    Table(15L, 5L, 3, "1.2.3_3"),
    Table(17L, 0L, 4, "5555555'5'3"),
    Table(24L, 13L, 0, "676767677-----"),
    Table(29L, 24L, 1, "oooooooooo"),
    Table(30L, 29L, 1, "ooooooooooo"),
    Table(31L, 24L, 3, "ooooooooooooo"),
    Table(32L, 31L, 1, "5555"),
    Table(33L, 0L, 5, "еее"),
    Table(34L, 0L, 7, "\"ffgfgfgf----\"\"-\"\"-------")
)

open class TableRepository {

    fun findById(id: Long): Table? =
        data.find{ row -> row.id == id}

    fun findByParentId(parentId: Long): List<Table> =
        data.filter { row -> row.idParent == parentId }.sortedBy { row -> row.order }

}

data class DataModel(
    val id: Long = 0L,
    val order: Int = 0,
    val name: String = "",
    val parentId: Long = 0,
    val children: List<DataModel> = emptyList()
)

val tableRepository = TableRepository()

fun Table.toDataModel(): DataModel =
    DataModel(
        id = this.id,
        name = this.name,
        order = this.order,
        parentId = this.idParent,
        children = makeDataModel(tableRepository.findByParentId(this.id))
    )

fun makeDataModel(dataList: List<Table>): List<DataModel> =
    dataList.map { it.toDataModel() }


@HtmlTagMarker
fun FlowContent.printDataModel(level: Int, list: List<DataModel>) {
    if (list.size > 0) {
        ul {
            list.forEach { row ->
                li {
                    attributes["data-lev"] = level.toString()
                    attributes["data-order"] = row.order.toString()
                    attributes["data-p_id"] = row.parentId.toString()
                    attributes["data-id"] = row.id.toString()
                    span {
                        + row.name
                    }
                    printDataModel(level+1, row.children)
                }
            }
        }
    }
}

fun main(args: Array<String>): Unit = io.ktor.server.netty.EngineMain.main(args)

@Suppress("unused") // Referenced in application.conf
@kotlin.jvm.JvmOverloads
fun Application.module(testing: Boolean = false) {
    val client = HttpClient(Apache) {
    }

    routing {
        get("/") {
            call.respondHtml {
                head {
                    title { + "Ktor test"}
                }
                body {
                    printDataModel(1, makeDataModel(dataList = tableRepository.findByParentId(0L)))
                }
            }
        }

    }
}
14 апр 20, 14:53    [22115999]     Ответить | Цитировать Сообщить модератору
 Re: Что такое серверный рендеринг  [new]
mayton
Member

Откуда: loopback
Сообщений: 46531
mad_nazgul, а в Котлине можно анонимные сущности использовать?

Тоесть вместо этого
val data: Array<Table> = arrayOf(
    Table(1L, 0L, 1, "1_1"),                                  //  0
    Table(2L, 0L, 2, "1_2"),                                  //  1


Сделать нечто вроде tuples:

    (1L, 0L, 1, "1_1")
    (2L, 0L, 2, "1_2")
14 апр 20, 15:06    [22116010]     Ответить | Цитировать Сообщить модератору
 Re: Что такое серверный рендеринг  [new]
lleming
Member

Откуда:
Сообщений: 1718
mayton
mad_nazgul, а в Котлине можно анонимные сущности использовать?

Тоесть вместо этого
val data: Array<Table> = arrayOf(
    Table(1L, 0L, 1, "1_1"),                                  //  0
    Table(2L, 0L, 2, "1_2"),                                  //  1


Сделать нечто вроде tuples:

    (1L, 0L, 1, "1_1")
    (2L, 0L, 2, "1_2")


аки python tuples прям в синтаксисе ?
14 апр 20, 15:07    [22116012]     Ответить | Цитировать Сообщить модератору
 Re: Что такое серверный рендеринг  [new]
mayton
Member

Откуда: loopback
Сообщений: 46531
Scala tuples.
14 апр 20, 15:08    [22116013]     Ответить | Цитировать Сообщить модератору
 Re: Что такое серверный рендеринг  [new]
hVostt
Member

Откуда:
Сообщений: 17476
какой в java движок для серверной генерации html нынче популярен?
14 апр 20, 15:10    [22116016]     Ответить | Цитировать Сообщить модератору
 Re: Что такое серверный рендеринг  [new]
hVostt
Member

Откуда:
Сообщений: 17476
судя по этой табличке https://github.com/jreijn/spring-comparing-template-engines

самые быстрые это JSP с усами, кто-то их использует на практике?
14 апр 20, 15:13    [22116019]     Ответить | Цитировать Сообщить модератору
 Re: Что такое серверный рендеринг  [new]
mayton
Member

Откуда: loopback
Сообщений: 46531
Когда-то давно я юзал Wicket. Но подозреваю что он не в моде.

Еще был JSoup. Хотя он - больше для обратной задачи. Парсер типа.
14 апр 20, 15:13    [22116020]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 16 17 18 19 20 21 22 [23] 24 25   вперед  Ctrl
Все форумы / Java Ответить