powered by simpleCommunicator - 2.0.16     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Scala 3.0.0 релизнулась
49 сообщений из 49, показаны все 2 страниц
Scala 3.0.0 релизнулась
    #40082479
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Синтаксис к чорту сломан. Теперь похожа на Python.
...
Рейтинг: 0 / 0
Scala 3.0.0 релизнулась
    #40082649
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Это который Dotty?
Ну вроде бы он поддерживает старый синтаксис.
Смотрел https://youtu.be/blRnZHQfe0g
...
Рейтинг: 0 / 0
Scala 3.0.0 релизнулась
    #40082655
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да. Как раз вчера посмотрел. Уже с красными глазами.

Даже не знаю радоваться или печалиться по этому поводу. Кажется что старик Одерский никак не успокоится.
Расширять синтаксис языка (даже с совместимостью) это ... такое себе. Хочется спросить - почему 18 лет
назад нельзя было сразу это утвердить?
...
Рейтинг: 0 / 0
Scala 3.0.0 релизнулась
    #40082668
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Да. Как раз вчера посмотрел. Уже с красными глазами.

Даже не знаю радоваться или печалиться по этому поводу. Кажется что старик Одерский никак не успокоится.
Расширять синтаксис языка (даже с совместимостью) это ... такое себе. Хочется спросить - почему 18 лет
назад нельзя было сразу это утвердить?


Ну "знал бы прикуп, жил бы в Сочи". :-)
Такая же эпопея была с переходом с python 2 на python 3.

Другой пример Java, где куча компромиссов в синтаксисе.
...
Рейтинг: 0 / 0
Scala 3.0.0 релизнулась
    #40082811
O_79_O
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
самое главное во всей этой чехарде jvm языков - все они останутся на уровне инди приложений ,а джава будет дальше двигаться,потому что почему? правильно ,потому что комьюнити просто огромное
гугл лет 5 назал кричал что заменит жаву на что то там - в итоге что то там так и осталось что то там
в этой истории все хорошо,но главное что джава трахнула всех)
...
Рейтинг: 0 / 0
Scala 3.0.0 релизнулась
    #40082842
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
O_79_O
самое главное во всей этой чехарде jvm языков - все они останутся на уровне инди приложений ,а джава будет дальше двигаться,потому что почему? правильно ,потому что комьюнити просто огромное
гугл лет 5 назал кричал что заменит жаву на что то там - в итоге что то там так и осталось что то там
в этой истории все хорошо,но главное что джава трахнула всех)


Вообще-то гугл уже заменила Java на что-то другое.
Если смотреть на вакансии, то для Android разработчиков Kotlin mast have однозначно.

Да и для бакендеров, как я, kotlin знать желательно.
Т.к. часто под вакансиями Java-разработчиков скрывается Kotlin.
На двух последних работах java-разработчики писали на Kotlin.

<:o)
...
Рейтинг: 0 / 0
Scala 3.0.0 релизнулась
    #40082844
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
O_79_O,

Ты просто жаба-неофит. Через пару лет ковыряния в заброшенном ынтерпрайзном говне это пройдёт, ты переобуешься и начнешь топить за какой-нибудь жоплин вместе со всеми.
...
Рейтинг: 0 / 0
Scala 3.0.0 релизнулась
    #40082863
vimba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
O_79_O,

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


Вообще то пары лет большинству хватает чтобы образовались нужные нейронные связи в мозгу отвечающие за орентацию в индустрии, а половозрелому разработчику завсегда понятно, что и на скале и на котлине уже тоже есть тоны неподъемного легаси(особенно на скале), а через пару их будет ещё больше, и что если не хочешь ковыряться в легаси за зарплату, то можно всегда пойти работать в стартап без легаси работать за копейки.
...
Рейтинг: 0 / 0
Scala 3.0.0 релизнулась
    #40082864
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Да. Как раз вчера посмотрел. Уже с красными глазами.

Даже не знаю радоваться или печалиться по этому поводу. Кажется что старик Одерский никак не успокоится.
Расширять синтаксис языка (даже с совместимостью) это ... такое себе. Хочется спросить - почему 18 лет
назад нельзя было сразу это утвердить?

