Полагаю, что это ответ мне, поэтому изложу свои мысли здесь.
Я считаю, что первая проблема этой статьи не в том, что она плохо написана или безынтересна, а в том, что она пропагандирует подход, который мне не кажется правильным.
Смотрите, я полагаю, что этот пост несёт некоторую педагогическую нагрузку, то есть призван обучить людей чему-то. Припоминая известную цитату, людей, по моему мнению, надо обучать ловле рыбы, а не давать им конкретную рыбу.
Так вот, предположим, что я начинающий .NET-девелопер. Я прочёл эту статью, и теперь знаю, как ExceptIterator сранивает объекты (Вам плюсик, умение читать исходный код фреймворка — полезная вещь).
Возникают вопросы:
1) Распространяются ли мои знания на код X.Where(xItem => Y.All(yItem => xItem != yItem)) ? 2) Правильно ли я понял, что лучший способ получить ответы на мои вопросы — пойти закопаться в код фреймворка?
Ваша статья не даёт ответ на первый вопрос (потому что Вы не исследуете общие моменты фреймворка, а рассматриваете исходник конкретного сценария), и даёт неявный положительный ответ на второй. Соответственно, я делаю вывод, что Вы начали учить язык и платформу не с понимания её внутренней логики, а с набрасывания кода в IDE и изучения исходников в случае возникновения проблем. Это гораздо лучше, чем учиться что-то писать по стековерфлоу, но хуже, чем учиться понимать логику (например, по документации).
Поэтому я считаю, что для начинающих разработчиков Ваша статья не полезна, а, наоборот, вредна.
Для остальных она, полагаю, не несёт новой информации.
Отдельно по поводу оформления: все картинки нечитаемы при увеличении.
Ну, это, конечно, хороший пример ситуации, в которой YAML лучше JSON. Однако, количество ситуаций, в которых JSON лучше YAML, имхо, значительно больше. Пресловутую Норвегию, кажется, исправили, но...
Разница между Arial и Segoe хорошо видна, если сравнить какое-нибудь полотно текста (не кода, не картинок) рядом:
Справа воспринимаемая плотность текста на квадратный сантиметр пространства сильно выше, хотя размер текста по оси Y меньше стал крайне незначительно.
По поводу моноширинных шрифтов — персональное мнение человека, у которого Fira Code используется во всех IDE, но для заголовков на Хабре традиционно используется Fira — может, есть смысл для поддержания единства места, времени и действия стиля использовать Fira Code в качестве моноширинного?
Ну вот, натестировался :) Кликнул в профиле в выпадающем списке «Whois — Приглашения — Заметки — Обнуление кармы» на пункт «Обнуление кармы».
Получаю в ответ сразу «Ваша заявка на обнуление принята» (уточняю — нажимал только на пункт выпадающего списка, никакой кнопки «я понимаю и хочу обнулиться» мне не было предложено):
Нажатие «Я передумал!» (Что мне обнулять-то, у меня и так 0)) приводит к 403:
Также при ховере на рейтинге комментария больше не отображается количество голосов «за» и «против» — с рейтингом статьи это всё ещё работает. Потерялось или осознанно отключено?
<sarcasm>
Несомненно, краеугольный вопрос в любом рефакторинге Хабра только один — используется ли в нём реактивный микро-модульный фреймворк $mol, а также мощный и лаконичный декларативный язык описания компонент view.tree :) </sarcasm>
Если серьёзно, то вызывает вопросы отказ от использования гарнитуры Segoe UI в стилях текстов. На Win10 для рендеринга выбирается Arial, и он смотрится несколько, гм, тяжелее. Возможно, это мои проблемы с восприятием сглаживания шрифтов, но...
Не очень понятно, кого вы сейчас хотели показать профнепригодным — себя, если считаете, что fold/reduce есть удел «системных программистов», или своих разработчиков, которые по вашим словам не в состоянии понять этот псевдокод. Но кого-то точно хотели.
React как способ порождения View для .NET уже давно существует — https://reactjs.net/. Тот факт, что он не оформлен в виде ViewEngine ещё не мешает за 15 минут написать метод, возвращающий ActionResult, использующий для рендеринга только реакт.
Суть миксина примерно аналогична оборачиванию render в autorun, и даже документация mobx-react предлагает думать об этом именно в таком ключе :) Но да, ваша правда, как минимум там внутри Reaction для более тонкого управления вызовами.
Декоратор observer во-первых называется без s на конце, во-вторых находится в библиотеке mobx-react, а не mobx, и в-третьих применяется не к «классам», а к React-компонентам, оборачивая их метод render в autorun — который в свою очередь и является одной из стандартных утилит для подписки на изменение observable'ов в mobx.
Полагаю, что это ответ мне, поэтому изложу свои мысли здесь.
Я считаю, что первая проблема этой статьи не в том, что она плохо написана или безынтересна, а в том, что она пропагандирует подход, который мне не кажется правильным.
Смотрите, я полагаю, что этот пост несёт некоторую педагогическую нагрузку, то есть призван обучить людей чему-то. Припоминая известную цитату, людей, по моему мнению, надо обучать ловле рыбы, а не давать им конкретную рыбу.
Так вот, предположим, что я начинающий .NET-девелопер. Я прочёл эту статью, и теперь знаю, как
ExceptIteratorсранивает объекты (Вам плюсик, умение читать исходный код фреймворка — полезная вещь).Возникают вопросы:
1) Распространяются ли мои знания на код
X.Where(xItem => Y.All(yItem => xItem != yItem))?2) Правильно ли я понял, что лучший способ получить ответы на мои вопросы — пойти закопаться в код фреймворка?
Ваша статья не даёт ответ на первый вопрос (потому что Вы не исследуете общие моменты фреймворка, а рассматриваете исходник конкретного сценария), и даёт неявный положительный ответ на второй. Соответственно, я делаю вывод, что Вы начали учить язык и платформу не с понимания её внутренней логики, а с набрасывания кода в IDE и изучения исходников в случае возникновения проблем. Это гораздо лучше, чем учиться что-то писать по стековерфлоу, но хуже, чем учиться понимать логику (например, по документации).
Поэтому я считаю, что для начинающих разработчиков Ваша статья не полезна, а, наоборот, вредна.
Для остальных она, полагаю, не несёт новой информации.
Отдельно по поводу оформления: все картинки нечитаемы при увеличении.
Сократил эту статью до двух предложений:
Почему я ожидал, что
A.Except(B)вернёт пустое множество, а вернулись элементы первой коллекции?Потому что я не открыл MSDN, не выяснил смысл термина «ссылочный тип», и не знаю, как по умолчанию сравниваются объекты ссылочных типов.
Ну, это, конечно, хороший пример ситуации, в которой YAML лучше JSON. Однако, количество ситуаций, в которых JSON лучше YAML, имхо, значительно больше. Пресловутую Норвегию, кажется, исправили, но...
Разница между Arial и Segoe хорошо видна, если сравнить какое-нибудь полотно текста (не кода, не картинок) рядом:
Справа воспринимаемая плотность текста на квадратный сантиметр пространства сильно выше, хотя размер текста по оси Y меньше стал крайне незначительно.
По поводу моноширинных шрифтов — персональное мнение человека, у которого Fira Code используется во всех IDE, но для заголовков на Хабре традиционно используется Fira — может, есть смысл для поддержания единства
места, времени и действиястиля использовать Fira Code в качестве моноширинного?И на стороне фронта всё работает как надо, отличный TTM :)
Ну вот, натестировался :) Кликнул в профиле в выпадающем списке «Whois — Приглашения — Заметки — Обнуление кармы» на пункт «Обнуление кармы».
Получаю в ответ сразу «Ваша заявка на обнуление принята» (уточняю — нажимал только на пункт выпадающего списка, никакой кнопки «я понимаю и хочу обнулиться» мне не было предложено):

Нажатие «Я передумал!» (Что мне обнулять-то, у меня и так 0)) приводит к 403:
Ай не хочу обнуляться...
Также при ховере на рейтинге комментария больше не отображается количество голосов «за» и «против» — с рейтингом статьи это всё ещё работает. Потерялось или осознанно отключено?
<sarcasm>Несомненно, краеугольный вопрос в любом рефакторинге Хабра только один — используется ли в нём реактивный микро-модульный фреймворк
$mol, а также мощный и лаконичный декларативный язык описания компонентview.tree:)</sarcasm>Если серьёзно, то вызывает вопросы отказ от использования гарнитуры
Segoe UIв стилях текстов. На Win10 для рендеринга выбирается Arial, и он смотрится несколько, гм, тяжелее. Возможно, это мои проблемы с восприятием сглаживания шрифтов, но...Не очень понятно, кого вы сейчас хотели показать профнепригодным — себя, если считаете, что fold/reduce есть удел «системных программистов», или своих разработчиков, которые по вашим словам не в состоянии понять этот псевдокод. Но кого-то точно хотели.
Существует ли техническая возможность типизировать отправленные сообщения TS-интерфейсами, или это надо костылить самостоятельно?
React как способ порождения View для .NET уже давно существует — https://reactjs.net/. Тот факт, что он не оформлен в виде ViewEngine ещё не мешает за 15 минут написать метод, возвращающий ActionResult, использующий для рендеринга только реакт.
Ай, верно!
Суть миксина примерно аналогична оборачиванию render в
autorun, и даже документация mobx-react предлагает думать об этом именно в таком ключе :) Но да, ваша правда, как минимум там внутриReactionдля более тонкого управления вызовами.Декоратор
observerво-первых называется без s на конце, во-вторых находится в библиотеке mobx-react, а не mobx, и в-третьих применяется не к «классам», а к React-компонентам, оборачивая их методrenderвautorun— который в свою очередь и является одной из стандартных утилит для подписки на изменение observable'ов в mobx.