Pull to refresh
-14
darkit@darkitread⁠-⁠only

User

Send message
Извините за прямоту, но ваши суждения довольно инфантильны, все черное и белое, но мир сложнее.

Мир сложнее в каких либо других вопросах — но здоровый образ жизни это необходимый минимум если есть планы жить не тужить. Этот фундамент, без которого остальное уже не важно. Я уже писал, что можно обсуждать лучше нырять с аквалангом или на лыжах в горы. Но никак не — лучше лежать и жрать жареную картошку с майонезом или барбекю соусом.


Вы не можете допустить, что у автора нарушение гормональной регуляции

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


В результате человеку для сброса веса нужно в 3 раза больше заниматься чем вам.

и что это меняет? я не ною, что Джон с Сан Франциско работая в Гугл и делая какую то фигню получает 300К денег, а средняя зарплата в Украине 300 долларов. Да кому то повезло чуть больше кому то меньше, но дальше все зависит от нас. А если сидеть и ныть, то ничего никогда не изменится.


В итоге пашет он сильно больше вашего и понятно, что организм не очень этому рад. Или еще миллион причин.

Я вижу как проф спортсмены тренируются, чем они жертвуют, как устают и на что идут — поверьте наша усредненная жизнь программиста это Мальдивы для них.


Вы все пытаетесь придумать какие то отмазки — но мир такой что ему пофиг. Это только в наших интересах быть сильным и здоровым и умным. Я не могу как автор написать плаксивую статью и ждать когда меня инфаркт хватит, потому что у меня дети и мне надо сделать все возможное, чтобы их старт во взрослую жизнь был как можно проще а еще мне просто нравится жить — потому что вокруг куча интересных вещей, а не только сидеть дома за компьютером и жрать углеводы.

Просто копытами писать неудобно

Voice to Text им в помощь :)))


Короче эволюция — бессердечная сука.

Да, поэтому и надо бежать чтобы оставаться на месте. Миру пофиг на каждого из нас. и наши проблемы это только наши проблемы и решать их за нас никто не будет.

Вот смотрите что писал автор


На смену паническому желанию понять, что я делаю не так, приходило понимание что мне просто не повезло в жизни…
Попробовав еще несколько вещей типа велосипеда, ПВД, тениса, я сдался со спокойной совестью. Я попробовал достаточно чтобы смириться с тем, что любые физнагрузки я в гробу видал. И что мы с ними там скоро увидимся.
… Зачем я это пишу? Что бы вы знали, что вы не одиноки в своей проблеме. Что не все зависит от вас.

Я однозначно вижу, что антилопа решила больше не бегать, приняла решение попасть в лапы льва, свалить лень на удачу и отмазаться что все решено и от личности ничего не зависит. Где я не прав?

Ну в общем-то по Вашим сообщениям и видно, что Вы не сталкивались с теми проблемами, с которыми столкнулся автор.

И у автора нет проблем, у него есть лень. Посмотрите последний бой Фергюсона против Оливеры — ему делали болевой на руки и 99.9% людей сдались бы в этой ситуации и только сила духа была с ним.
Всем людям тяжело заниматься и когда тебе не тяжело значит ты занимаешься какой то фигней — в этом и прелесть спорта помимо здорового организма еще в ментальном здоровье. Для кого то нет печенек в офисе это катастрофа, а я вспоминаю как смог выбраться с ситуации, когда у меня забрали спину и душили, так что чувствовал как пломбы вылазят.
И да у меня сейчас и давно нет таких проблем как чуть-ли 100% всех слезливых статей на Хабре. Потому что я просто не считаю это проблемами, а иду дальше. Иначе вместо радостной жизни, можно сидеть ныть и жалеть себя.


Если у Вас есть нелюбимое занятие, то можете просто представить, что Вам врачи прописали им заниматься по 2 часа каждый день до конца жизни.

Берешь и занимаешься, какие варианты есть? Поплакаться на форуме или забыться в пьяном угаре? Вот хорошая песня показывающая как надо жить.

Тут куда ни плюнь — везде истории успеха, которые создают ощущение, что все молодцы, и только ты один лузер, поэтому полезно бывает ознакомиться с альтернативным опытом,

А тут просто нет субъективного мнения — можно спорить что лучше Го или Джава, кто красивее рыжие или брюнетки и тд. Но необходимость в физической активности для здорового человека — это факт. Поэтому я не понимаю смысла этой статьи? Что она может изменить? Или что в ней обсуждать?