ты бы иначе и не посмотрел на нее знай раньше? :)

зы. я вообще заассайнился на проект с кложуром. теперь я кложурист. у них синтаксис по ходу лет 12 и не меняется
...
Рейтинг: 0 / 0
Scala 3.0.0 релизнулась
    #40082865
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul
O_79_O
самое главное во всей этой чехарде jvm языков - все они останутся на уровне инди приложений ,а джава будет дальше двигаться,потому что почему? правильно ,потому что комьюнити просто огромное
гугл лет 5 назал кричал что заменит жаву на что то там - в итоге что то там так и осталось что то там
в этой истории все хорошо,но главное что джава трахнула всех)


Вообще-то гугл уже заменила Java на что-то другое.
Если смотреть на вакансии, то для Android разработчиков Kotlin mast have однозначно.

Да и для бакендеров, как я, kotlin знать желательно.
Т.к. часто под вакансиями Java-разработчиков скрывается Kotlin.
На двух последних работах java-разработчики писали на Kotlin.

<:o)

так джава от котлов не особо отличается. там перепрыгнуть с одного на другое вопрос недели. одной. чуть другой синтаксис плюс убранные архаизмы да и всё.
...
Рейтинг: 0 / 0
Scala 3.0.0 релизнулась
    #40082867
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
O_79_O
самое главное во всей этой чехарде jvm языков - все они останутся на уровне инди приложений ,а джава будет дальше двигаться,потому что почему? правильно ,потому что комьюнити просто огромное
гугл лет 5 назал кричал что заменит жаву на что то там - в итоге что то там так и осталось что то там
в этой истории все хорошо,но главное что джава трахнула всех)

я смотрю на вакансии в своей так сказать вотчине. и вижу что наприемр, скала по количеству занимает едва ли не половину от всего жвм стека. джава потихоньку заменяется. и вполне нормально заменяется. потому что платформа остается та же внушая бизнесу некое спокойствие и предсказуемость. меняются только рюшечки. ну имхо жава уже давно слишком архаична чтоб дальше ею пользоваться
...
Рейтинг: 0 / 0
Scala 3.0.0 релизнулась
    #40082876
Большой Синий Кит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT,

Скала так и продолжит занимать 2-3 процента рынка. Его возможности не нужны в 99 процентах проектов.
...
Рейтинг: 0 / 0
Scala 3.0.0 релизнулась
    #40082878
vimba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Синтаксис к чорту сломан. Теперь похожа на Python.

Значимые пробелы это опциональная фича, можно по старинке использовать фигурные скобки
...
Рейтинг: 0 / 0
Scala 3.0.0 релизнулась
    #40082884
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Большой Синий Кит
andreykaT,

Скала так и продолжит занимать 2-3 процента рынка. Его возможности не нужны в 99 процентах проектов.

какие ее возможности? 99% проектов это перетаскивание джейсонов по углам. это омжно сделать в принципе на любом современном языке. вопрос инфраструктуры и экосистемы.
опять же что она там занимает я хз. я просто в линкедине вбиваю джава потом скала и смотрю на потоки вакансий. сейчас основной тренд это направление. а на чем пишешь обычно не уточняют. жвм там или простихосспади нода. дальше просто всякие облака и инструменты в которых надо уметь разбираться. уже давно не ищут ЧИСТО программистов. на ЧИСТО одном инструменте и на одном стеке.

ну опять же я говорю про свои ощущения местного рынка.
...
Рейтинг: 0 / 0
Scala 3.0.0 релизнулась
    #40082885
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vimba
mayton
Синтаксис к чорту сломан. Теперь похожа на Python.

Значимые пробелы это опциональная фича, можно по старинке использовать фигурные скобки

значимые пробелы это как в лиспе чтоле? )
...
Рейтинг: 0 / 0
Scala 3.0.0 релизнулась
    #40082886
vimba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Большой Синий Кит
andreykaT,

