Дело не в том, что может. Если хоть один мужик доминирует, это уже вполне повод для гонений на как минимум его самого как мерзкого угнетателя, и всех кто выскажется в защиту. Дело ведь не в долях и деталях каких-нибудь, а в том, что хочется хлеба и зрелищ.
(Знаю, что никому в общем-то неинтересно, но отвечу всё равно)
Адаптер — это приведения API вашего модуля в форму более удобную для клиентского кода. Сам модуль поведения не меняет, меняется формат вызовов. Такое часто делают для библиотек ведения лога, когда приложение заводит себе внутренний интерфейс с теми же методами logError, logWarning, logDebug, и пишут адаптеры для аналогичных типов из библиотек, которые дёргают те же по смыслу методы из библиотеки. Удобно тем, что можно библиотеку сменить, и в коде приложения нужно будет поменять только сам адаптер.
Фасад — это сокрытие части API вашего модуля от клиента (чтобы он мог делать только "безопасные" вызовы, где фасад берёт ответственность за ненарушение каких-нибудь инвариантов). Или же напротив, фасад может объединять несколько модулей под одной крышей, чтобы создать нечто вроде единой панели управления. Ненарушение инвариантов по-прежнему важно.
Декоратор — это изменение поведения объекта без изменения API. Например, unmodifiableCollection в Java, из которого можно только читать, но попытка изменения содержимого (например, вызов add) приведёт к ошибке (да, я прекрасно знаю, почему так делать плохо и что нужен отдельный ReadableCollection). У нашего проекта, например, есть декоратор, который в зависимости от политик приложения делает вызовы некоторых API no-op в строгом соответствии с требованиями — потому что некоторые не хотят оплачивать полный функционал, и тягать проверки политик повсюду в итоге оказалось затратнее, чем сделать и поддерживать один декоратор.
Споры там в основном не что такое сам паттерн, а как обозвать конкретный пример — большинство из них обычно объединяют как минимум два из трёх, иногда все три и ещё парочку дополнительных сверху.
Upd: Если хорошенько подумать, то адаптер и декоратор как шаблоны вполне функциональны, и могут применяться и в ФП. С фасадом сложнее, так как единственная приходящая мне в голову аналогия фасаду в ФП это каррирование, что вообще говоря не совсем то что нужно.
Первые — это просто чистые функции ФП, вторые — это те самые мутабельные объекты, обменивающиеся сообщениями в духе Smalltalk.
Но что может сделать чистая функция с объектом, вся структура которого скрыта внутри, и он, по сути, имеет только какой-нибудь метод acceptMessage? Где-то должны жить ещё и значения, причём с API доступным для таких чистых функций. Да хоть те же количества, которые можно складывать между собой. Возможно, что я просто не до конца понимаю идею про обмен сообщениями.
Нет, но Code Of Conduct ведь вводятся не просто так и потому, что кто-то просто захотел, а «вон тот юзер меня неправильным словом в третьем лице назвал, хватит это терпеть, нужны правила чтобы за такое банить». То есть «из-за кого» — из-за пользователя, что других пользователей неправильными словами называет. «Против кого» — против того кто называл другого пользователя неправильными словами. Не?
Я тут вообще никакого «будто» не предполагал.
Как я понимаю, адреса 7zip никто разблокировать не станет без специального указания. То есть, если прекратят попытки блокировок, то не станут добавлять в списки новые адреса, но старые убирать просто так не будут.
Уже какой-то шаблон появился:
1. Большие издатели отказываются вкладывать деньги в какие-то жанры
2. Находится команда разработчиков-энтузиастов, которая решается-таки сделать что-то в «непопулярном» жанре
3. Проект «выстреливает» и занимает пустующий сегмент рынка
4. Издатель, опомнившись, покупает маленькую команду с обещанием не вмешиваться в творческий процесс
5. Начинается работа над сиквелом.
6. Издатель начинает вмешиваться в творческий процесс, зачастую требует странного. Студия сопротивляется, со временем всё слабее
7. Под давлением издателя делаются изменения, которые не нравятся оригинальной команде, растёт напряжённость
8. Издатель решает удалить из команды всех несогласных с новой политикой, и делит команду на две части. Согласные остаются работать над сиквелом, несогласные уходят
--> Вы находитесь здесь
9...X. Удалив сопротивление, издатель получает полный творческий контроль над разработкой.
Х+1. Релиз сиквела. Так как к тому времени от основной идеи серии уже остался только каркас, успех первой части повторить не удаётся.
Х+2. Студию закрывают. Издатель продолжает делать спин-оффы по мотивам, чтобы не потерять торговую марку.
Штатный режим работы магазина с закрытием на ночь — это одно. Директива закрыть магазин в дневное время и в штатные часы работы из-за опасений, что сотрудников побьют митингующие — это всё-таки немного другое. Даже странно, что приходится объяснять.
Ви таки будете смеяться (или нет), но мы находимся в комментариях под статьёй о том, что регулятор вот прямо сейчас начинает целиться, чтобы сделать собутыльникам больно ай-ай-ай.
Мне всегда казалось, что в таких конторах менеджеры это не бывшие рядовые сотрудники, а в основном тоже специалисты, с каким-нибудь своим профильным образованием. То есть менеджеры при найме, вероятно, тоже имеют проверку в духе алгоритмов на доске, но алгоритмы не из IT, а из управления персоналом. Из чего следует, что подавляющее большинство менеджеров код на белой доске при найме не писали — зато, может, отлично ответили про квадратные и круглые люки.
Но магазины же закрыты и, фактически, "эвакуировали" персонал из-за беспорядков (эвакуировали недалеко, всего лишь по домам, ну и что?).
Это не мародёрство в уголовном смысле не поэтому, а потому что мародёрство — это военное преступление, на войне, а в данном случае происходит разграбление.
Дело не в белых досках, а в том, что есть много уровней наседающих с дедлайнами менеджеров, из-за чего разработка чего угодно нетривиального с большой вероятностью в итоге превращается в олимпиадное программирование на скорость.
На момент того твита вроде бы уже были несколько подстреленных и даже один застреленный насмерть, и не силами армии, а просто неравнодушными гражданами. Так что там очень размыто, кто именно начнёт стрельбу — просто при мародёрстве всегда есть опасность эскалации.
Ну вот я из таких, которым вполне хватает обычного hotswap. Приблизительно 95% моих потребностей закрываются именно им.
А вот поддержка только Java 11 у dcevm это непросто. Дело в том, что Java 11 — это сентябрь 2018-го, а актуальная версия нынче 14.
Абстрактно говоря, в API JVM есть интерфейсы и для изменения сигнатур методов.
Просто в самой распространённой JVM (HotSpot) по этим интерфейсам находится throw new UnsupportedOperationException();
Есть другие реализации JVM (как правило, платные), где есть полноценная поддержка смены сигнатур методов (так как метод полностью определяется через сигнатуру, поддержка смены сигнатур это синоним поддержки добавления/удаления). Потому для ускорения цикла ставят на машины разработчиков эти альтернативные JVM, а в бой всё идёт на HotSpot.
Насколько я помню, они уже назначили статус public forum комментариям под сообщениями Трампа в твиттере (из чего тогда следовало, что Трамп не может никого оттуда банить).
Я не вижу резких противоречий здравому смыслу в том, чтобы распространить этот статус и на платформу в целом.
Есть ещё тонкий момент — у владельца хлебного магазина есть знакомый директор банка (тоже единственного в городе), и они оба за дружеским ужином решили, что счета вашего конкурирующего магазина следует заморозить, потому что ваш магазин обслуживает людей, которые плохо обращались со своими жёнами. Фантастика? Может и так, но с конкурентом Patreon церемониться не стали: https://reclaimthenet.org/paypal-bans-subscribestar-after-the-site-is-targeted-by-activitists/
Ну вот и фейсбук и ютьюб с твиттером в своих сегментах тоже, по сути, монополисты.
Да, они не монополисты побукве закона, потому что у них как бы есть конкуренты, типа Minds, которыми пользуется аж десятая часть процента совокупной аудитории аудитории, но это такая конкуренция, чисто на бумаге.
Оно устаревает не потому, что «злые рептилоиды так запланировали, чтобы увеличить свалку»
Правильно, не потому. А потому что злые рептилоиды хотели бы продать вам ещё один кусок пластика. А для увеличения вау-эффекта при сравнении между старым и новым, старый пластик замедляют. Пару компаний уже ловили за руку за этими практиками. Они тогда извинились за то, что попались, и пообещали больше так не делать.
Нет, разумеется, не всё устаревание техники происходит из-за рептилоидов. Вернее так-то всё, но часть не напрямую — а от того, что типичная обвязка сборки обновлений для устройства сделана на таких костылях, что трогать это строение себе дороже. И угадайте, кто не даёт время написать нормальные обвязки.
В развитых же — в промышленности по многим секторам, в транспорте, и в быту — падение вовсю.
Так это не потому, что промышленность у эльфов такая хорошая — это потому, что большую часть промышленности аутсорсят к оркам. В эпоху глобализации смотреть на такие вещи надо тоже глобально.
Дело не в том, что может. Если хоть один мужик доминирует, это уже вполне повод для гонений на как минимум его самого как мерзкого угнетателя, и всех кто выскажется в защиту. Дело ведь не в долях и деталях каких-нибудь, а в том, что хочется хлеба и зрелищ.
Вот прямо так, по очереди? Жуткая антисанитария.
(Знаю, что никому в общем-то неинтересно, но отвечу всё равно)
Адаптер — это приведения API вашего модуля в форму более удобную для клиентского кода. Сам модуль поведения не меняет, меняется формат вызовов. Такое часто делают для библиотек ведения лога, когда приложение заводит себе внутренний интерфейс с теми же методами
logError,logWarning,logDebug, и пишут адаптеры для аналогичных типов из библиотек, которые дёргают те же по смыслу методы из библиотеки. Удобно тем, что можно библиотеку сменить, и в коде приложения нужно будет поменять только сам адаптер.Фасад — это сокрытие части API вашего модуля от клиента (чтобы он мог делать только "безопасные" вызовы, где фасад берёт ответственность за ненарушение каких-нибудь инвариантов). Или же напротив, фасад может объединять несколько модулей под одной крышей, чтобы создать нечто вроде единой панели управления. Ненарушение инвариантов по-прежнему важно.
Декоратор — это изменение поведения объекта без изменения API. Например,
unmodifiableCollectionв Java, из которого можно только читать, но попытка изменения содержимого (например, вызовadd) приведёт к ошибке (да, я прекрасно знаю, почему так делать плохо и что нужен отдельныйReadableCollection). У нашего проекта, например, есть декоратор, который в зависимости от политик приложения делает вызовы некоторых APIno-opв строгом соответствии с требованиями — потому что некоторые не хотят оплачивать полный функционал, и тягать проверки политик повсюду в итоге оказалось затратнее, чем сделать и поддерживать один декоратор.Споры там в основном не что такое сам паттерн, а как обозвать конкретный пример — большинство из них обычно объединяют как минимум два из трёх, иногда все три и ещё парочку дополнительных сверху.
Upd: Если хорошенько подумать, то адаптер и декоратор как шаблоны вполне функциональны, и могут применяться и в ФП. С фасадом сложнее, так как единственная приходящая мне в голову аналогия фасаду в ФП это каррирование, что вообще говоря не совсем то что нужно.
Но что может сделать чистая функция с объектом, вся структура которого скрыта внутри, и он, по сути, имеет только какой-нибудь метод
acceptMessage? Где-то должны жить ещё и значения, причём с API доступным для таких чистых функций. Да хоть те же количества, которые можно складывать между собой. Возможно, что я просто не до конца понимаю идею про обмен сообщениями.Я тут вообще никакого «будто» не предполагал.
1. Большие издатели отказываются вкладывать деньги в какие-то жанры
2. Находится команда разработчиков-энтузиастов, которая решается-таки сделать что-то в «непопулярном» жанре
3. Проект «выстреливает» и занимает пустующий сегмент рынка
4. Издатель, опомнившись, покупает маленькую команду с обещанием не вмешиваться в творческий процесс
5. Начинается работа над сиквелом.
6. Издатель начинает вмешиваться в творческий процесс, зачастую требует странного. Студия сопротивляется, со временем всё слабее
7. Под давлением издателя делаются изменения, которые не нравятся оригинальной команде, растёт напряжённость
8. Издатель решает удалить из команды всех несогласных с новой политикой, и делит команду на две части. Согласные остаются работать над сиквелом, несогласные уходят
--> Вы находитесь здесь
9...X. Удалив сопротивление, издатель получает полный творческий контроль над разработкой.
Х+1. Релиз сиквела. Так как к тому времени от основной идеи серии уже остался только каркас, успех первой части повторить не удаётся.
Х+2. Студию закрывают. Издатель продолжает делать спин-оффы по мотивам, чтобы не потерять торговую марку.
Штатный режим работы магазина с закрытием на ночь — это одно. Директива закрыть магазин в дневное время и в штатные часы работы из-за опасений, что сотрудников побьют митингующие — это всё-таки немного другое. Даже странно, что приходится объяснять.
Ви таки будете смеяться (или нет), но мы находимся в комментариях под статьёй о том, что регулятор вот прямо сейчас начинает целиться, чтобы сделать собутыльникам больно ай-ай-ай.
Мне всегда казалось, что в таких конторах менеджеры это не бывшие рядовые сотрудники, а в основном тоже специалисты, с каким-нибудь своим профильным образованием. То есть менеджеры при найме, вероятно, тоже имеют проверку в духе алгоритмов на доске, но алгоритмы не из IT, а из управления персоналом. Из чего следует, что подавляющее большинство менеджеров код на белой доске при найме не писали — зато, может, отлично ответили про квадратные и круглые люки.
Но магазины же закрыты и, фактически, "эвакуировали" персонал из-за беспорядков (эвакуировали недалеко, всего лишь по домам, ну и что?).
Это не мародёрство в уголовном смысле не поэтому, а потому что мародёрство — это военное преступление, на войне, а в данном случае происходит разграбление.
Дело не в белых досках, а в том, что есть много уровней наседающих с дедлайнами менеджеров, из-за чего разработка чего угодно нетривиального с большой вероятностью в итоге превращается в олимпиадное программирование на скорость.
На момент того твита вроде бы уже были несколько подстреленных и даже один застреленный насмерть, и не силами армии, а просто неравнодушными гражданами. Так что там очень размыто, кто именно начнёт стрельбу — просто при мародёрстве всегда есть опасность эскалации.
Ну вот я из таких, которым вполне хватает обычного hotswap. Приблизительно 95% моих потребностей закрываются именно им.
А вот поддержка только Java 11 у dcevm это непросто. Дело в том, что Java 11 — это сентябрь 2018-го, а актуальная версия нынче 14.
Абстрактно говоря, в API JVM есть интерфейсы и для изменения сигнатур методов.
Просто в самой распространённой JVM (HotSpot) по этим интерфейсам находится
throw new UnsupportedOperationException();Есть другие реализации JVM (как правило, платные), где есть полноценная поддержка смены сигнатур методов (так как метод полностью определяется через сигнатуру, поддержка смены сигнатур это синоним поддержки добавления/удаления). Потому для ускорения цикла ставят на машины разработчиков эти альтернативные JVM, а в бой всё идёт на HotSpot.
Насколько я помню, они уже назначили статус public forum комментариям под сообщениями Трампа в твиттере (из чего тогда следовало, что Трамп не может никого оттуда банить).
Я не вижу резких противоречий здравому смыслу в том, чтобы распространить этот статус и на платформу в целом.
Есть ещё тонкий момент — у владельца хлебного магазина есть знакомый директор банка (тоже единственного в городе), и они оба за дружеским ужином решили, что счета вашего конкурирующего магазина следует заморозить, потому что ваш магазин обслуживает людей, которые плохо обращались со своими жёнами. Фантастика? Может и так, но с конкурентом Patreon церемониться не стали:
https://reclaimthenet.org/paypal-bans-subscribestar-after-the-site-is-targeted-by-activitists/
Ну вот и фейсбук и ютьюб с твиттером в своих сегментах тоже, по сути, монополисты.
Да, они не монополисты побукве закона, потому что у них как бы есть конкуренты, типа Minds, которыми пользуется аж десятая часть процента совокупной аудитории аудитории, но это такая конкуренция, чисто на бумаге.
Правильно, не потому. А потому что злые рептилоиды хотели бы продать вам ещё один кусок пластика. А для увеличения вау-эффекта при сравнении между старым и новым, старый пластик замедляют. Пару компаний уже ловили за руку за этими практиками. Они тогда извинились за то, что попались, и пообещали больше так не делать.
Нет, разумеется, не всё устаревание техники происходит из-за рептилоидов. Вернее так-то всё, но часть не напрямую — а от того, что типичная обвязка сборки обновлений для устройства сделана на таких костылях, что трогать это строение себе дороже. И угадайте, кто не даёт время написать нормальные обвязки.
Так это не потому, что промышленность у эльфов такая хорошая — это потому, что большую часть промышленности аутсорсят к оркам. В эпоху глобализации смотреть на такие вещи надо тоже глобально.