
Nikolay
15.11.2016
21:27:15
import scala.meta._
val trueTrues = 1 to 5 map ( _ => q"true")
val trueTrues:Seq[Term] = 1 to 5 map ( _ => q"true")
(trueTrues.tail foldLeft trueTrues.head) { case(acc,el) => arg"$acc.&($el)"}
res19: scala.meta.Term = true.&(true).&(true).&(true).&(true)
сейчас я примерно так сделаю
получается что использую head списка как zero element. можно какой-то "пустой" Term использовать?

Aleksey
15.11.2016
21:33:49
в такие моменты хочется что бы в скале были базовые тайпклассы. посмотрел, что для Term определена группа и все вопросы отпали.

Google

Nikolay
15.11.2016
21:35:01
было бы здорово

Aleksey
15.11.2016
21:41:55
Можно поюзать reduce вместо foldLeft если ты уверен что список не пустой (ну или ко всему прочему заюзать NonEmptyList).
trueTrues reduce { (acc,el) =>
arg"$acc.&($el)"
}
а, не
reduceLeft.

Nikolay
15.11.2016
21:45:08
для непустого списка подходит, спасибо

Aleksey
15.11.2016
21:49:08
И да. https://github.com/scalameta/scalameta/blob/master/scalameta/trees/src/main/scala/scala/meta/Trees.scala#L99 вот это похоже на нейтральный элемент.

Nikolay
15.11.2016
21:52:05
scala> val zero: Term = Term.Placeholder()
zero: scala.meta.Term = _
_

Aleksey
15.11.2016
21:54:18
Да, не оно.
Ну тогда нет.

Andry
16.11.2016
06:15:23

Denis
16.11.2016
07:10:30
Упш 2.0

Google

Denis
16.11.2016
08:01:34

Vasily
16.11.2016
08:06:47
По поводу xml в xml - обычно это требования к шлюзам
Нам так для НСПК пришлось делать
Есть xml с информацией для шллюза, внутри него тело запроса

Denis
16.11.2016
08:07:56
ну я уже понял затею

Vasily
16.11.2016
08:08:07
По идее, CDATA тут один из самых простых вариантов реализации

Denis
16.11.2016
08:08:20
типа xml конверт которму посчастливилось нести в себе xml

Vasily
16.11.2016
08:08:40
Угу
Шлюз просто настроен пропускать только такие конверты
ПОэтому проще написать сторонний сервис, который будет все в такие конверты зхаворачивать
Чем реализовывать на уровне внутренней логики

Daniel
16.11.2016
08:10:05
внутренние интеграции через шину часто также делают

Vasily
16.11.2016
08:11:51
Те же яйца, только в профиль. Все равно есть кусок кода, который оборачивает/разворачивает запросы. Где его расположить - дело вкуса

Nikolay
16.11.2016
08:19:31

Denis
16.11.2016
08:20:30
да точно, чет не заметил что ты выражение из них делашеь
зависит от того что решаешь, можно изначально матч сделать и кейс для Nil зафейлить с ошибкой
а для x :: xs уже вызвать xs.foldLeft(x)
так хотя бы meaningful error будет а не NoSuchElementException

Nikolay
16.11.2016
08:24:46
Да, это я понимаю. На практике я понимаю как это решить, меня интересовало наличие пустого Term в принципе.

Google

Bulbu
16.11.2016
09:50:59
кто знает как в идее, если создал проект с автогенерацией папок (java, scala, resources etc.) , убрать эту автогенерацию
все, нашел сам)
в опциях сбт

Dim
16.11.2016
10:23:03
Не понимаю зачем это разделение по паркам на java scala. У нас все исходники в одном дереве scala.

KrivdaTheTriewe
16.11.2016
10:30:08
и в одном файле ?

Dmitry
16.11.2016
10:31:15
!
не понимаю зачем это разделение по классам и файлам. У нас все исходники в одной функции.

Dashok
16.11.2016
10:34:51

Nikita
16.11.2016
10:35:14
В скрипте же

Mikhail
16.11.2016
10:35:32
зачем вобще функции?
и языки программирования не нужны, я в уме программирую

Dmitry
16.11.2016
10:36:08
микросервисы сделали это реальностью

Andry
16.11.2016
10:42:47
машинный код наше фсё
Кстати раньше на заре компутерной эпохи 88-90 гг прошлого века, можно было напрямую редактировать память и запускать выполнение программы с любого адреса...

KrivdaTheTriewe
16.11.2016
10:46:15
так и сейчас можно

Alexander
16.11.2016
10:48:06
заре компутерной эпохи 88-90 гг прошлого века ????

Andry
16.11.2016
13:53:57
так и сейчас можно
Ой ли? т.е. нажимаешь пару кнопок и редактируешь содержимое ячеек памяти?

Viacheslav
16.11.2016
13:59:28
http://u.kanobu.ru/comments/images/3b5e0e92-924b-4aac-ae27-9ba03a5fc515.jpg
простите

Artem
16.11.2016
14:00:27

Andry
16.11.2016
14:02:05

Google

Vyatcheslav
16.11.2016
14:02:14
ArtMoney

Andry
16.11.2016
14:03:58
Кстати мож кто подскажет как валидировать XML по схеме в скале? Стандартный пакет xml Умеет енто?

Artem
16.11.2016
14:05:58

folex
16.11.2016
14:14:15
потому что ГДЕ ПЕРФОКАРТЫ А
где ДУХ

Vyatcheslav
16.11.2016
14:15:18
по поводу XML - умеет, только: http://stackoverflow.com/a/26758580/4050580 . А еще какие-то пляски были с тем, что то ли каждый раз xsd выкачивается и не кешируется, то ли еще что-то, уже не помню. Так что осторожнее со схемами, которые на других серваках

KrivdaTheTriewe
16.11.2016
14:26:23

Sergey Tolmachev
16.11.2016
15:29:06
всем привет, есть гуру sbt-native-packager?
хочу сделать несколько task, которые пакуют deb с разными лоадерами
и кастомными биндингами
биндинги для таски
mappings in Universal in packageDebianUpstart += ((resourceDirectory in Compile).value / "logback.xml") -> "conf/logback.xml"
не работают
из этого примера что-то не больно работает https://github.com/muuki88/sbt-native-packager-examples/blob/master/multiple-package-outputs/build.sbt

Lev
16.11.2016
15:39:50

Sergey Tolmachev
16.11.2016
15:40:07
спасибо! я сейчас кину пример своего конфига
http://pastebin.com/rt4hsjhW

folex
16.11.2016
15:43:40
У меня вот так работает
.settings(
linuxPackageMappings in Debian += {
val file = baseDirectory.value / "conf/"
packageDirectoryAndContentsMapping((file, "/usr/local/projectname/configs/"))
}
)
пользуй хелперы вроде packageDirectoryAndContentsMapping

Sergey Tolmachev
16.11.2016
15:44:44
а почему Universal нельзя?

folex
16.11.2016
15:44:57
ни малейшего понятия

Google

Sergey Tolmachev
16.11.2016
15:45:31
и как я вообще могу адекватно создать генерацию для разных лоадеров, если для них нужен плагин. нельзя включать/выключать плагины для тасок
в якобы рабочем устаревшем примере вообще нет плагинов

folex
16.11.2016
15:46:06
А что за лоадеры?

Sergey Tolmachev
16.11.2016
15:46:32
systemd и upstart
которые в com.typesafe.sbt.packager.archetypes.systemloader

folex
16.11.2016
15:46:59
ага, понял
Ты наверное можно просто условно написать что если лоадер нужен такой-то, устанавливаем его активным в packager, и для него пишем конфиг
ну и можно иметь несколько наборов сеттингов для каждого лоадера, и включать их точно так же по условию или вообще просто таски отдельные сделать

Sergey Tolmachev
16.11.2016
15:48:19
я писал через переменные среды и это работало, но это костыльно как-то
я вот нашел такой подходящий мне пример иии пилю его

folex
16.11.2016
15:48:43
одновременно иметь и те, и те настройки будет тяжко, кмк

Sergey Tolmachev
16.11.2016
15:48:49
ну вот у меня отдельная таска для отдельного лоадера
я в первый раз настолько глубоко в sbt ушел
linuxPackageMappings in Universal in packageDebianUpstart += packageDirectoryAndContentsMapping((resourceDirectory in Compile).value / "logback.xml" -> "conf/logback.xml")
так то же самое

Lev
16.11.2016
15:51:26
он только завтра будет на связи

Sergey Tolmachev
16.11.2016
15:51:51
ой, там Debian надо наверное

Lev
16.11.2016
15:52:06
а что за проблема-то? не собирается или systemV/Upstart не подхватываются?

Sergey Tolmachev
16.11.2016
15:52:27
ну вот logback.xml он вообще не кладет
с лоадерами отдельная ситуация. если я делаю как в том примере, то он вообще конфиги лоадеров не кладет
а включив плагины и запуская одну таску он хотя бы кладет правильный конфиг. зачем-то дважды, судя по логам