Обновить
@Scfread⁠-⁠only

Пользователь

10
Подписчики
Отправить сообщение

Не нужны тайп классы и имплиситы для промышленной разработки. Разве что для тестов — чтобы красивый DSL сделать.

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

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


И — откуда вообще мысль, что best practice — сложен? Посмотрите вот сюда: http://twitter.github.io/effectivescala/


Ничего страшного там нет.

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

task1, task2 — это локальные переменные типа CompletableFuture<Integer>


v1, v2 — это, соответственно, Integer


CompletableFuture<Result> runTask3(int arg);

тем, что в джаве есть только CompletableFuture, который спроектирован, скажем так, неудачно. И даже если сделали (или сделают) нормальный порт на джаву, то тормозящим фактором станет уже синтаксис:


task1.thenCompose(v1 -> {
  return task2.thenCompose(v2 -> {
    return runTask3(v1 + v2);
  });
});

и


task1.flatMap { v1 =>
  task2.flatMap { v2 =>
    runTask3(v1 + v2)
  }
}

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

Пишу на скале уже два года и ни за что не вернусь обратно. Даже если не лезть в систему типов и имплиситы, которые, имхо, вредны для ежедневного программирования, есть куча мелочей, которые в сумме дают сильный прирост скорости разработки. if/switch/code block as expressions, паттерн матчинг, однострочные объявления методов, сокращенный синтаксис вызова curried functions...


Быть может, когда-нибудь накатаю статью на тему "чем scala лучше с точки зрения промышленного программиста".

Соглашусь, по моему опыту — не нужно путать туризм с эмиграцией (с)


После работы куда-то идти уже неохота, на выходных хочется отдыхать, а не ехать на пляж.

Добавлю советов и я:


  • сменить порт ssh. Как ни возмущались бы выше, но большая часть взломов — это автоматические сканеры уязвимостей. другой порт -> меньше попыток взлома -> меньше шанс словить свежий эксплойт.
  • отключить аутентификацию по паролю и использовать только аутентификацию по ключам. Хранить приватный ключ в зашифрованном виде. Это сделает бессмысленным брутфорс и кражу приватных ключей с машины администратора.
  • (для параноиков) добавить в sshd двухфакторную аутентификацию по TOTP
  • (для рисковых параноиков) настроить на сервере файрволл, чтобы он разрешал подключения по SSH только с ваших IP адресов.

Спасибо за ваш цикл!

Сразу видно — дорогой менеджер

Пожалуй, самый известный пример несинхронизированного кеша — это единственное не-final поле в java.lang.String:


/** Cache the hash code for the string */
    private int hash; // Default to 0

Что есть, то есть. Шум, неотключаемые кондиционеры (в приличных офисах) или духота (в офисах неприличных), регулярные больничные для недостаточно закаленных.


Правильное зонирование и достаточное количество переговорок — вот решение этой проблемы.

И правда, очень красивое решение, и лучше не сделаешь, как ни крути.


  1. находим в памяти указатель на удаляемый элемент
  2. перезаписываем этот указатель следующим

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


И нет, не должен, и тем более не гарантирует. Просто подумайте, какие усилия надо приложить, чтобы обеспечить 100% сохранность, скажем, одной страницы текста? Чтобы она не сгорела в пожаре, не содержала дефектов при изготовлении копии, не пропала из-за человеческого фактора? А электронные данные более хрупки.


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

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

А при запуске на одной машине множества Docker-сред злоумышленник чисто технически позволяет получить доступ к ресурсам одного пользователя через взлом другого.

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

Навевает ностальгию. Тот самый момент, когда ты узнал, что в сутках не всегда 24 часа.

А как вы отслеживаете метрики java приложений? Они часто специфичны для приложения и их много.

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность