metaclass: (Default)
[personal profile] metaclass
[livejournal.com profile] artureg
скриншот без js
скриншот с js
скриншот отчета
работает!

Значит, что по поводу решения на java:
1) Вчера коллективом из N человек разбирались "как поставить нужную жабу на убунту 10.04"
вот результат: https://operden.googlecode.com/svn/trunk/howtoinstall.txt
2) Первая же команда не работает - нужно сначала выполнить sudo apt-get install python-software-properties . Если бы не вчерашний деплоймент айседовской опердени и наличие в нем nodejs требующего этой же команды для инсталляции, или же гугла - в жизнь бы не нашли, т.к. add-apt-repository и python-software-properties в здравом уме между собой увязать сложно.
3) В итоге, деплоймент (по уже проверенной инструкции, которую вчера составлял коллектив из нескольких гуру) занял гораздо меньше времени, заодно без отсылок на сторонние сайты. Впрочем, инструкция все равно рассчитана на гуру, не подробная. Отзыв [livejournal.com profile] kometa_zxc которая все это деплоит:
"у артурега ИМХО инструкция проще, но пары команд не хватает
и телодвижений меньше"

4) факап номер раз:

>ps aux | grep java
root      4038  0.4 16.7 293380 85276 pts/0    Sl+  10:27   0:09 /usr/lib/jvm/java-6-sun/bin/java -classpath /usr/share/maven2/boot/classworlds.jar -Dclassworld
s.conf=/usr/share/maven2/bin/m2.conf -Dmaven.home=/usr/share/maven2 org.codehaus.classworlds.Launcher "jetty:run"


web-приложение запущено от root. Впрочем, для одноразового демо-приложения может и пойдет, но паранойя визжит.

Далее: что у артурега, что у айседа корни веб-приложений отдают всякую тяжелую неведомую ебаную хуйню, кто со стек-трейсами, кто еще с чем. Ну стек-трейсы отключаются само собой, переводом в продакшен режим(приложения оба запущены в development моде). Но в корень я бы все таки положил index.html со ссылкой на приложение, потому что пользователи(в т.ч. и я) инструкций где указано открыть конкретный url - не читают.

5) ошибки xml конфига с отчетами: у айседа показывает что "отчетов не найдено" с выводом в лог, у артурега - "ParseError at [row,col]:[46,5] Message: Element type "re" must be followed by either attribute specifications, ">" or "/>"."

6) формально валидный xml, но без атрибута name:

Unable to satisfy @org.simpleframework.xml.Attribute(name=, empty=, required=true) on field 'name' private java.lang.String by.artureg.so.conf.Report.name for class by.artureg.so.conf.Report at line 45

у айседа то же самое: молча пропускает, в логах нет информации никакой, отчета не видно. пропустил - в логе сообщение "Report must have name"

7) Формально валидный но не до конца заполненный xml, окно с фразой "null" и трейс в логе:

    <report name="test1">
        <sql>select * from test where id<:id</SQL>
        <Parameters>
                <parameter name="id" type="integer" />
        </Parameters>
    </report>


2012-02-07 11:55:15,075 ERROR org.apache.struts2.json.rpc.RPCError.error:38 -
java.lang.NullPointerException
        at by.artureg.so.conf.Report.getFieldByName(Report.java:78)
        at by.artureg.so.dl.SoDao$1.mapRow(SoDao.java:80)
        at by.artureg.so.dl.SoDao$1.mapRow(SoDao.java:71)
        at org.springframework.jdbc.core.RowMapperResultSetExtractor.extractData(RowMapperResultSetExtractor.java:92)
        at org.springframework.jdbc.core.RowMapperResultSetExtractor.extractData(RowMapperResultSetExtractor.java:1)
        at org.springframework.jdbc.core.JdbcTemplate$1.doInPreparedStatement(JdbcTemplate.java:649)
        at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:587)
        at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:637)
        at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:662)
        at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:702)
        at org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.query(NamedParameterJdbcTemplate.java:166)
        at by.artureg.so.dl.SoDao.request(SoDao.java:68)
        at by.artureg.so.dl.SoService.runReport(SoService.java:22)
        at by.artureg.so.smd.SmdService.runReport(SmdService.java:28)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.struts2.json.JSONInterceptor.invoke(JSONInterceptor.java:246)
        at org.apache.struts2.json.JSONInterceptor.intercept(JSONInterceptor.java:133)
        at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
        at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54)
        at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:510)
        at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
        at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
        at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
        at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
        at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
        at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:726)
        at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
        at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:206)
        at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
        at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
        at org.mortbay.jetty.Server.handle(Server.java:324)
        at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
        at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:843)
        at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:648)
        at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
        at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
        at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
        at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)



