> А зачем на русском? Всё равно официальный язык IT — английский, и без английского смысла особого тыкаться нет.
Потому что приходится работать с другими людьми, не все из которых осознают важность освоения и совершенствования английского языка. Я бы предпочёл, чтобы мои коллеги прочли книгу на русском, чем забили на книгу на английском.
> В то же время, объявляя тип возвращаемого методом объекта, желательно выбирать самый сильный из доступных вариантов (пытаясь не ограничиваться конкретным типом). Например, лучше объявлять метод, возвращающий объект FileStream, а не Stream.
Да, с точки зрения сигнатуры функции, входные и выходные значения имеют разное направление вариантности. Но с точки зрения API библиотеки — это просто торчащие наружу типы. Если вы выберете конкретный тип для результата метода, то не сможете в новой версии библиотеки перейти при необходимости к более общему, это может сломать неподконтрольный клиентский код. Изменение в другую сторону от общего к частному не является ломающим изменением.
Например, пользователь вызывает ваш код:
`FileStream hisObject = MyApi.GetStream();`
Вы решили, что ваша реализация GetStream может возвращать не только FileStream, но и MemoryStream, так что вы изменили возвращаемое значение на Stream — и у пользователя сломается код. Этого не было бы проблемой, если бы вы изначально не обещали большего, чем Stream.
Наоборот, если вы начинали с сигнатуры `MyApi.GetStream(): Stream`, а потом решили специфицировать более конкретным типом (и заморозить его в API) и дать больший контроль пользователю, то изменение сигнатуры не сломает уже существующий клиентский код.
> Паттерн Visitor… позволяет добавить новый метод (функцию) в класс объекта, при этом не изменяя сам класс этого объекта.
Добавить новый _полимофный_ метод в класс объекта. Extension-методы — это просто синтаксический сахар (языковой, не CLR) для _вызова_ функций. Языки, где нет этого сахара, просто используют другой синтаксис вызова. Паттерн Visitor к синтаксису того или иного языка не имеет никакого отношения. К объекту какого класса будет применён extension-метод — это определяется во время компиляции. К объекту какого класса будет применятся навешенный с помощью Visitor'а «метод» — это определяется во время исполнения, так как в compile time этой информации в общем случае нет.
>> В какой-то момент гемафродитов станет мало, и, самцы уже начнут конкуренцию за них, а, поскольку роль самца они будут выполнять эффективнее, чем гермафродиты, то со временем последние станут самками.
> Превращение же гермафродитов в женских особей по всей видимости вызвано тем, что мужские их оплодотворяли сразу как только те достигали половой зрелости, так что мужской функционал у них со временем атрофировался, так как не использовался и мутации в нём происходили без коррекции естественным отбором.
Всё ещё проще, и у Маркова было описано. Система самобалансируется. Если какого-то пола станет больше, чем гермафродитов и противоположного пола, то статистичеки выгоднее (для распространения своих генов) станет принадлежать к малочисленному полу. Не конкурировать за женских особей, а быть женскими особями, за которых конкурируют. Это работает для перекосов численности в любую сторону. «Гены» «самковости» и «самцовости» в результате отбора станут одинаково сильными, и одинаково распорстранёнными.
>>> Зачем городить такие правила ввода пароля, когда достаточно делать таймаут входа в систему при многократном вводе неверного пароля?
«И я не имею в виду те атаки, когда подбор паролей происходит через перезагрузку страниц или форм ввода. Это может сработать для самых популярных паролей, но обычно сайты и приложения защищаются от частого повторного ввода данных.»
>>> «машины состояний» (state machines) — это то, что в общепринятой русскоязычной терминологии называется конечными автоматами
Использование кальки «машина состояний» позволяет избежать смешения с математической абстракцией «конечный автомат». Программистская машина состояний принадлежит к другому классу мощности, нежели математический конечный автомат. В частности, допускает «бесконечное» множество состояний (параметризация состояний), бесконечный алфавит (параметризация событий), наличие состояний у состояний (sic!), зависимость переходов не только от явного входа и текущего состояния, но и от состояния «мира».
мы создаем именно структуру БД и термин СУБД я считаю здесь ни причем.
Oracle, MS SQL, MySQL — это примеры разных СУБД. В перечисленных ниже цитатах должны быть БД или СУБД?
«они применимы практически в таком же виде во многих реляционных базах данных, таких как Oracle, MySQL, Firebird»
«такой формат часто используется в БД ORACLE… Естественно при задании имя поля желательно чтобы оно не совпадало с ключевыми словами используемые в БД.»
«Общая концепция языка SQL для большинства РБД остается одинаковой… Отличия в разных БД в основном заключаются в типах данных»
«нужно будет только разобраться в деталях реализации команд в новой БД»
«В разных РБД реализация временных таблиц может отличаться.»
«В разных РБД реализация полей со счетчиком может делаться по своему.»
Вот что меня смущает в питоне постоянно это какие-то неуловимые странности в работе стандартных функций, ключевых слов и интерфейсов библиотек. Вот, например, range — почему левая граница включена в ответ а правая нет?
Асимметричность интервалов [left, right) — это общепринятая в программировании нотация, причём тут Питон? Исключения составляют только Паскаль и, судя по вашему комментарию ниже, PHP. В нормальных языках стандартные библиотеки придерживаются соглашения, описанного ещё Эдсгером Дейкстрой: www.cs.utexas.edu/users/EWD/ewd08xx/EWD831.PDF
Раньше я думал, что это легко. И так и было, потому что получалось делать по 20-50% в день (фьюч РТС).
Но когда я потерял 3 миллиона, а затем 200 тысяч, а ещё затем и оставшиеся 50 тысяч, то я понял, что что-то не так.
Как долго занимался игрой на бирже? За какой период потерял 3 миллиона, и как так получилось, что нельзя было остановиться раньше?
SomeClass().Instance().var — вот только в Юнити этого не надо, да и нигде не надо. Если уж не обойтись без синглтона, то прячьте его за статической функцией. Не нужно никому знать, что объект синглтон.
Статические функции увеличивают связность, а передача объектов — уменьшает. В идеале («если уж не обойтись без синглтона»), зависимость от синглтона должна пробрасываться в параметрах конструктора или функций настройки. То есть клиентский код использует синглтон как `_instance.SomeMethod()`, не зная, что _instance — синглтон. Об этом будет знать только внешний код, где осуществляется настройка: `var x = new Client(SomeClass.Instance)`. При необходимости, можно абстрагировать синглтон за интерфейсом, тогда появится возможность протаскивать в клиенты в поле _instance не сам синглтон (логгер, подсистему звуковых эффектов, etc.), а его моки или обёртки. А зависимость от статической функции (а-ля service locator) жёсткая, тяжело отторгается.
> Нет привязки к четким размерам экрана, хочешь — привязывай внешнюю камеру и в ней руками настраивай. В новом нгуе появилась привязка не только к высоте, но и к ширине.
Есть такая привязка, называется ReferenceResolution. Так же часто полезен другой режим — PhysicalResolution.
> Вот представьте, есть у вас маленький ребенок (а у некоторых он действительно есть). И спрашивает у вас ребенок типичный детский вопрос «Почему трава зеленая».
> Хлорофилл нужен, чтобы обеспечивать процесс фотосинтеза
> Трава зеленая, потому что при таком цвете она может получать больше тепла от солнышка и лучше расти.
Потому что приходится работать с другими людьми, не все из которых осознают важность освоения и совершенствования английского языка. Я бы предпочёл, чтобы мои коллеги прочли книгу на русском, чем забили на книгу на английском.
Да, с точки зрения сигнатуры функции, входные и выходные значения имеют разное направление вариантности. Но с точки зрения API библиотеки — это просто торчащие наружу типы. Если вы выберете конкретный тип для результата метода, то не сможете в новой версии библиотеки перейти при необходимости к более общему, это может сломать неподконтрольный клиентский код. Изменение в другую сторону от общего к частному не является ломающим изменением.
Например, пользователь вызывает ваш код:
`FileStream hisObject = MyApi.GetStream();`
Вы решили, что ваша реализация GetStream может возвращать не только FileStream, но и MemoryStream, так что вы изменили возвращаемое значение на Stream — и у пользователя сломается код. Этого не было бы проблемой, если бы вы изначально не обещали большего, чем Stream.
Наоборот, если вы начинали с сигнатуры `MyApi.GetStream(): Stream`, а потом решили специфицировать более конкретным типом (и заморозить его в API) и дать больший контроль пользователю, то изменение сигнатуры не сломает уже существующий клиентский код.
Добавить новый _полимофный_ метод в класс объекта. Extension-методы — это просто синтаксический сахар (языковой, не CLR) для _вызова_ функций. Языки, где нет этого сахара, просто используют другой синтаксис вызова. Паттерн Visitor к синтаксису того или иного языка не имеет никакого отношения. К объекту какого класса будет применён extension-метод — это определяется во время компиляции. К объекту какого класса будет применятся навешенный с помощью Visitor'а «метод» — это определяется во время исполнения, так как в compile time этой информации в общем случае нет.
Нестандартные. Активные злоумышленники обычно Мэллори (malicious) или Труди (intruder), но никак не Алиса.
> Превращение же гермафродитов в женских особей по всей видимости вызвано тем, что мужские их оплодотворяли сразу как только те достигали половой зрелости, так что мужской функционал у них со временем атрофировался, так как не использовался и мутации в нём происходили без коррекции естественным отбором.
Всё ещё проще, и у Маркова было описано. Система самобалансируется. Если какого-то пола станет больше, чем гермафродитов и противоположного пола, то статистичеки выгоднее (для распространения своих генов) станет принадлежать к малочисленному полу. Не конкурировать за женских особей, а быть женскими особями, за которых конкурируют. Это работает для перекосов численности в любую сторону. «Гены» «самковости» и «самцовости» в результате отбора станут одинаково сильными, и одинаково распорстранёнными.
«И я не имею в виду те атаки, когда подбор паролей происходит через перезагрузку страниц или форм ввода. Это может сработать для самых популярных паролей, но обычно сайты и приложения защищаются от частого повторного ввода данных.»
Использование кальки «машина состояний» позволяет избежать смешения с математической абстракцией «конечный автомат». Программистская машина состояний принадлежит к другому классу мощности, нежели математический конечный автомат. В частности, допускает «бесконечное» множество состояний (параметризация состояний), бесконечный алфавит (параметризация событий), наличие состояний у состояний (sic!), зависимость переходов не только от явного входа и текущего состояния, но и от состояния «мира».
Oracle, MS SQL, MySQL — это примеры разных СУБД. В перечисленных ниже цитатах должны быть БД или СУБД?
«они применимы практически в таком же виде во многих реляционных базах данных, таких как Oracle, MySQL, Firebird»
«такой формат часто используется в БД ORACLE… Естественно при задании имя поля желательно чтобы оно не совпадало с ключевыми словами используемые в БД.»
«Общая концепция языка SQL для большинства РБД остается одинаковой… Отличия в разных БД в основном заключаются в типах данных»
«нужно будет только разобраться в деталях реализации команд в новой БД»
«В разных РБД реализация временных таблиц может отличаться.»
«В разных РБД реализация полей со счетчиком может делаться по своему.»
Асимметричность интервалов [left, right) — это общепринятая в программировании нотация, причём тут Питон? Исключения составляют только Паскаль и, судя по вашему комментарию ниже, PHP. В нормальных языках стандартные библиотеки придерживаются соглашения, описанного ещё Эдсгером Дейкстрой: www.cs.utexas.edu/users/EWD/ewd08xx/EWD831.PDF
Как долго занимался игрой на бирже? За какой период потерял 3 миллиона, и как так получилось, что нельзя было остановиться раньше?
Статические функции увеличивают связность, а передача объектов — уменьшает. В идеале («если уж не обойтись без синглтона»), зависимость от синглтона должна пробрасываться в параметрах конструктора или функций настройки. То есть клиентский код использует синглтон как `_instance.SomeMethod()`, не зная, что _instance — синглтон. Об этом будет знать только внешний код, где осуществляется настройка: `var x = new Client(SomeClass.Instance)`. При необходимости, можно абстрагировать синглтон за интерфейсом, тогда появится возможность протаскивать в клиенты в поле _instance не сам синглтон (логгер, подсистему звуковых эффектов, etc.), а его моки или обёртки. А зависимость от статической функции (а-ля service locator) жёсткая, тяжело отторгается.
А если эквализировать одну или три компоненты в пространстве YCbCr?
Есть такая привязка, называется ReferenceResolution. Так же часто полезен другой режим — PhysicalResolution.
А на гифке выделены ПОН, СРД, ЧТВ.
«Если маленький ребенок когда-нибудь спросит вас почему небо голубое, лучше, если вы посмотрите ему прямо в глаза и скажете: „Оно голубое из-за квантовых эффектов в рэлеевском рассеянии вместе с недостатком приемников фиолетового цвета в нашей сетчатке“» © Фил Плейт goo.gl/KgSe3B
> Трава зеленая, потому что при таком цвете она может получать больше тепла от солнышка и лучше расти.
Это попахивает телеологией.