зачем такая жизнь?

вы мне делаете удивление, если каторга для вас это жизнь обеспеченного программиста в комфортном офисе/доме которому надо сходить на час в зал три раза в неделю и еще пару раз просто прогуляться. Вы хоть реально понимаете, что наверное 90% людей на Земле херячат не разгибая спины и для них "мучения" автора это волшебная сказка.


наоборот, брокколи и бег.

ну я вот не ем брокколи, а спокойно лопаю чипсы раз в 1-2 недели, бургеры по несколько раз на неделю, пью вино и пиво. И потом прихожу бороться и даю пропотеть 20-летним спортсменам.

Зачем вы лень автора и его жуков пытаетесь переложить на меня??? Причем автор однозначно сказал, что он сам виноват что не ходит в зал. Так же я ни разу не видел (предполагаю что такое может быть) за свою практику чтобы над новичком издевались что в тренажерке, что на борцовском ковре, что в ринге. Наоборот, все заинтересованы чтобы как можно больше людей ходило. У нас на борьбе сплошной интернационал — украинцы, грузины, дагестанцы, немцы и еще немало других национальностей, разные возраста, профессии, доход и нет конфликтов и проблем. Но вы продолжайте выдумывать, что виноваты всегда другие.

А Вы думаете антилопы получают удовольствие от убегания ото львов?

Я думаю, что антилопы, которые отказываются бегать, не долго живут и написать слезную статью не могут. Поэтому они нее занимаются демагогией и нытьем. Не зря говорят — движение это жизнь.


Разговор в статье идет о том, что это не приносит никакого удовольствия.

Разговора в статье нет, есть нытье, что хочу лежать, жрать и быть здоровым. Извини, но так не бывает.
Конструктива от статьи ноль, слез ведро, а вывод "Что не все зависит от вас." вообще не понятно откуда взялся.


И я автора вполне понимаю.
А я не понимаю, но речь даже не об этом, и не о том что думаете вы, автор, я, Вася, Петя и тд. А просто о том надо быть активным физически для здоровья — вот и все :) Это очень простой факт и статьи нытиков на форуме или мои негодующие комментарии ничего не изменят.
Что не все зависит от вас.

Вот это как этот вывод то получился??? Наоборот, когда ты занимался и был человеком, то и здоровье твое было в норме, а как начинал жрать то приходили проблемы. Те все как раз зависит от тебя.


Статья нытика, если человек с мозгами не может изменить себя, чтобы не просто хорошо жить, а банально выжить, то это тупиковое звено. Представляю такую статью на форуме антилоп — мол как меня забадало убегать от львов. Или же на форуме львов — какие, с**а, антилопы быстрые, а я так бегать за ними не люблю, пусть сами приходят ко мне на съедение.

Он не может сам сориентироваться по поиску через GitLab/GitHub

Открываете корень всех проектов и листаете и ищите. Ни чем не отличается от моно репозитория. Зато когда у вас репозиторий на сервис то локально вы можете их группировать или называть как хотите. Плюс не надо тянуть 100500 сервисов над которыми вы вообще не работаете и знать не надо что там.


Ведь через Go.mod это не так просто сделать.

Выкиньте Го :) и сразу куча проблем уйдет.


Если хочется, например, обновить библиотеку, чтобы она обновилась во всех сервисах

А зачем это? Микросервис это как раз о том, что можно работать и менять только один сервис и остальным будет все равно что там внутри. К примеру, в новом сервиса хорошо заходят клиентская инвалидация с Редис 6, но это новая версия библиотеки в которой есть изменения по АПИ и это значит что фиг я протащу такое изменение в мой сервис и отдельный редис, потому что у остальных есть дела поважнее чем переводить свои сервисы на новую версию библиотеки.


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

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


В нем вы будете видеть, что делают другие команды, или хотя бы замечать появляющиеся обновления

Я не всегда успеваю понимать что происходит в своей команде, а мониторить всю компанию это надо тратить все время и не писать ни строчки кода.


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