8) ошибочно введенный параметр фильтра: строка в числе:
скриншот
валится в parseInt на стороне сервера.
Если ввести 1234.1 в строку для integer, то выводит сообщение "For input string: "1234.1""

9) Дефолтные значения даты-времени: скриншот. Это типа "начало и конец предыдущего месяца".
Первая ошибка здесь моя: надо было поставить формат времени HH:mm:ss.
Но даже после исправления все равно получается 01:00:00 и 00:59:59.

10) Еще баг даты времени: даже если исправить предыдущий и сделать запрос "включительно", т.е. <=, то параметр 23:59:59 не покажет событие, которое произойдет в 23:59:59.5 т.е. за полсекунды до конца месяца.

11) Айседное приложение из wget работает от входа. Артуреговое я пока не запустил, т.к. он использует для передачи параметров POST и в нем json с параметрами.
wget --post-file=query.json "--header=Content-Type: application/json-rpc; charset=UTF-8" http://localhost:9090/so/smd/so.action

содержимое query.json:
"{"params":["datetime1",[{"name":"datetimevalb","value":1328047200000},{"name":"datetimevale","value":1330552799999}]],"method":"runReport","id":4}"

12) Если попросить у айседного сервиса json/xml/чорта лысого с помощью "header=Accept: text/xml" как завещает RESTful - оно или отдаст результат или скажет что не умеет такого.
У артурега - отдаст json в любом случае. Но! Если спросить ошибочно - ответит вместо json - html с ошибкой и стектрейсом.
Если же спросить "по другому" ошибочно: т.е. json валидный, а смысл его неправильный - то отдаст json с ошибкой). При этом все равно можно добится разного поведения (правильный ответ, ошибка в html, ошибка в json)) манипулируя параметрами.

13) неправильно введенный параметр даты времени вызывает невидимое исключение "undefined" в JavaScript, запрос не уходит, отчет остается открытым старый и единственное, где это видно - восклицательный знак возле поля ввода.

14) обновление по пункту 8:
оставливаем jetty
svn up
mvn install
mvn jetty:run

выводится сообщение "Invalid number format". Если глянуть на запрос в Firebug - внутри json-ответа еще и стек трейс от сервера есть.

Date: 2012-02-07 09:15 am (UTC)
From: [identity profile] artureg.livejournal.com
1. не совсем так, мы решали как поставить жабу из репы, скачать и поставить жабу с говносайта можно на любую убунту, но это не спортивно
2. на мой тестовой убунте эта команда не понадобилась, не знаю почему
3. эрна поставила по инструкции за 15 минут

4. убери судо перед mvn jetty:run будет не их под рута

5. дев мод выключается, хвосты тоже быстро прибираются, я забыл подумать об этом

Date: 2012-02-07 09:22 am (UTC)
From: [identity profile] metaclass.livejournal.com
Счас насчет mvn jetty:run попробую.

Date: 2012-02-07 09:23 am (UTC)
From: [identity profile] metaclass.livejournal.com
Мавен повторно качает плагины и прочее, т.к. использует локальный репо юзера.
Edited Date: 2012-02-07 09:24 am (UTC)

Date: 2012-02-07 09:29 am (UTC)

Date: 2012-02-07 09:28 am (UTC)
From: [identity profile] metaclass.livejournal.com
Хрен там :)
Embedded error: Bad temp directory: /home/marina/operden/operden/target/work

Нужно было все от юзера делать, кроме установки жабы из реп.

Date: 2012-02-07 09:29 am (UTC)
From: [identity profile] artureg.livejournal.com
ну это местный факап, решаемый тремя командома с раздачей нужных прав

Date: 2012-02-07 09:34 am (UTC)
From: [identity profile] devnu11.livejournal.com
ну ессно, запустившись от рута, насоздавалась структура с владельцем root. лечится, как уже было сказано, при помоши chown

Date: 2012-02-07 09:34 am (UTC)
From: [identity profile] metaclass.livejournal.com
sudo chown -R marina:marina operden/
mvn jetty:run
запустилось :)

Date: 2012-02-07 10:03 am (UTC)
From: [identity profile] artureg.livejournal.com
7) фиксед :)

Date: 2012-02-07 10:13 am (UTC)
From: [identity profile] artureg.livejournal.com
8) не факап, так и задумывалось, вся валидация на сервере, врамительным сообщением обернул

Date: 2012-02-07 10:19 am (UTC)
From: [identity profile] permea-kra.livejournal.com
Это такое вырвиглазие (я про скриншоты) норма в ваших оперденях?

Date: 2012-02-07 10:21 am (UTC)
From: [identity profile] metaclass.livejournal.com
В моих нет :)

Date: 2012-02-07 10:26 am (UTC)
From: [identity profile] artureg.livejournal.com
делать дизайн от Темы(ТМ) задача не стояла

Date: 2012-02-07 10:32 am (UTC)
From: [identity profile] permea-kra.livejournal.com
Умолчальное отображение html в ie и то лучше того, что я там наблюдаю. О дизайне речь не идет, но если глаза не режет - это говорит о качестве основной продукции. Ооооочень говорит.

(no subject)

From: [identity profile] artureg.livejournal.com - Date: 2012-02-07 10:33 am (UTC) - Expand

(no subject)

From: [identity profile] permea-kra.livejournal.com - Date: 2012-02-07 10:35 am (UTC) - Expand

(no subject)

From: [identity profile] artureg.livejournal.com - Date: 2012-02-07 10:36 am (UTC) - Expand

(no subject)

From: [identity profile] permea-kra.livejournal.com - Date: 2012-02-07 10:42 am (UTC) - Expand

(no subject)

From: [identity profile] artureg.livejournal.com - Date: 2012-02-07 10:45 am (UTC) - Expand

(no subject)

From: [identity profile] permea-kra.livejournal.com - Date: 2012-02-07 11:44 am (UTC) - Expand

(no subject)

From: [identity profile] artureg.livejournal.com - Date: 2012-02-07 11:56 am (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2012-02-07 01:28 pm (UTC) - Expand

(no subject)

From: [identity profile] artureg.livejournal.com - Date: 2012-02-07 01:29 pm (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2012-02-07 01:31 pm (UTC) - Expand

(no subject)

From: [identity profile] artureg.livejournal.com - Date: 2012-02-07 01:32 pm (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2012-02-07 11:49 am (UTC) - Expand

Date: 2012-02-07 10:46 am (UTC)
From: [identity profile] artureg.livejournal.com
Пункт 9: это твой факап с паттернами
[1:43:42 PM] Artur: HH
[1:43:47 PM] Artur: а не hh
[1:43:58 PM] Artur: hh - 1-12
[1:44:04 PM] Artur: HH - 0 - 23
[1:44:08 PM] Artur: всё правильно
[1:44:38 PM] Artur: dd.MM.yyyy HH:mm - 23:59
[1:44:55 PM] Artur: dd.MM.yyyy hh:mm - 12:59

Date: 2012-02-07 11:00 am (UTC)
From: [identity profile] artureg.livejournal.com

У меня валидно. Пойду проверю в убунте, можа таймзоны

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2012-02-07 12:19 pm (UTC) - Expand

(no subject)

From: [identity profile] artureg.livejournal.com - Date: 2012-02-07 12:28 pm (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2012-02-07 12:39 pm (UTC) - Expand

(no subject)

From: [identity profile] artureg.livejournal.com - Date: 2012-02-07 12:40 pm (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2012-02-07 12:48 pm (UTC) - Expand

Date: 2012-02-07 10:47 am (UTC)
From: [identity profile] artureg.livejournal.com
да, надо добавить ещё и 999 миллисекунд

Date: 2012-02-07 10:57 am (UTC)
From: [identity profile] metaclass.livejournal.com
Нет. Нужно делать 01.02.2012 00:00:00 и < в запросе.
Это общеизвестно :)
Т.е. полуоткрытый интервал
Edited Date: 2012-02-07 10:57 am (UTC)

смехуечки

Date: 2012-02-07 10:58 am (UTC)
From: [identity profile] pingback-bot.livejournal.com
User [livejournal.com profile] nicka_startcev referenced to your post from смехуечки (http://nicka-startcev.livejournal.com/1473977.html) saying: [...] дит несколько более адекватно. Почему? - потому что он не утруждал себя наведением красоты пруф [...]

Date: 2012-02-07 11:18 am (UTC)
From: [identity profile] theiced.livejournal.com
хуя се проще - он ставит сломанную жабу из сломанной репы сломанной бубунты 10.04. при этом моя инструхсия хоть на центосе работает, артурегова ТОЛЬКО на бубунте 10.04.

Date: 2012-02-07 11:41 am (UTC)
From: [identity profile] denisioru.livejournal.com
select * from test where id
[Error: Irreparable invalid markup ('<:id</sql>') in entry. Owner must fix manually. Raw contents below.]

<lj-raw><sql>select * from test where id<:id</SQL></lj-raw>

поправьте если я не прав - но:
1) теги регистрозависимые
2) < невалидно. надо использовать &lt;

ЗЫ ебаная разметка
Edited Date: 2012-02-07 11:43 am (UTC)

Date: 2012-02-07 11:44 am (UTC)
From: [identity profile] metaclass.livejournal.com
У артурега регистрозависимые, у айседа нет. Как более правильно - ну хз, абы сообщение об ошибке верно показывали (айсед показывает чуть лучше).
< там есть - это его ЖЖ заменил)

(no subject)

From: [identity profile] denisioru.livejournal.com - Date: 2012-02-07 11:45 am (UTC) - Expand

(no subject)

From: [identity profile] artureg.livejournal.com - Date: 2012-02-07 11:46 am (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2012-02-07 11:53 am (UTC) - Expand

(no subject)

From: [identity profile] denisioru.livejournal.com - Date: 2012-02-07 11:55 am (UTC) - Expand

(no subject)

From: [identity profile] denisioru.livejournal.com - Date: 2012-02-07 11:55 am (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2012-02-07 12:10 pm (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2012-02-07 11:50 am (UTC) - Expand

Date: 2012-02-07 11:48 am (UTC)
From: [identity profile] theiced.livejournal.com
ну что мы видим.

1. у ортруро кэйссенсетив конфиг. ну то есть совсем. <parameter /> мы не умеем. <Parameter name="хуй"/> не будет матчить параметр Хуй итд. как обычно в жабомире - не софт для человека, а человек для софта. если что - в руби это делалось специально. иначе можно было бы убрать половину кода и заиспользовать аля-жабо-с-аннотациями классы вида (псевдокод, не помню какие там есть либы и какой у них синтаксис):

class Report
  include XML::Serializeable

  xml_attribute :name
  xml_attribute :label
end


нахуй.

2. путь к конфигу жёстко задан. не понял пегеружается ли он при изменениях.

3. 10 хымыыль конфигов. миллиарды директорий с 10тью уровнями вложенности. я реально спрашивал у ортуро где там найти какой код. как его поправить - мне совсем страшно, я пытался и нихуя не понял. в рубях - config/database.yml, config/reports/*xml, app/controllers/reports_controller.rb, app/view/reports/*html.erb, app/assets/stylesheets/reports.css.cscc, app/assets/javascripts/reports.js.coffee, lib/reports. это щемто всё что надо, любой метакласс разберётся. рубиговнокод был написан расширяемым и всё такое (система плагинов для параметров ;]) ибо вот жопой сразу чувствовал что я его куда нить в реальный проект утащу.

4. ортурово поделие (как и любое жабо поделие) срёт стэктрейсы везде. на консоль, в логи, хтмл со стэктрейсом в ответ, жсон со стэктрейсом в ответ, жсон который на самом деле не жсон а хтмл со стэктрейсом в ответ. не удивлюсь если оно ещё стектрейсы рассылает смсками.

5. метакласс вон нашёл - апи понимает только json-rpc как post. тестировать из консольки очень приятно.

6. никаких проверок типов и прочей хуеты (из которой на 80% состоит руби код). тупо стэктрейсы (см. п.4).

Date: 2012-02-07 11:51 am (UTC)
From: [identity profile] artureg.livejournal.com
1. а ты в очередной раз закатил солнце руками, и написал свой парсер - молодца
2. опционально
3. хуита, конфиг один
4. так и должно быть
5. json-rpc да, это ок и крутяк
6. проверки и на клиенте и на сервере

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2012-02-07 12:17 pm (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2012-02-07 12:18 pm (UTC) - Expand

(no subject)

From: [identity profile] artureg.livejournal.com - Date: 2012-02-07 12:29 pm (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2012-02-07 12:40 pm (UTC) - Expand

(no subject)

From: [identity profile] artureg.livejournal.com - Date: 2012-02-07 12:40 pm (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2012-02-07 12:49 pm (UTC) - Expand

(no subject)

From: [identity profile] artureg.livejournal.com - Date: 2012-02-07 12:49 pm (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2012-02-07 12:51 pm (UTC) - Expand

(no subject)

From: [identity profile] artureg.livejournal.com - Date: 2012-02-07 12:53 pm (UTC) - Expand

(no subject)

From: [identity profile] permea-kra.livejournal.com - Date: 2012-02-07 01:00 pm (UTC) - Expand

(no subject)

From: [identity profile] artureg.livejournal.com - Date: 2012-02-07 01:00 pm (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2012-02-07 01:27 pm (UTC) - Expand

Date: 2012-02-07 12:02 pm (UTC)
From: [identity profile] artureg.livejournal.com
13: фиксед)

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 21st, 2025 12:49 pm
Powered by Dreamwidth Studios