Pull to refresh
0

программист

0,2
Rating
2
Subscribers
Send message

Как хорошо умеющий в столярку, огорчу - никто из столяров/краснодеревщиков не получает, как сеньор. Вообще никто. Даже близко такого нет. Я могу позволить себе любой инструмент, практически не глядя на цену, а им приходится очень сильно копить, чтобы купить очень нужный станок. Знаю многих столяров, которые так и делают лестницы и мебель на маленьких рейсмусах, хотя серьёзный станок пару лет назад стоил ~200тр, но они не могут его купить, хотя он позарез нужен.

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

Есть. Почему-то градл не любит линковать виндовую javafx при сборке под линуксом.

Читайте внимательнее, плиз. Это сборка моей программы, которая с "javafx, usb, rabbitmq, postgresql, блекджеком и девушками". Кстати, забыл, что там ещё и groovy в качестве скриптов работает .

Итого jar в данный момент 51мб . Ну плюс ещё нужна голая jre, без javafx


Если я правильно понял ваше "Итого: экзешник 120MB.", то это размер инсталяшки с jre ?

Пишу на котлине, система сборки gradle. Для сборки использую shadowJar.
Это почти рабочий пример, за исключение некоторых nba-кусочков

plugins {
    application
    id("java")
    kotlin("jvm") version "1.7.20"
    kotlin("plugin.serialization") version "1.7.20"
    id("com.github.johnrengelman.shadow") version "5.2.0"
}

dependencies {
    implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version")
    implementation("org.jetbrains.exposed:exposed:$exposed_version")
    implementation("org.postgresql:postgresql:$postgresql_version")
    implementation("com.rabbitmq:amqp-client:latest.release")
    implementation("org.codehaus.groovy:groovy-all:3.0.9")
    implementation("ch.qos.logback:logback-classic:$logback_version")
    implementation("no.tornado:tornadofx:1.7.19")
    implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:$kotlinx_serialization_version")
    implementation("org.usb4java:usb4java:1.3.0")
    implementation(fileTree("../libs"))  // тут лежат библиотеки javafx
}

sourceSets.main {
    java.srcDirs(
      // тут пути к исходникам
    )
    resources.srcDirs(
      // тут пути к ресурсам
    )
}

application {
    mainClassName = "ru.AAA.AAA.MainAbdKt"
}

tasks {

    shadowJar {
        manifest {
            attributes["mainClassName"] = "ru.AAA.AAA.MainAbdKt"
            attributes["Company"] = "AAA"
            attributes["Implementation-Version"] = "6.0 build $build от ${formatter.format(LocalDateTime.now())}"
        }
    }
    compileKotlin {
        kotlinOptions.jvmTarget = "1.8"
    }
    compileTestKotlin {
        kotlinOptions.jvmTarget = "1.8"
    }
}

100% вы неправильно используете эти инструменты. Мои fatjar с javafx, usb, rabbitmq, postgresql, блекджеком и девушками не выходят за 50мб.
Хотя делфийское приложение с тем же функционалом - 4мб ((

А лучше сразу подключить com.github.johnrengelman.shadow, и настроить его так, как нужно. Можно сразу нужную версию FX запаковать

@Query(
"""select * from jgproj_api.f_search_project_by_name(
p_search_text => cast(:search_text as text),
p_user_id => cast(cast(:user_id as text) as bigint),
p_offset=> :offset,
p_limit=> :limit,
p_sort=> cast(:sort as text))""",
nativeQuery = true
)

Господа, но ведь это жесть неподдерживаемая! У exposed-а ведь есть мощная dsl, которая сильно помогает не ошибиться в названии поля, и в случае каких-либо правок в слое базы, весь ошибочны код даже не скомпилится. Почему здесь вы такой подход не использовали?

Жаль, что обошли внимание Kotlin/JS. Очень интересно было бы пообщаться с соратниками по грабельному полю

Не так всё однозначно.. Вы можете привести пример языка, который строит нативный exe в считанные секунды? Пишу в основном под десктоп, и это прям боль, ждать когда сборщик соизволит закончить работу. Что ява, что котлин, что qt, что электрон, все тормознутые донельзя. Плюс размер бинарников какой-то умопомрачительный.
А родная старая делфа - нажмёшь F9, пара секунд и форма на экране. Как же мне этого не хватает.

Например, неработающий try catch вокруг запуска корутины. Почему нельзя было эту обёртку заставить работать как supervisorjob, зачем нужна ещё одна сущность?

Ну а ошибки в корутинах в kotlin/js это прям совсем боль. В ошибку вываливатся немеряного размера стек, который НЕ СОДЕРЖИТ информацию о ошибке. Удобно, да.

И нормальную обработку ошибок в корутинах в 31 релизе. Jav-ишники должны тоже страдать, как и котлинщики

Не планируется сделать нормальной обработку ошибок при использовании корутин? Это ведь бред - народ выпускает тучу инструкция и видео о том, почему обработка ошибок сделана так криво и как под это подстроится! "Тут смотрим, тут не смотрим, тут селёдку заворачивали" (с)

Одна из главных статей расхода - именно датчики СО2, они по 2200р. Самая большая статья расходов - вытяжной вентилятор на каждую комнату, они по 3500р. Далее по цене идёт шумоглушитель по 1100р. Все остальное (ардуинки, бп, сервы, датчики температуры и влажности) стоит копейки

Можно ещё одно уточнение : что значит "ручками"? На github-е есть какой нибудь минимальный пример с compose, чтоб в exe/appimage собирался? Чтоб получить обыкновенное, стандартное, десктопное приложение. Примерно как на delphi..

Разрешите вопрос для уточнения? Полный натив десктоп для windows/linux - это что: fat.jar или прям exe/appimage?

for (sensorId in 0 until sensors.length()) {

Это чтоб враг не догадался? )) Он-то думает, что sensorId - это идентификатор, а это просто декрементный счётчик

Посмотрел базу. Для многих есть :ФИО, телефон, e-mail, адрес, на сколько рублей заказал .

Очень интересно смотреть на соседей, можно узнать неожиданных мажоров ))

Как работающий на JavaFx более 5 лет, сильно рекомендую запаковать все требуемые библиотеки javafx прям в jar. Этим вы упростите себе жизнь, т.к. недокументированные особенности и баги меняются от версии к версии и то, что на вашей либерике работает нормально, на следующей либерике может поломаться.

Странное решение на профилях из леруа, они же ну прям совсем никакущие ни на жёсткость, ни на кручение. Почему бы не использовать правильные конструкционные профиля, которые и жёстче, и есть всяческий крепёж-уголки?

Information

Rating
3,014-th
Location
Москва и Московская обл., Россия
Registered
Activity