Скала так и продолжит занимать 2-3 процента рынка. Его возможности не нужны в 99 процентах проектов.

Я бы даже сказал, что вредны в 99%

Окрываешь в идее исходный код той же кафки, а она считает что в паре мест код не компилируется при этом сборка проходит, навигация по usage много где не работает, как и навигация по реализациям и call-hierarchy. Очень правильно что scala из кафки постепенно выпиливают, уже на джава переписали connect,clients,streams,mirror остался непосредсвенно только сам брокер, надеюсь что скоро и из самого брокера это недаразумение выкорчуют, тогда можно будет читать и навигироваться по исходникам с комфортом пользуясь всеми благами IDEA, а не используя её в режиме блокнота с подсветкой синтаксиса.
...
Рейтинг: 0 / 0
Scala 3.0.0 релизнулась
    #40082887
vimba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT
vimba
пропущено...

Значимые пробелы это опциональная фича, можно по старинке использовать фигурные скобки

значимые пробелы это как в лиспе чтоле? )

как в питоне, поставил tab и код не скомпилится, если строчкой выше использовались четыре пробела, или ваще хуже - скомпилится но сделает вовсе не то что ты ожидал
...
Рейтинг: 0 / 0
Scala 3.0.0 релизнулась
    #40082895
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня была надежда что scala будет больше двигаться в сторону native-компиллятора как Haskell/Rust на прослойке LLVM.
Собвстенно стартовые исследования в этой области были. И сам язык к этому тяготеет.
...
Рейтинг: 0 / 0
Scala 3.0.0 релизнулась
    #40082966
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT

так джава от котлов не особо отличается. там перепрыгнуть с одного на другое вопрос недели. одной. чуть другой синтаксис плюс убранные архаизмы да и всё.


Дык про то и речь!
И корутины - НЯ!
...
Рейтинг: 0 / 0
Scala 3.0.0 релизнулась
    #40082968
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
У меня была надежда что scala будет больше двигаться в сторону native-компиллятора как Haskell/Rust на прослойке LLVM.
Собвстенно стартовые исследования в этой области были. И сам язык к этому тяготеет.


Ну есть RUST для этого.
Его пихают куда ни попадя.

В задворках сознания есть мысль, поучить "на всякий случай" RUST.
Но пока лень прокрастинация сильнее. :-)
...
Рейтинг: 0 / 0
Scala 3.0.0 релизнулась
    #40095546
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Repl как то по другому работает. :paste + Ctrl+D уже нелетает.

Зато можно просто фигурные скобочки открыть. Влупить выражение и закрыв получить результат.
...
Рейтинг: 0 / 0
Scala 3.0.0 релизнулась
    #40095819
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Консоль с одной стороны улучшили. Теперь - цветовая раскраска. С другой стороны - сломали clip-board (Windows 10).
...
Рейтинг: 0 / 0
Scala 3.0.0 релизнулась
    #40096082
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Консоль с одной стороны улучшили. Теперь - цветовая раскраска. С другой стороны - сломали clip-board (Windows 10).


Блин работать под Windows на JVM, это боль. :-)
...
Рейтинг: 0 / 0
Scala 3.0.0 релизнулась
    #40124922
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм.. тройка не может сделать вывод типа. Хотя функцию вычисляет.

Scala 3.1.1-xx
Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
scala> def my_zere_divide(x: Int, y: Int): Option[Int] = if (y == 0) None else Some(x / y)
def my_zere_divide(x: Int, y: Int): Option[Int]
                                                                                                                                                                                      
scala> :t my_zere_divide
-- Error: -------------------------------------------------------------------------------------------
1 |my_zere_divide
  |^^^^^^^^^^^^^^
  |missing arguments for value of type (Int, Int) => Option[Int]
                                                                                                                                                                                      
scala> my_zere_divide(1,0)
val res7: Option[Int] = None
                                                                                                                                                                                      
scala> 



Вторая версия

Scala 2.13.x
Код: python
1.
2.
3.
4.
5.
6.
7.
8.
Welcome to Scala 2.13.6 (OpenJDK 64-Bit Server VM, Java 17).
Type in expressions for evaluation. Or try :help.