А вот это самая большая проблема — если у вас возникает такая ситуация то нет у вас микросервисов, а есть распределенный монолит. При правильной архитектуре, локально вам нужен только один ваш сервис и его состояние. А то потом вы упретесь что надо поднять 100 сервисов, а с ними еще 40 Редисов, 30 Постгресов и тд что не реально на одной локальной машине. И если это возможно все поднять на одной машине и вам такое надо то зачем микросервисы? Сделайте монолит и сразу кучу проблем уйдет :)

А если они привносят простоту?

Для меня простота между Optional.ofNullable(im.getPaths()).orElse(List.of())) и im.paths?:listOf() несущественна, что надо привносить новый язык. Который все равно будет работать в джава мире.

А потом вы можете открыть статьи "Why I love Go" и почитать как это замечательно писать много много букв, как не нужны генерики и так далее. Это я к тому, что люди разные и им нравится разное. И многие (включая меня) не видят смысла вводить новый язык только потому что это лишь сэкономит вам чуток кода но добавит допольнистельную сложность (теперь два языка вместо одного). В плане программирования Котлин ничего не привносит нового.

Я уже несколько раз говорил, что мне читать Optional.ofNullable(im.getPaths()).orElse(List.of())) гораздо понятней чем пытаться разобраться во всех знаках вопроса и Элвисах. Так же написание в ИДЕ джавовского кода быстрое из-за автокомплита и особо не замедляет ничего по сравнению с Котлин.

Если очень сильно глаза зажмурить

Ничего не могу сказать, тк за все время я ни разу не использовал BigDecimal и не могу сказать это плохо не плохо, есть ли что то оборачивающее в более наглядный вид или нет.


Это не только со Flux работает.

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


А Вы попробуйте сначала язык

Пробовал, не зашло.

тогда ок. А как Вы решаете, когда использовать Lombok аннотации вроде Nullable, а когда использовать Optional?

Здравый смысл. и коллекции я не использую нулевые.


А мне очень заходит, особенно для цепочек вложенных значений вроде

Такое и с Optional не особо отличаться будет.


А в котлине можно ещё и самому этот метод добавить, не меняя Flux

А вот это тоже на мой взгляд не надо делать. Для Flux можно сделать явно чере as а не прикручивать то чего в самой библиотеки нет. Но опять же все это IMHO и оно складывается, что Котлин не заходит мне на БЕ. Мыслить все равно приходится в одной и той же парадигме. А писать ? вместо map уже мелочь.

Это вся команда так проголосовала
За других не могу говорить, но в текущей компании да — хочешь что то привнести новое докажи, что оно стоит того.
А усложнять проект потому что Котлин — это модно, стильно, молодежно смысла нет. И разговор не столько про понимать код на Котлине, сколько зачем оно мне надо в бэкенде.

Вас что то не туда унесло. Я говорил про всю эко-систему Джавы и что нет ее брать одну в рамках вашей фразы


Эта библиотека не содержит зависимостей ни на что, кроме компилятора Kotlin.

а откуда у вас пришло требование "разработке приложений используя Джаву"

Смотря какие приложения. Где критична память то я бы брал Раст сейчас, если это Виндос то С# и прочие вещи от Микрософта. А когда надо в организации сделать микросервисы то брал бы Джаву, потому что много разработчиков, много библиотек. Общаясь на Хабре я выражаю свое личное мнение.

Только у Вас даже на таком небольшом участке кода — NPE(scriptBaseDir по условиям задачи — nullable).

Нет, я его сделал просто Optional<...>


Сравните — котлин со стандартной библиотекой выигрывает как по читаемости

Мне обилие ? и ?: ну вообще не заходит. Я и в джава x ?y:z не люблю пользоваться.


так и по объему кода в два раза.
Переношу .map(FileScriptSource::new) в строчку выше и убираю .collectList(); тк у меня везде и так реактивщина и получаем 4 против 3 :)))

Так же всегда можно придумать код который будет использовать операторы от Flux/Mono и которых нет в Котлине и наоборот, как в приведеном примере filterIsInstance


А Flux, как и Lombok — это не стандарт, и Ваш код вполне может вызвать вопросы у рядового Java программиста.

Да это так, я проводил много интервью и люди со стримами не могут совладать, пишут такую жуть. Так что им и Котлин не поможет.

Намного понятнее стало?

Конечно нет, а вот так?


        Flux.fromIterable(annotations)
                .filter(item -> item instanceof Import).cast(Import.class)
                .flatMapIterable(im -> Optional.ofNullable(im.getPaths()).orElse(List.of()))
                .map(sourceName -> scriptBaseDir.map(sc -> sc.resolve(sourceName)).orElseGet(() -> new File(sourceName)))
                .map(FileScriptSource::new)
                .collectList();

Что не особо отличается от варианта с Котлином

Нет — я говорю о разработке приложений используя Джаву и возможные библиотеки. Потому что я не расматриваю сферического коня, а беру свою реальную разработку. Мне не важно, что в Котлине есть сингленом из коробки в одну строчку или что в Го есть каналы в стандартной поставке. Потому что в Джаве есть все что угодно в виде сторонних библиотек. Хотите асинхроности берете Reactor или RxJava, слишком жирно, тогда берете сырой Нетти, надо по быстрому что то запилить берете Спринг с которым знакомо подавляющее большинство разработчиков, а можно Кваркус и компиляцию в нативный бинарник и этот список можно продолжать. Я опять же писал — что Котлин отличный вариант для Андроида с его застывшей старой джавой. А на бэкенде нет смысла вводить дополнительный язык, чтобы попытаться съекономить пару строчек кода.

При вызове public методов надо проверить параметры на null

Lombok @NonNull


Здесь синглтон, так что в Java будут еще лишние поля и пр.

Может и круто, но я не помню когда я руками создавал синглетон. У меня как то ДИ и там повесил @Singleton и нет проблем. Не думаешь потом как статику выковырять.


Этот метод в Java будет довольно жирным, его надо будет разбить.

Этот пункт не понял. Как по вашему это будет в Джаве?


В строках отсюда для Java надо будет написать лишнего кода с stream()

Вот такое мне читать очень тяжело


val importedSources = annotations.flatMap {
            (it as? Import)?.paths?.map { sourceName ->
                FileScriptSource(scriptBaseDir?.resolve(sourceName) ?: File(sourceName))
            } ?: emptyList()
        }

или такое


hostConfiguration(ScriptingHostConfiguration {
            jvm {
                val cacheExtSetting = System.getProperty(COMPILED_SCRIPTS_CACHE_DIR_PROPERTY)
                    ?: System.getenv(COMPILED_SCRIPTS_CACHE_DIR_ENV_VAR)
                val cacheBaseDir = when {
                    cacheExtSetting == null -> System.getProperty("java.io.tmpdir")
                        ?.let(::File)?.takeIf { it.exists() && it.isDirectory }
                        ?.let { File(it, "main.kts.compiled.cache").apply { mkdir() } }
                    cacheExtSetting.isBlank() -> null
                    else -> File(cacheExtSetting)
                }?.takeIf { it.exists() && it.isDirectory }
                if (cacheBaseDir != null)
                    compilationCache(
                        CompiledScriptJarsCache { script, scriptCompilationConfiguration ->
                            File(cacheBaseDir, compiledScriptUniqueName(script, scriptCompilationConfiguration) + ".jar")
                        }
                    )
            }
        })

На мой взгляд ваш код не поддерживаемый, он коротко написан один раз и что либо с ним сделать потребует очень много сил. Джавовский стрим или Flux как то проще для восприятия и не сказать что будет на порядок больше строк кода.


Flux.just(userUid)
                .flatMap(repository::getByUser)
                .collectList()
                .filter(not(List::isEmpty))
                .doOnNext(items -> cache.save(items).subscribe())
                .flatMapIterable(counters -> counters);

А вот такие однострочники в Java пока невозможны

Будет две строчки. Это настолько критично?


Вы же поймите что я тоже могу привести примеры где я сделаю на джаве в пару строчек а вы в Котлине будете простыню писать. Напримеру вас есть 20 пропертей в классе и надо одно из них убрать из вывода toString?
Помните мы уже с вами это обсуждали.
Вот как в Джаве это


@Value
@ToString(exclude = "creditCard")
public class CounterItem {
  String creditCard;
  ... и остальные 19 полей.
}

или вот такое


internal fun URL.toFileOrNull() =
    try {
        File(toURI())
    } catch (e: IllegalArgumentException) {
        null
    } catch (e: java.net.URISyntaxException) {
        null
    } ?: run {
        if (protocol != "file") null
        else File(file)
    }

взяв Vavr я напишу в одну строчку.


Поэтому все что у вас в Главное: это очень субьективно

Information

Rating
Does not participate
Registered
Activity