Для того, чтобы в 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 в крупной компании ни одна уважающая себя СБ не разрешит. Кажется, что очень много проблем у такого решения.
Очень не хочется занудствовать, но :)
Ещё один уровень абстракции в данном случае как раз позволяет не думать/не объяснять что такое виртуальная машина, как её создать, как настроить, какую выбрать ОС, какую версию питона поставить (написано ставим последнюю, а на деле 3.8.5, хотя уже есть 3.9.2) и много других. Настройка ВМ намного сложнее и выше риск, что что-то пойдет не так. Плюс это ещё и дороже будет, чем контейнер задеплоить. Короче ИМХО виртуальная машина по всем пунктам хуже контейнера для «первого погружения» в написание бота.
Например, pytelegrambotapi — это ведь тоже абстракция, которая скрывает все нюансы работы с API и ботом.
Не сильно труднее, чем настройка самой VM. Фактически всё тоже само нужно пихнуть в dockerfile в виде команд, собрать контейнер и вот уже можно запускать на огромном кол-ве облачных сервисов.
Причем есть уже много контейнеров готовых для Telegram-ботов, бери и пользуйся
Просто в 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);
}
}
Но если в списке прямоугольников будут и квадраты, то поведение становится неправильным.
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.
Компания поставляет незащищённое оборудование, это объективно плохо с любой стороны. История про хакера в столовой, конечно, абсурдна, потому что это юмор, но в каждой шутке есть доля шутки.
Если смотреть сквозь пальцы в одном случае, потому, что это «никому не приносит вреда», то каждый начнёт думать что и в его случае «ничего не случится».
Вспомним недавний случай со Штрих-М, у которых в прошивке оказалась закладка, которую никто не заметил, пока 30% розницы не закрылись на день.
И так за последний год серьёзных уязвимостей открылось куча, зачем на пустом месте создавать дыру
Инъекция через конструктор как раз является приоритетным способом при использовании Dagger. Но иногда это невозможно, например, когда созданием экземпляра объекта занимается фреймворк, и конструктор не должен содержать параметров. Например Activity/Fragment/Service в Android.
Для того, чтобы в Java константы виделись так же как и раньше, есть аннотация @JvmStatic. Работает тоже только для примитивов и String, для остальных создаётся getter.
Но при этом константа становится приватной и доступна только из того же пакета. Для внешнего доступа создаётся тот же getter, что и обычно
Чтобы «накачаться», нужно не просто ходить 3 раза в неделю и увеличивать рабочий вес. Для гипертрофии также необходимо питание - профицит калорий и достаточное кол-во белка (причем с высоким DCAAS).
Неужели после 9 месяцев не произошло совсем никаких положительных изменений в организме и в жизни?
Похоже на не очень качественный перевод, тяжело читать, ошибки
| System Design Interview длится 45 минут
| за эти полтора часа уметь раскладывать сложную систему на
Это не всегда хорошее решение (скорее даже никогда не хорошее). Во-первых, это лишняя дыра наружу в сети. Во-вторых, не получится легко перенести бота в другое место или запустить локально без изменения хука. Использовать ngrok в крупной компании ни одна уважающая себя СБ не разрешит. Кажется, что очень много проблем у такого решения.
Я бы предложил использовать polling вместо хуков: core.telegram.org/bots/api#getupdates
Ещё один уровень абстракции в данном случае как раз позволяет не думать/не объяснять что такое виртуальная машина, как её создать, как настроить, какую выбрать ОС, какую версию питона поставить (написано ставим последнюю, а на деле 3.8.5, хотя уже есть 3.9.2) и много других. Настройка ВМ намного сложнее и выше риск, что что-то пойдет не так. Плюс это ещё и дороже будет, чем контейнер задеплоить. Короче ИМХО виртуальная машина по всем пунктам хуже контейнера для «первого погружения» в написание бота.
Например, pytelegrambotapi — это ведь тоже абстракция, которая скрывает все нюансы работы с API и ботом.
Причем есть уже много контейнеров готовых для Telegram-ботов, бери и пользуйся
Кажется скорее вот этот: twitter.com/elonmusk/status/1256239815256797184
про переоценённость акций
Про продажу имущества, это уже наверное после падения :))
И все современные языки тем или иным способ (data-классы, структуры и тп) стараются добавить поддержку конструкций для передачи данных
Например, вам нужна функция которая увеличивает площадь прямоугольников в 2 раза и подходящее решеним, например, увеличить их ширину в 2 раза:
Но если в списке прямоугольников будут и квадраты, то поведение становится неправильным.
Отсюда:
Если смотреть сквозь пальцы в одном случае, потому, что это «никому не приносит вреда», то каждый начнёт думать что и в его случае «ничего не случится».
Вспомним недавний случай со Штрих-М, у которых в прошивке оказалась закладка, которую никто не заметил, пока 30% розницы не закрылись на день.
И так за последний год серьёзных уязвимостей открылось куча, зачем на пустом месте создавать дыру
Инъекция через конструктор как раз является приоритетным способом при использовании Dagger. Но иногда это невозможно, например, когда созданием экземпляра объекта занимается фреймворк, и конструктор не должен содержать параметров. Например Activity/Fragment/Service в Android.
www.youtube.com/watch?v=0IKHxjkgop4
Спасибо, очень интересно!
Мне вообще кажется, что GitHub as a Storage — это костыли.
Насчет альтернатив, я в своё время смотрел в сторону https://scorocode.ru