Что я хочу сказать — предложенные варианты на джаве могут быть короче, могут быть интереснее, но они сложнее. И это при этом, что в сложности обвиняют скалу.
Ну как сказать… три разных синтаксиса для одной и той же задачи, причем все три специфичны для входных условий. одни хороши, когда у нас переменные, другие — когда функции, третьи — когда лямбды. Обратите внимание, в скале для этой задачи один и тот же синтаксис подходит для всех случаев, и этот синтаксис — прост.
тем, что в джаве есть только CompletableFuture, который спроектирован, скажем так, неудачно. И даже если сделали (или сделают) нормальный порт на джаву, то тормозящим фактором станет уже синтаксис:
Пишу на скале уже два года и ни за что не вернусь обратно. Даже если не лезть в систему типов и имплиситы, которые, имхо, вредны для ежедневного программирования, есть куча мелочей, которые в сумме дают сильный прирост скорости разработки. if/switch/code block as expressions, паттерн матчинг, однострочные объявления методов, сокращенный синтаксис вызова curried functions...
Быть может, когда-нибудь накатаю статью на тему "чем scala лучше с точки зрения промышленного программиста".
сменить порт ssh. Как ни возмущались бы выше, но большая часть взломов — это автоматические сканеры уязвимостей. другой порт -> меньше попыток взлома -> меньше шанс словить свежий эксплойт.
отключить аутентификацию по паролю и использовать только аутентификацию по ключам. Хранить приватный ключ в зашифрованном виде. Это сделает бессмысленным брутфорс и кражу приватных ключей с машины администратора.
(для параноиков) добавить в sshd двухфакторную аутентификацию по TOTP
(для рисковых параноиков) настроить на сервере файрволл, чтобы он разрешал подключения по SSH только с ваших IP адресов.
Что есть, то есть. Шум, неотключаемые кондиционеры (в приличных офисах) или духота (в офисах неприличных), регулярные больничные для недостаточно закаленных.
Правильное зонирование и достаточное количество переговорок — вот решение этой проблемы.
Пожалуйста, найдите какие-нибудь другие аргументы, без переходов на личности.
И нет, не должен, и тем более не гарантирует. Просто подумайте, какие усилия надо приложить, чтобы обеспечить 100% сохранность, скажем, одной страницы текста? Чтобы она не сгорела в пожаре, не содержала дефектов при изготовлении копии, не пропала из-за человеческого фактора? А электронные данные более хрупки.
Так что на практике всё упирается в экономическую целесообразность — в стоимость защитных мер, в доходы, в риски потери доходов в случае потери данных.
если речь идет о публичном сервисе, то выбирая между очень серьезными затратами на отказоустойчивость и шансом того, что 0.01% пользователей потеряет часть своих фоток с котиками...
А при запуске на одной машине множества Docker-сред злоумышленник чисто технически позволяет получить доступ к ресурсам одного пользователя через взлом другого.
Насколько я в курсе, это возможно только через эксплоит, дающий рутовые права. Т.е. защита не уступает стандартной практике использования множества пользователей с хорошо настроенными правами.
Не нужны тайп классы и имплиситы для промышленной разработки. Разве что для тестов — чтобы красивый DSL сделать.
Что я хочу сказать — предложенные варианты на джаве могут быть короче, могут быть интереснее, но они сложнее. И это при этом, что в сложности обвиняют скалу.
Ну как сказать… три разных синтаксиса для одной и той же задачи, причем все три специфичны для входных условий. одни хороши, когда у нас переменные, другие — когда функции, третьи — когда лямбды. Обратите внимание, в скале для этой задачи один и тот же синтаксис подходит для всех случаев, и этот синтаксис — прост.
И — откуда вообще мысль, что best practice — сложен? Посмотрите вот сюда: http://twitter.github.io/effectivescala/
Ничего страшного там нет.
о чем я и говорю — если НЕ выносить каждую лямбду в отдельный метод, то получается взрыв скобочек.
task1, task2 — это локальные переменные типа
CompletableFuture<Integer>v1, v2 — это, соответственно, Integer
CompletableFuture<Result> runTask3(int arg);тем, что в джаве есть только CompletableFuture, который спроектирован, скажем так, неудачно. И даже если сделали (или сделают) нормальный порт на джаву, то тормозящим фактором станет уже синтаксис:
и
Быть может, это выглядит лишь немного симпатичнее, но для больших кусков кода разница становится существенной.
Пишу на скале уже два года и ни за что не вернусь обратно. Даже если не лезть в систему типов и имплиситы, которые, имхо, вредны для ежедневного программирования, есть куча мелочей, которые в сумме дают сильный прирост скорости разработки. if/switch/code block as expressions, паттерн матчинг, однострочные объявления методов, сокращенный синтаксис вызова curried functions...
Быть может, когда-нибудь накатаю статью на тему "чем scala лучше с точки зрения промышленного программиста".
Соглашусь, по моему опыту — не нужно путать туризм с эмиграцией (с)
После работы куда-то идти уже неохота, на выходных хочется отдыхать, а не ехать на пляж.
Добавлю советов и я:
Зачем представлять-то
https://ru.wikipedia.org/wiki/Кубикл
Спасибо за ваш цикл!
Сразу видно — дорогой менеджер
Пожалуй, самый известный пример несинхронизированного кеша — это единственное не-final поле в
java.lang.String:Что есть, то есть. Шум, неотключаемые кондиционеры (в приличных офисах) или духота (в офисах неприличных), регулярные больничные для недостаточно закаленных.
Правильное зонирование и достаточное количество переговорок — вот решение этой проблемы.
И правда, очень красивое решение, и лучше не сделаешь, как ни крути.
Пожалуйста, найдите какие-нибудь другие аргументы, без переходов на личности.
И нет, не должен, и тем более не гарантирует. Просто подумайте, какие усилия надо приложить, чтобы обеспечить 100% сохранность, скажем, одной страницы текста? Чтобы она не сгорела в пожаре, не содержала дефектов при изготовлении копии, не пропала из-за человеческого фактора? А электронные данные более хрупки.
Так что на практике всё упирается в экономическую целесообразность — в стоимость защитных мер, в доходы, в риски потери доходов в случае потери данных.
если речь идет о публичном сервисе, то выбирая между очень серьезными затратами на отказоустойчивость и шансом того, что 0.01% пользователей потеряет часть своих фоток с котиками...
Насколько я в курсе, это возможно только через эксплоит, дающий рутовые права. Т.е. защита не уступает стандартной практике использования множества пользователей с хорошо настроенными правами.
Навевает ностальгию. Тот самый момент, когда ты узнал, что в сутках не всегда 24 часа.
А как вы отслеживаете метрики java приложений? Они часто специфичны для приложения и их много.