Как стать автором
Обновить
1
0
Валерий Андрикеев @andrikeev

Android разработчик

Отправить сообщение
Сложности с компаньоном

Для того, чтобы в Java константы виделись так же как и раньше, есть аннотация @JvmStatic. Работает тоже только для примитивов и String, для остальных создаётся getter.
    companion object {
        @JvmStatic val CONST1: String = "Const1"
        const val CONST2: String = "Const2"
    }


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

   @NotNull
   private static final String CONST1 = "Const1";
   @NotNull
   public static final String CONST2 = "Const2";

   public static final class Companion {
      /** @deprecated */
      // $FF: synthetic method
      @JvmStatic
      public static void CONST1$annotations() {
      }

      @NotNull
      public final String getCONST1() {
         return Test.CONST1;
      }

      private Companion() {
      }

      // $FF: synthetic method
      public Companion(DefaultConstructorMarker $constructor_marker) {
         this();
      }
   }

Чтобы «накачаться», нужно не просто ходить 3 раза в неделю и увеличивать рабочий вес. Для гипертрофии также необходимо питание - профицит калорий и достаточное кол-во белка (причем с высоким DCAAS).

Неужели после 9 месяцев не произошло совсем никаких положительных изменений в организме и в жизни?

Похоже на не очень качественный перевод, тяжело читать, ошибки
| System Design Interview длится 45 минут
| за эти полтора часа уметь раскладывать сложную систему на

Для ее решения у telegram API есть метод setWebhook. Суть метода заключается в том, что мы просто отправляем телеграмму url, по которому мы хотим получать информацию о новых обращениях к боту


Это не всегда хорошее решение (скорее даже никогда не хорошее). Во-первых, это лишняя дыра наружу в сети. Во-вторых, не получится легко перенести бота в другое место или запустить локально без изменения хука. Использовать ngrok в крупной компании ни одна уважающая себя СБ не разрешит. Кажется, что очень много проблем у такого решения.

Я бы предложил использовать polling вместо хуков: core.telegram.org/bots/api#getupdates
Очень не хочется занудствовать, но :)
Ещё один уровень абстракции в данном случае как раз позволяет не думать/не объяснять что такое виртуальная машина, как её создать, как настроить, какую выбрать ОС, какую версию питона поставить (написано ставим последнюю, а на деле 3.8.5, хотя уже есть 3.9.2) и много других. Настройка ВМ намного сложнее и выше риск, что что-то пойдет не так. Плюс это ещё и дороже будет, чем контейнер задеплоить. Короче ИМХО виртуальная машина по всем пунктам хуже контейнера для «первого погружения» в написание бота.

Например, pytelegrambotapi — это ведь тоже абстракция, которая скрывает все нюансы работы с API и ботом.
Не сильно труднее, чем настройка самой VM. Фактически всё тоже само нужно пихнуть в dockerfile в виде команд, собрать контейнер и вот уже можно запускать на огромном кол-ве облачных сервисов.

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

Кажется скорее вот этот: twitter.com/elonmusk/status/1256239815256797184
про переоценённость акций
Про продажу имущества, это уже наверное после падения :))
Просто в Java нет таких языковых конструкций. Но её хотят добавить: cr.openjdk.java.net/~briangoetz/amber/datum.html
И все современные языки тем или иным способ (data-классы, структуры и тп) стараются добавить поддержку конструкций для передачи данных
Иммутабельные объекты это уже больше про ФП, тут я привел пример классического объяснения проблемы, возникающей при неправильном наследовании.
Я кажется так и написал, у квадрата переопределены оба метода и увеличатся в два раза и ширина и высота, а значит площадь увеличится в четыре раза, а не в два. При этом он останется квадратом, но контракт метода будет нарушен.
Это же классический пример из литературы: у прямоугольника есть методы setWidth и setHeight, которые поидее работают независимо друг от друга. Но когда вы наследуете от него квардрат, вам нужно сделать так, чтобы при изменении ширины/высоты он оставался квдратом, то есть менялась и вторая величина. Кажется, что в этом нет ничего страшного, но нарушается LSP.
Например, вам нужна функция которая увеличивает площадь прямоугольников в 2 раза и подходящее решеним, например, увеличить их ширину в 2 раза:

public static void doubleSquare(List<Rectangle> rectangles) {
    for (Rectangle rectangle : rectangles) {
        rectangle.setWidth(rectangle.getWidth() * 2);
    }
}


Но если в списке прямоугольников будут и квадраты, то поведение становится неправильным.
Испарение идёт при влажности меньше 100%, пока не образуется насыщенный пар
single activity — это просто предположение кого-то, а не официальная позиция гугла

Отсюда:
Today we are introducing the Navigation component as a framework for structuring your in-app UI, with a focus on making a single-Activity app the preferred architecture.
Чтобы не писать бизнес-логику 2 раза под разные платформы
Компания поставляет незащищённое оборудование, это объективно плохо с любой стороны. История про хакера в столовой, конечно, абсурдна, потому что это юмор, но в каждой шутке есть доля шутки.
Если смотреть сквозь пальцы в одном случае, потому, что это «никому не приносит вреда», то каждый начнёт думать что и в его случае «ничего не случится».
Вспомним недавний случай со Штрих-М, у которых в прошивке оказалась закладка, которую никто не заметил, пока 30% розницы не закрылись на день.

И так за последний год серьёзных уязвимостей открылось куча, зачем на пустом месте создавать дыру
Поправьте, пожалуйста, код — нету номеров строк, а в тексте ссылки с номерами

Инъекция через конструктор как раз является приоритетным способом при использовании Dagger. Но иногда это невозможно, например, когда созданием экземпляра объекта занимается фреймворк, и конструктор не должен содержать параметров. Например Activity/Fragment/Service в Android.

Знакомый подход :)
www.youtube.com/watch?v=0IKHxjkgop4

Спасибо, очень интересно!

Мне вообще кажется, что GitHub as a Storage — это костыли.
Насчет альтернатив, я в своё время смотрел в сторону https://scorocode.ru

1

Информация

В рейтинге
Не участвует
Откуда
Фрязино, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность