Как стать автором
Обновить
92
Карма
0
Рейтинг
Михаил @m03r

CTO Rusprofile.ru

Концепции Rust, которые неплохо бы знать пораньше

Зачем нужен отдельный пакет, когда есть стандартный линуксовый perf?

Первая открытая 3D модель Зеленограда

Это для того, чтобы достигать пика Балмера

Фуршет ноября

Две и одну. Общепринятого способа записать сокращённо чередование трёх нот не существует

Фуршет ноября

Я бы Ваш пример сыграл с восстановлением первоначального контекста. Обычно подобные знаки применяются для более крупных разделов формы, здесь лучше выписать повторы, тогда точно не будет никаких проблем.

Кстати, ключ с восьмёркой внизу, означающий перенос на октаву, выворачивает мозг. Обычно так нотируется исключительно партия голоса-тенора, который пишется в скрипичном ключе, но поётся на октаву ниже (да и восьмёрку в этих случаях часто всё равно не ставят). Тем более это выглядит абсурдно, когда там ноты на добавочных линейках сверху.

Что касается педали, лиги и ферматы. Это три разные вещи.

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

Лига (точнее, та её разновидность, которая tie, а не slur) — для увеличения длины ноты, то есть чтобы она занимала больше долей. Это ваш случай. Та, которая slur обозначает слитную манеру исполнения (на струнных, например, не меняя направление движения смычка, на духовых — на одном выдохе и т. п.).

Фермата растягивает метрическую сетку. Это как замедление на одну конкретную долю. Именно поэтому фермата всегда выписывается у всех инструментов разом.

Фуршет ноября

Слушайте, вслушивайтесь и пробуйте — и обязательно получится! Хорошо бы начинать с чего-нибудь совсем простого, но здесь, увы, я не знаток.

Фуршет ноября

Можно, но будет неудобно.

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

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

Попытки переделать нотную запись были, но потерпели неудачу: ведь учатся-то все на традиционной нотации (принципы которой с четырнадцатого века не особо изменились), которая привязана к семиступенным ладам (и они прослеживаются вплоть до античной Греции).

Фуршет ноября

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

Проблема в том, что это не то, что можно изучить по учебнику, здесь нужно чувствовать. Хорошая новость в том, что это чувствование вполне нормально развивается, собственно, в процессе обучения.

Что можно делать:

  • Слушать, и слушать внимательно, ловя разные тонкие (и, видимо, пока не очень привычные) ощущения

  • В том числе и слушать собственную игру. Пробовать все возможные сочетания, слушая, как они откликаются

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

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

Любое музыкально-теоретическое понятие несёт в себе некоторые вполне определённые музыкальные ощущения, которые невозможно выразить в определении. И без этой вот исключительно практической части теория звучит как какая-то бессмысленная тарабарщина. А вот когда каким-то ощущениям удастся сопоставить какие-то понятия, тогда всё и заработает.

Фуршет ноября

Разбираюсь в теории музыки (аж с кандидатской степенью), с удовольствием расскажу о чём-нибудь более или менее понятным языком

TypeScript 4.9: что нас ожидает

1/0 === 2/0, потому что оба равны +Infinity

TypeScript 4.9: что нас ожидает

~==~ выглядит ровно как сравнение в SQL с учётом nullable, на этот счёт недавно была полемическая статья.

Я совершенно согласен, что в целом для Maybe обыкновенный == выглядит удобнее почти во всех случаях.

Кстати, в IEEE 754 прочитал (раздел 5.11):

Four mutually exclusive relations are possible: less than, equal, greater than, and unordered. The last case arises when at least one operand is NaN. Every NaN shall compare unordered with everything, including itself.

Соответственно, для каждой операции сравнения разный набор этих вариантов превращается в true или false, там ниже таблицы истинности.

Как это работает — понятно, а что это с точки зрения типов и как это думать — перестал понимать совсем.

TypeScript 4.9: что нас ожидает

Maybe Float всем лучше! Обнаружил тут крейт Noisy Float, не такой уж непопулярный, который как раз-таки с безопасным float

UPD: безопасный он довольно условно: просто паникует при любом ненормальном числе. Видимо, это поведение более востребовано, чем аккуратный Option вокруг почти всего

TypeScript 4.9: что нас ожидает

Хороший вопрос! Для меня сравнение тут возможно трёх видов (Number во всех трёх случаях включает не NaN, Option<Number> — включает):

  1. Option<Number> -> Option<Number> -> Option<Bool>, когда сравниваются только числа, а не-числа приводят к принципиально другому результату. Это как в SQL с nullable-типами: NULL = NULL даёт NULL

  2. Option<Number> -> Option<Number> -> Bool по типу SQL-ного IS NOT DISTINCT FROM (оно же <=> в MySQL). Это Ваш вариант

  3. Option<Number> -> Option<Number> -> Bool , в виде модификации первого варианта, когда Some(true) приравнивается к true, а всё остальное — к false. Это вариант из IEEE 754. Кстати, преобразование Some<Bool> в Bool здесь по аналогии с работой WHERE в SQL: отбираются только строки со значением условия TRUE, а FALSE и NULL — нет, происходит эдакое впихивание трёх значенийOption<Bool> в два значения Bool.

Я думаю о том, что блок с условием NaN == NaN не выполнится, по аналогии с тем, как в SQL не отберутся строки с NULL = NULL.

Кстати, читал тут документацию, и почему-то NaN ** 0 в Javascript даёт единицу. Вероятно, потому что нулевая степень чего угодно, даже жаренной с грибами картошки, даёт всё равно единицу.

TypeScript 4.9: что нас ожидает

Был бы явный Option, было бы логично: (Some(5) == Some(5)) == Some(true), при этом (Some(5) == None) == None) и (None == None) = None).

Но Option тут половинчатый, и такое решение выглядит довольно логично. В конце концов, NaN представляет разные ситуации не-чисел, например, parseInt("blah") и "".charCodeAt(1). Было бы странно говорить, что они равны в контексте сравнения чисел.

10 лет в ИТ-маркетинге: не нужно притворяться технарём

Много и по делу, спасибо! Если бы хабрамаркетологи следовали хотя бы части упомянутых рекомендаций...

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

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

UPD: комментарий не предназначен для разжигания. Я просто хочу отметить, что для создания эмоциональной связи с продуктом иногда достаточно и просто кусков кода

Откуда в подсолнухе золотое сечение?

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

Откуда в подсолнухе золотое сечение?

Интерактивное демо просто восхитительное! — сразу всё становится понятно. И ещё вспомнилось видео про спирали из простых чисел, не оно ли послужило источником вдохновения?

Как пустить игроков по кругу

"Морфологию волшебной сказки" Проппа почему-то не вспомнили

Быстро. Качественно. Недорого

То-то в местной Пятёрочке почти два месяца висело объявление, что карты лояльности временно не работают.

А это, оказывается, внеплановая миграция.

Интересно, что же так нестабильно работало?

О бедненьком NULLе замолвите слово

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

Кажется, этот аргумент применим вообще к любому мало-мальски нетривиальному коду.

У нас же разговор про запрос, а не про схему данных.

Задачу я сформулировал следующим образом (и как бы мне теоретически мог сформулировать её коллега-маркетолог): "Интересно, кто что себе покупает на ДР", и условие в запросе в точности соответствует постановке.

О бедненьком NULLе замолвите слово

Для меня это очевидно не из-за того, что я это писал, а благодаря тому, что я давно привык к подобному поведению SQL и ожидаю именно его. Это не побочный эффект и не баг, это часть стандарта.

Что касается моделирования задачи, то условие «у некоторых пользователей есть дата рождения» полностью соответствует nullable-колонке в таблице с пользователями, разве нет?

Информация

В рейтинге
4 192-й
Зарегистрирован
Активность