scala> def my_zere_divide(x: Int, y: Int): Option[Int] = if (y == 0) None else Some(x / y)
def my_zere_divide(x: Int, y: Int): Option[Int]

scala> :t my_zere_divide
(x: Int, y: Int): Option[Int]
...
Рейтинг: 0 / 0
Scala 3.0.0 релизнулась
    #40125265
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему в коллекциях mutable/immutable царит такой бардак? Одна и та-же структура по поведению
имеет разные названия. Могли-бы для общности сохранить единое имя. Зачем я должен помнить что ListMap -
это иммутабельная версия LinkedHashMap?

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
import scala.annotation.tailrec
import scala.collection.immutable.ListMap
import scala.collection.{Map, Set, mutable}


  val initialMapping : Map[Char, String] = ListMap(
    '0' -> "н", '1' -> "р", '2' -> "д", '3' -> "т", '4' -> "ч",
    '5' -> "п", '6' -> "ш", '7' -> "с", '8' -> "в", '9' -> "к"
  )

  val initialMappingMutable : Map[Char, String] = mutable.LinkedHashMap(
    '0' -> "н", '1' -> "р", '2' -> "д", '3' -> "т", '4' -> "ч",
    '5' -> "п", '6' -> "ш", '7' -> "с", '8' -> "в", '9' -> "к"
  )
...
Рейтинг: 0 / 0
Scala 3.0.0 релизнулась
    #40125274
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Зачем я должен помнить что ListMap - это иммутабельная версия LinkedHashMap?
Возможно, затем, что неизменяемые коллекции достаточно непрактичны, чтобы пользоваться только ими?
...
Рейтинг: 0 / 0
Scala 3.0.0 релизнулась
    #40128901
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Полезная штука. Давно не хватало. import ... as.

Код: java
1.
2.
import org.apache.lucene.document.Document as LDocument
import org.w3c.dom.Document as XDocument



Собственно она не в тройке. Она еще в старых версиях была. Просто жаль что в Java нету.
...
Рейтинг: 0 / 0
Scala 3.0.0 релизнулась
    #40133873
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как это работает? Подобный синтаксис вызывает смущение.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
class SimpleLru {

  def apply[A, B](maxEntries: Int): util.LinkedHashMap[A, B] {
    def removeEldestEntry(eldest: Map.Entry[A, B]): Boolean
  } = new java.util.LinkedHashMap[A, B](16, 0.75F, true) {
    override def removeEldestEntry(eldest: java.util.Map.Entry[A,B]): Boolean = size > maxEntries
  }
}



Тоесть я знаю как работает LRU. Мне интересно как читать такой синтаксис.
...
Рейтинг: 0 / 0
Scala 3.0.0 релизнулась
    #40133899
Фотография Valentin Kolesnikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
А как это работает? Подобный синтаксис вызывает смущение.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
class SimpleLru {

  def apply[A, B](maxEntries: Int): util.LinkedHashMap[A, B] {
    def removeEldestEntry(eldest: Map.Entry[A, B]): Boolean
  } = new java.util.LinkedHashMap[A, B](16, 0.75F, true) {
    override def removeEldestEntry(eldest: java.util.Map.Entry[A,B]): Boolean = size > maxEntries
  }
}



Тоесть я знаю как работает LRU. Мне интересно как читать такой синтаксис.


Похоже на обёртку вокруг linkedhashmap

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
public static class LruCache<K, V> {
        private static final boolean SORT_BY_ACCESS = true;
        private static final float LOAD_FACTOR = 0.75F;
        private final Map<K, V> lruCacheMap;
        private final int capacity;

        public LruCache(int capacity) {
            this.capacity = capacity;
            this.lruCacheMap = new LinkedHashMap<>(capacity, LOAD_FACTOR, SORT_BY_ACCESS);
        }

        public V get(K key) {
            return lruCacheMap.get(key);
        }

        public void put(K key, V value) {
            if (lruCacheMap.containsKey(key)) {
                lruCacheMap.remove(key);
            } else if (lruCacheMap.size() >= capacity) {
                lruCacheMap.remove(lruCacheMap.keySet().iterator().next());
            }
            lruCacheMap.put(key, value);
        }
    }

    public static <K, V> LruCache<K, V> createLruCache(final int capacity) {
        return new LruCache<>(capacity);
    }



Так проще и на java.
...
Рейтинг: 0 / 0
Scala 3.0.0 релизнулась
    #40133900
dimonz80
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton,

Так понятнее?)))

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
class SimpleLru {

  trait LRUHashMap[A,B] extends util.LinkedHashMap[A, B] {
    def removeEldestEntry(eldest: Map.Entry[A, B]): Boolean
  }

  def apply[A, B](maxEntries: Int): LRUHashMap[A,B] = new java.util.LinkedHashMap[A, B](16, 0.75F, true) with LRUHashMap[A,B] {
    override def removeEldestEntry(eldest: java.util.Map.Entry[A,B]): Boolean = size > maxEntries
  }

}



Ну или так
Код: java
1.
2.
3.
4.
trait LRUHashMap[A, B] {
    this: util.LinkedHashMap[A, B] =>
    def removeEldestEntry: Boolean
  }
...
Рейтинг: 0 / 0
Scala 3.0.0 релизнулась
    #40133902
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да. С трейтом как-то понятнее. Спасибо.
...
Рейтинг: 0 / 0
Scala 3.0.0 релизнулась
    #40135715
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как в сборщике SBT копировать зависимости в свой фолдер?

Для maven я делал вручную так.

Код: java
1.
mvn dependency:copy ...



Для SBT установил флажок

Код: java
1.
retrieveManaged := true



Но не вижу чтоб копировались.
...
Рейтинг: 0 / 0
Scala 3.0.0 релизнулась
    #40135992
maxkar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Выключить useCoursier. Потому что с ним баг . Может быть, еще настроить configurationsToRetrieve.

Или по рабоче-крестьянски. Пишем свой task, в нем берем managedClasspath и из него копируем куда угодно.
...
Рейтинг: 0 / 0
Scala 3.0.0 релизнулась
    #40135997
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть пример такой таски?
...
Рейтинг: 0 / 0
Scala 3.0.0 релизнулась
    #40136055
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul
O_79_O
самое главное во всей этой чехарде jvm языков - все они останутся на уровне инди приложений ,а джава будет дальше двигаться,потому что почему? правильно ,потому что комьюнити просто огромное
гугл лет 5 назал кричал что заменит жаву на что то там - в итоге что то там так и осталось что то там
в этой истории все хорошо,но главное что джава трахнула всех)


Вообще-то гугл уже заменила Java на что-то другое.
Если смотреть на вакансии, то для Android разработчиков Kotlin mast have однозначно.

Да и для бакендеров, как я, kotlin знать желательно.
Т.к. часто под вакансиями Java-разработчиков скрывается Kotlin.
На двух последних работах java-разработчики писали на Kotlin.

<:o)

на котлы заменили но это вроде как в мобилке только. а бэк - там разгул. и джава и скала и те же котлы и всякие груви с кложами.
...
Рейтинг: 0 / 0
Scala 3.0.0 релизнулась
    #40136200
maxkar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Точно такой нет, но есть очень похожая. Выложил здесь .

Это древний sbt, но проблем перевести на новый не должно быть. Начинать смотреть можно с assemblyExploded и assemblyClasspath. Наверное, нужно будет managedClasspath вместо fullClasspath. Ну и целевой каталог по-другому настроить.
...
Рейтинг: 0 / 0
Scala 3.0.0 релизнулась
    #40136202
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Капец это сколько кода надо написать для простой вещи?

Мне по сути надо 3 артифакта скопировать.

Код: java
1.
IO.copyFile(....)



Из maven repository к себе локально чтоб дернуть spark-submit где просто есть
один параметр который перечисляет все сборки.

Толстый jar собирать не хочу.
...
Рейтинг: 0 / 0
Scala 3.0.0 релизнулась
    #40136308
maxkar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Капец это сколько кода надо написать для простой вещи?
Мне по сути надо 3 артифакта скопировать.


Блин, ну а если попробовать понять, что там происходит? И там как раз много лишнего. А для "трех файлов" все сводится к чему-то в духе

Код: sql
1.
2.
3.
4.
someTask := 
  externalDependencyClasspath.value
    .map(_.data)
    .foreach(lib => IO.copyFile(lib, куда(lib))



Плюс немного магии для связи. Или вообще

Код: sql
1.
2.
3.
4.
5.
6.
7.
externalDependencyClasspath := {
  val oldTaskValue = externalDependencyClasspath.value
  oldTaskValue
    .map(_.data)
    .foreach(lib => IO.copyFile(lib, куда(lib))
  oldTaskValud
}



Не тестировал, это общая идея.

P.S. Я не собираю fat jar! Я собираю executable jar и zip-архив со всеми нужными библиотеками.
...
Рейтинг: 0 / 0
Scala 3.0.0 релизнулась
    #40136787
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот как идеологически верно создавать инстации классов в Scala?

Тоесть аналог java Class.forName(..).newInstance()
...
Рейтинг: 0 / 0
Scala 3.0.0 релизнулась
    #40136794
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
А вот как идеологически верно создавать инстации классов в Scala?

Тоесть аналог java Class.forName(..).newInstance()

Для каких нужд? Рефлексия в скале не нужна, есть type class-ы. Единственное что приходит на ум - некая плагинная архитектура, или operability with java, ну в таком случае тот же самый Class.forName(..).newInstance()
...
Рейтинг: 0 / 0
Scala 3.0.0 релизнулась
    #40136810
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть конфигурация.

Код: java
1.
2.
 --conf "spark.geoCageApiKey=0000111111222222223333333" \
 --conf "spark.geoCageMock=true" \



И есть реализация которая содержит condition. Поскольку сервис ограниченный и платный то для задач
тестирования и отладки я использую заглушку. Мок.

Код: java
1.
2.
3.
4.
5.
6.
val geoCageMock = conf.get("spark.geoCageMock")

    val geoCageService : GeoCageBasic = geoCageMock match {
      case "true" => new GeoCageServiceMock
      case _ => new GeoCageService
    }


Вот хочу избавится от явного кондишена и указать просто полное имя класса в контексте языка Scala.
Вместо true/false - полное имя класса.
...
Рейтинг: 0 / 0
Scala 3.0.0 релизнулась
    #40136828
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Есть конфигурация.

Код: java
1.
2.
 --conf "spark.geoCageApiKey=0000111111222222223333333" \
 --conf "spark.geoCageMock=true" \



И есть реализация которая содержит condition. Поскольку сервис ограниченный и платный то для задач
тестирования и отладки я использую заглушку. Мок.

Код: java
1.
2.
3.
4.
5.
6.
val geoCageMock = conf.get("spark.geoCageMock")

    val geoCageService : GeoCageBasic = geoCageMock match {
      case "true" => new GeoCageServiceMock
      case _ => new GeoCageService
    }


Вот хочу избавится от явного кондишена и указать просто полное имя класса в контексте языка Scala.
Вместо true/false - полное имя класса.

Ну тут все адовый java-style, так что в таком же стиле и надо инстанцировать через Class.forName(), бессмысленно спрашивать о том как лучше сделать такое в scala. В Scala просто так не делают. Примерно такой же смысл как использовать hibernate на scala.
...
Рейтинг: 0 / 0
Scala 3.0.0 релизнулась
    #40136832
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как идеологически правильно?
...
Рейтинг: 0 / 0
Scala 3.0.0 релизнулась
    #40136955
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм... каррирование и частичная вычислимость. Что есть общее и что - разница?
...
Рейтинг: 0 / 0
Scala 3.0.0 релизнулась
    #40136959
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
А как идеологически правильно?

Вкратце -
1) все внешние модули через трейты. trait GeoStrategy
2) зависимость описывается через implicit. def doWork(implicit geo: GeoStrategy) либо сложнее через Final Tagless архитектуру, но это долгий рассказ
3) Все имплементации описываются в отдельных файлах. StrategyLive { impliciut val geo = new GeoStratgey}, StrategyMock{implicit val geo = GeoMock}
4) Никакого чтения в рантайме. Надо запустить тест - запусти тест, если реальный апп - то его. Решается созданием двух мейн классов
App{ import StrategyLive._} Test{import StartegyTest._}
5) Со спарком немного сложнее, там надо смотреть по обстоятельствам. Там не совсем идеологический scala style, что-то среднее, если надо то можно и Class.forName()
...
Рейтинг: 0 / 0
Scala 3.0.0 релизнулась
    #40136967
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник
mayton
А как идеологически правильно?

