Добавлено: 14 июн 2005, 16:39
Deady,
1.
(a) почему во втором случае "делить"?
(b) в будущем планируется НЕ ОДИН цвет
интуитивно, как бы да!
много линий, накладываются, ок, но!
Зачем пользователю накладывать одну линию на другую?
Я бы хранил все линии в одном легкодоступном Обьекте (вектор, хэш, не знаю) и при прорисовке новых проверял бы, intersects ли новая линия одну из старых, чтобы избежать двух линий на одном месте (пока что ещё не представляю, как это сделать).
Другой вопрос: Как передавать спрайтовую графику на сервер?
Раз в секунду скидывать всю Графику апплета?
Накладывать на сервере Графики всех пользователей на одну и рассылать обратно?
Как я себе представляю - это будут рывки, при плохой связи так точно.
Если же я передаю линии:
Да, траффика может будет в конечном итоге и больше (хотя, это вовсе не обязательно должно быть!), но каждый раз будет пересылатся всего ОДНА линия! (4*int + цвет).
Таким образом это будет более равномерно.
И, кроме того, никто же не будет постоянно рисовать там одно на другом! Для того правая кнопка мышки и введена, чтобы стереть!
В общем пока ещё так и не определился.
2.
ObjectOutputStream (ObjectInputStream) я уже настроил.
Работает оно тут: Applet-Servlet.html
, а коды всех классов можно видеть в корневом каталоге:
http://www.myjavaserver.com/~olegskr/
К сожалению, установить связь между апплетом и сервлетом через Сокеты не удалось (Access Denied, Permission, ...)
Если бы не было явного преимущества в In(Out)putStream я бы делал серверную часть на php.
Если общение идёт исключительно "plain text" через HTTP - то какая разница, на чём сервер, а на чём клиент?
А, как я уже говорил, серверов с поддержкой PHP намного больше (а бесплатный с поддержко Java я вообще только один знаю).
Если нужно будет поделиться с кем-то кодом - php (или asp, perl, cgi) проще найти. И все они смогли бы работать с файлами.
Ну да ладно, теперь это уже не актуально, потому как со Стрим я разобрался, и мне очень понравилось! ))
3.
оказалась главой из книги О'Рейлли "Java™ Servlet Programming", чему я очень доволен.
Сейчас её пролистываю по мере необходимости.
---
Опять возник вопрос: в чём хранить?
Все дело в том, что на myjavaserver.com классы довольно таки часто выгружают из памяти (минут 5-10 неактивности).
А потому, чтобы сохранить состояние между сеансами нужно выгружать содержание (которое хранится в переменных обьекта Сервлет, который, как оказалось ранее, имеет, грубо говоря, всего одну инстанцию) на жесткий диск.
Пример такой выгрузки тут: InitDestroyCounter
код доступен в корне (см. выше).
Но, поскольку эта операция будет происходить относительно редко, и она не должна быть супер быстрой, - то выгружать я буду в файл и не буду больше думать об этом.
И ещё один вопрос: Как идентифицировать пользователя?
Servlet(Remote IP)
Applet(Local IP)
У меня :
RemoteIP = IP Прокси-Сервера локальной сети
LocalIP = 127.0.0.1
Если я захочу "порисовать" вместе с человеком из моей сети - будут проблемы.
(Зачем мне нужно IP? Список пользователей, состояние online).
Есть ли возможность как-то получить что-то типа:
X-Forwarded-From (или как там его) ?
Тогда я буду идентифицировать по (RemoteIP+LocalIP).
В сервлете RemoteIP я вывожу также Header, но там нету необходмой мне информации.
Вообще, это возможно то, что я хочу?
1.
аргументацию на примере не понялпо поводу: что передавать.
(a) почему во втором случае "делить"?
(b) в будущем планируется НЕ ОДИН цвет
интуитивно, как бы да!
много линий, накладываются, ок, но!
Зачем пользователю накладывать одну линию на другую?
Я бы хранил все линии в одном легкодоступном Обьекте (вектор, хэш, не знаю) и при прорисовке новых проверял бы, intersects ли новая линия одну из старых, чтобы избежать двух линий на одном месте (пока что ещё не представляю, как это сделать).
Другой вопрос: Как передавать спрайтовую графику на сервер?
Раз в секунду скидывать всю Графику апплета?
Накладывать на сервере Графики всех пользователей на одну и рассылать обратно?
Как я себе представляю - это будут рывки, при плохой связи так точно.
Если же я передаю линии:
Да, траффика может будет в конечном итоге и больше (хотя, это вовсе не обязательно должно быть!), но каждый раз будет пересылатся всего ОДНА линия! (4*int + цвет).
Таким образом это будет более равномерно.
И, кроме того, никто же не будет постоянно рисовать там одно на другом! Для того правая кнопка мышки и введена, чтобы стереть!
В общем пока ещё так и не определился.
2.
Да, хорошо. С этим я согласен.почему лучше java+java чем java+php:
ну потому что во втором случае ты сможешь передавать данные только в рамках http запроса, не будет доступен тот же ObjectOutputStream.
ObjectOutputStream (ObjectInputStream) я уже настроил.
Работает оно тут: Applet-Servlet.html
, а коды всех классов можно видеть в корневом каталоге:
http://www.myjavaserver.com/~olegskr/
К сожалению, установить связь между апплетом и сервлетом через Сокеты не удалось (Access Denied, Permission, ...)
Я бы рассматривал это иначе.и вообще, ты же не станешь ставить двигло от бмв на ауди...
Если бы не было явного преимущества в In(Out)putStream я бы делал серверную часть на php.
Если общение идёт исключительно "plain text" через HTTP - то какая разница, на чём сервер, а на чём клиент?
А, как я уже говорил, серверов с поддержкой PHP намного больше (а бесплатный с поддержко Java я вообще только один знаю).
Если нужно будет поделиться с кем-то кодом - php (или asp, perl, cgi) проще найти. И все они смогли бы работать с файлами.
Ну да ладно, теперь это уже не актуально, потому как со Стрим я разобрался, и мне очень понравилось! ))
3.
Спасибо, но та статья ("The Servlet Life Cycle"), на которую я ссылался в прошлом мессадже,по поводу "что почитать".
Core Servlets And JSP - там все хорошо описано
оказалась главой из книги О'Рейлли "Java™ Servlet Programming", чему я очень доволен.
Сейчас её пролистываю по мере необходимости.
---
Опять возник вопрос: в чём хранить?
Все дело в том, что на myjavaserver.com классы довольно таки часто выгружают из памяти (минут 5-10 неактивности).
А потому, чтобы сохранить состояние между сеансами нужно выгружать содержание (которое хранится в переменных обьекта Сервлет, который, как оказалось ранее, имеет, грубо говоря, всего одну инстанцию) на жесткий диск.
Пример такой выгрузки тут: InitDestroyCounter
код доступен в корне (см. выше).
Но, поскольку эта операция будет происходить относительно редко, и она не должна быть супер быстрой, - то выгружать я буду в файл и не буду больше думать об этом.
И ещё один вопрос: Как идентифицировать пользователя?
Servlet(Remote IP)
Applet(Local IP)
У меня :
RemoteIP = IP Прокси-Сервера локальной сети
LocalIP = 127.0.0.1
Если я захочу "порисовать" вместе с человеком из моей сети - будут проблемы.
(Зачем мне нужно IP? Список пользователей, состояние online).
Есть ли возможность как-то получить что-то типа:
X-Forwarded-From (или как там его) ?
Тогда я буду идентифицировать по (RemoteIP+LocalIP).
В сервлете RemoteIP я вывожу также Header, но там нету необходмой мне информации.
Вообще, это возможно то, что я хочу?