All streams
Search
Write a publication
Pull to refresh
31
0
Григорий Кислин @gkislin

Автор онлайн обучения Java: https://javaops.ru

Send message
Нашел интересную картинку: dou.ua/lenta/articles/language-rating-jan-2013/
Индекс удовлетворенности языком — процент людей, которые работают на данном языке и выбрали бы его же в следующем своем проекте
Scala — 0.85
Groovy ~ 0.42
Интересно от пользователей Груви услышать комментарии…
Для того, чтобы язык пошел в люди, одного его мало… даже если он на JVM.
За груви есть Grails и Gradle, за Scala- akka, play, счас вот spray включили в typesafe stack.
А что есть у Kontlin?
На заметку: юзал SmartGWT и ExtGWT (GXT). Второй (IMO)- на порядок структурирование и логичнее (правда платный).
Спасибо! Есть позиции которые с опытом уйдут. Есть — которые пилятся и уйдут. Одноко есть и те (например дебаг, множественный имплисит) которые- принципиальные.
Недовно был сильно вдохновлен возможностями Scala, поучился у www.coursera.org/course/progfun, сделал небольшие приложения на play и spray. О плюсах не буду, их много и они очевидны. Хотелось бы узнать мения от профи на те трудности с которыми столкнулся:

1. SBT:
— sbt далеко не интуитивен.
— настороить по локальный репозиторий maven (чтоб не дублировать скачку, использую maven) не удалось.
— зависимость sbt и проекта от различных версий scala
— зачем на 1 модуль делать \target, \project\target и \project\project\target?

2. Scala
— местами сыровата (например наткнулся на баг работы с json github.com/playframework/playframework/issues/1189)
— чужой код (особенно фраймворковский) очень сложен для понимания
— очень плохо дебажится (особенно фраймворки)
— implicit фреймворка (например в spray) начинают в trait пересекаться с моими именами (например delete, get, create)
— обнаружил зависимость от порядка объяления в trait — моя ошибка при инициализации, но достаточно запрятанная
— уже совсем субъективно- specs2 в стремлении к сделать жизнь проще больше запутывает, чем помогает

3. Playframework-шаблоны (смесь javascript c синтакисом шаблонов play)
— IDEA никак не поможет в нахождении ошибки в javascript, т.к это не javascript
— никак не отдебажить из IDE по той же причине

Понимаю, что к некоторым отосбенностям (например sbt) надо просто привыкнуть, как обходятся с остальными?
IDEA c Tomcat подхватывает изменения css/html на лету, если запускаться как Tomcat Server local или через tomcat7-maven-plugin.
Все ресурсы РФ давно рапроданы в 90х. Как и право эмитировать рубли. ЦБ относится к России так же, как и ФРС к США.
1. На мой взгляд наиболее важное преимущество любой сторонней библиотеки логгирования перед JUL- возможность для каждого задеплоенного модуля в контейнере иметь свой собственный лог-файл, а не валить все в одну кучу.

2. Пользую slf4j с адаптерами. При этом если модуль подтягивает зашаренную библиотеку контейнера, то эти (общие) классы или не имеют реализации slf4j- тогда весь логгинг у них теряется, либо, если подложить реализацию в общие библиотеки, будет двойной биндинг. В любом случае логгинг зашаренных классов по модулям уже корректно не растащить. Может кто подскажет решение? (не считая решением тащить все библиотеки с собой)

3. Пользую таки свою обертку с такими вспомогательными вещами как:
    public IllegalStateException getIllegalStateException(String msg, @Nullable Throwable e) {...
        logger.error(msg, e);
        return new IllegalStateException(msg, e);
    }

   public IllegalArgumentException getIllegalArgumentException(...
   ...
   public UserSecurityException getSecurityException(String msg, String user) {
А если сравнить со всем известной: commons.apache.org/proper/commons-configuration/
и менее известной: github.com/typesafehub/config?

Последнюю юзает playframework, почитайте взможности: www.playframework.com/documentation/2.0/Configuration
На мой взгляд- самая передовая.

ну да, похоже, полегче и без Spring. у меня куча небольших модулей (SOA). С каждым Spring с собой не хочется тащить.
А еще архитектором быть неплохо… И решения по проекту технические принимаешь и график посвободнее.
Секционирование неудобно тем, что на общие таблицу нельзя делать FK. Поддерживать по подсистемам будет действительно сложно. Для производительности можно секционировать актуальные и исторические данные, работая по умолчанию только с актуальными. Объем данных существенно уменьшится.
Спасибо за подробные ответы.
А как насчет горизонтального секционирования по подсистеме и, при необходимости, по типу документа?
А вот тут про EAV SQL антипаттерн: www.slideshare.net/billkarwin/sql-antipatterns-strike-back.
Данный подход свободен от них, кроме нестрогое ограничение полей.
По поводу ORM (не имею ничего против него) — дописал вступление.
Здесь нужно определиться что такое большие нагрузки. ERP- это корпоративное интранет приложение, максимальная нагрузка не сравнима с приложениями для публичного интенсивного пользования.
Ну, наверное здесь есть что-то схожее с EAV. Только аттрибутами являются не примитивные типы, а составные.
Простите, не понял- каким образом я могу получить блокировку на всю таблицу (если конечно уровень изоляции не Serializable)?
Изменение типа документа- это в дизайне?
Преимуществ много. Сюда например загляните stackoverflow.com/questions/2952732/samples-of-scala-and-java-code-where-scala-code-looks-simpler-has-fewer-lines
И сюда: www.scala-lang.org/node/27499
А вот работа с JSON:
github.com/playframework/Play20/wiki/ScalaJson
github.com/playframework/Play20/wiki/ScalaJsonCombinators

Библиотека интересная, для включения в java 8, как я понимаю.
И как на ней будет выглядеть !(2 to math.sqrt(N).toInt).par.exists(N % _ == 0)?

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity

Specialization

Specialist
Lead
Java
Git
JavaScript
Training
Coaching
Interview
Team recruitment
IT consulting