Вкратце -
1) все внешние модули через трейты. trait GeoStrategy
2) зависимость описывается через implicit. def doWork(implicit geo: GeoStrategy) либо сложнее через Final Tagless архитектуру, но это долгий рассказ
3) Все имплементации описываются в отдельных файлах. StrategyLive { impliciut val geo = new GeoStratgey}, StrategyMock{implicit val geo = GeoMock}

Да. Да вот на эту тему есть какой-то пример? Читая Одерского или Хорстмана я не нахожу четкого ответа на вопрос.
...
Рейтинг: 0 / 0
Scala 3.0.0 релизнулась
    #40136984
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
забыл ник
пропущено...

Вкратце -
1) все внешние модули через трейты. trait GeoStrategy
2) зависимость описывается через implicit. def doWork(implicit geo: GeoStrategy) либо сложнее через Final Tagless архитектуру, но это долгий рассказ
3) Все имплементации описываются в отдельных файлах. StrategyLive { impliciut val geo = new GeoStratgey}, StrategyMock{implicit val geo = GeoMock}

Да. Да вот на эту тему есть какой-то пример? Читая Одерского или Хорстмана я не нахожу четкого ответа на вопрос.


Ну тут на самом деле в scala сообществе большой такой косяк. Это довольно сложные концепции, к тому же завязанные на ФП, на просто хелловорлде они не совсем понятны и скорее оверкилл и оверинжениринг. Не встречал хороших статей которые обьясняют прямо с нуля. Сам прорывался к пониманию не один месяц, джуны и мидлы сразу после освоения нормальный туториал написать не могут, а те кто уже в теме пишут слишком сложно и не обьясняют некоторые концепты. А езе более всего осложняет ситуацию факт что вся эта машинерия(считай подход) сконцентрированы в сторонних библиотеках(cats, zio как основные) и имеют немного разные подходы и терминологию. Для начала надо разобраться что такое Type Class и Final Tagless, по последнему может вот это поможет - https://medium.com/becompany/tagless-final-in-scala-best-practices-8e5368d217d7
Лично я сторонник ZIO
...
Рейтинг: 0 / 0
Scala 3.0.0 релизнулась
    #40137022
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для начала надо разобраться что такое Type Class и Final Tagless, по последнему может вот это поможет - https://medium.com/becompany/tagless-final-in-scala-best-practices-8e5368d217d7
С TypeClass знаком. Ну по крайней мере они не вызывают вопросов.
А вот Final Tagless - это надо посмотреть...

Вообще заметил что чем дальше погружаешся в правильный ФП - тем больше код превращается
в доказательство теоремы. И разработчик - вроде как шизофреничный математик который сам
себе что-то доказывает.
...
Рейтинг: 0 / 0
Scala 3.0.0 релизнулась
    #40137157
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton


Вообще заметил что чем дальше погружаешся в правильный ФП - тем больше код превращается
в доказательство теоремы. И разработчик - вроде как шизофреничный математик который сам
себе что-то доказывает.

Что-то в этом есть. Но с другой стороны может программа и должна быть такой?
...
Рейтинг: 0 / 0
49 сообщений из 49, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Scala 3.0.0 релизнулась
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (0):
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]