• Неудачная статья про ускорение рефлексии
    +1

    А я вот читал в книжках, что эту ересь типа LINQ в критичных для производительности участках принято вычищать. Не может ли быть такое что эта ересь у вас реально используется а у других может и не использоваться?


    Ещё мне не очень понятно, почему при таких составных бенчмарках не был использован профайлер чтобы посмотреть что именно там является узким местом. Насколько я знаю, в benchmark.net есть даже встроенная возможность собирать трейсы для профайлеров.


    P.s. Про производительность на .net есть несколько хороших книжек. Например, dreamwalker написал конкретно про бенчмарки. Возможно, там можно почерпнуть что-то, чтобы изменять корректнее и делать более правильные выводы.

  • Главная причина, почему все-таки Linux
    +41

    Так это он свободный, а не вы

  • Усложнение команд консоли, 1979−2020
    +5
    ssh user@s390.server pprocess -p 2
    но передавать код по сети — безумие.

    Вы про какой код? Тут вроде у вас команды передаются, это не код? Еще вы, скорее всего, набираете это в браузере с неотключенным javascript.


    Впрочем, вы совершенно правы, достоинства и недостатки они зависят от того, от чего именно мы хотим абстрагироваться. Если надо абстрагироваться от технологии в целом, то на границах должен быть наиболее простой переносимый интерфейс. Тут текст рулит. При работе внутри одной технологии можно абстрагироваться от деталей реализации конкретных понятий (например, хранится что-то или вычисляется на ходу).


     ps | sort ws -desc  | select -first 10 | select processname,cpu

    Если вы вызовете ps без параметров он не выдаст COU — т.е. он абстрагирован от того какие именно характеристики нужны потребителю — это решается дальше по пайплайну. Он может не вычислять ничего и автору скрипта не надо думать о том, каким именно образом получается конкретная характеристика.

  • Усложнение команд консоли, 1979−2020
    +3
    Объекты для передачи через pipe — это dead end.
    Объект — это же данные плюс код.

    Это обеспечивает абстракцию и модульность.


    Мы не хотим страдать от чужого кода, мы хотим данные.

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

  • Усложнение команд консоли, 1979−2020
    +3

    Ну это все не относится к концепции объектности.


    никто не любит

    На 10 месте по loved

  • Усложнение команд консоли, 1979−2020
    +2
    Теперь у вас есть «текстовые программы» и «нетекстовые». И вам нужно помнить что где, как и когда.

    То же самое и с текстовыми командами — надо помнить формат каждой чтобы организовать их взаимодействие. И еще в каждую из них зашито некоторое подмножество нетекстовых. И еще метаформат нестандартизирован, так что организовать intellisense проблематично.

  • Усложнение команд консоли, 1979−2020
    +3

    Достаточно сделать адаптер. В powershell если в pipe встроить обычную программу, она будет потреблять текст. Т.е. количество костылей уменьшается.

  • Усложнение команд консоли, 1979−2020
    +9

    Благодаря текстовым интерфейсам, каждая команда должна знать как форматировать и это увеличение опций умножается на количество команд.


    В powershell, благодаря объектной модели, команды более ортогональны. Отформатировать можно одними и теми же способами выхлопы разных команд.


    # вывести процессы отсортированные по ID в грид
    ps | sort id | ogv
    
    # вывести все сервисы в названии которых есть SQL сгруппированные по статусу и отформатировать как таблицу с автоматическим размером колонок
    gsv *sql* | sort status | group status | ft -au
  • Хорошо, что создатель вашего любимого инструмента не слушал ослов, когда изобретал велосипед
    0
    нам не нужно расшаривать состояние между двумя вкладками одного ии того же приложения.

    Я бы уточнил — нужно, но мы обычно это делаем внутри процесса, а не по сети.


    Ага, так понятно. А нельзя было как-то более удобно это сделать без всех этих текстовых констант и кейзов? Чтобы оно сраружи выглядело как 2 way binding а внутри была бы вся эта иммутабельность и прочее. Свитчи под капотом, редюсеры знают только про свою часть состояния и так далее.


    Или я чего-то не понимаю?

  • Хорошо, что создатель вашего любимого инструмента не слушал ослов, когда изобретал велосипед
    0

    А вот не может ли кто-нибудь мне, человеку далекому от веба, объяснить зачем нужны фреймворки управления состоянием и желательно дать концептуальный анализ почему они нужны в вебе и не нужны на десктопе, или менее распространены (например в каком-нибудь WPF).


    С моей точки зрения вот это вот практически полностью не очень хорошо спроектированный бойлерплейт:


    const LoginComponent = (state = initialState, action) => {
        switch (action.type) {
    
          // This reducer handles any action with type "LOGIN"
          case "LOGIN":
              return state.map(user => {
                  if (user.username !== action.username) {
                      return user;
                  }
    
                  if (user.password == action.password) {
                      return {
                          ...user,
                          login_status: "LOGGED IN"
                      }
                  }
              });
    default:
              return state;
          } 
    };

    И в высокоуровневом коде такое не желательно — хотелось бы как-то связать View с моделью, но при этом не думать об управлении состоянием, причем, в терминах текстовых констант. Типа как в WPF + MVVM.

  • Хорошо, что создатель вашего любимого инструмента не слушал ослов, когда изобретал велосипед
    0

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


    Во втором случае, правда, это не совсем велосипед.


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

  • IT — это средний класс с натяжкой. И как НЕ надо проводить собеседование с программистом
    0

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

  • IT — это средний класс с натяжкой. И как НЕ надо проводить собеседование с программистом
    0

    Я просто пытался избавиться от древнегреческого заимствования в вашей фразе

  • Хорошо, что создатель вашего любимого инструмента не слушал ослов, когда изобретал велосипед
    0

    Если нужен второй спец, а есть уже один со своей технологией то как искать?

  • IT — это средний класс с натяжкой. И как НЕ надо проводить собеседование с программистом
    0
    аналоги

    Вы хотели сказать "подобия"?

  • Парсите, а не валидируйте
    0
    Cоздайте, только, чтобы вот это так же работало:

    Ой, это не также. [] — это стандартный литерал для массива в typescript а вам приходится делать что-то специальное. Часть с тайпгардом не реализована.

  • Парсите, а не валидируйте
    0

    Подсказка: вот это — стандартный литерал для массива.


    [1, 2];

    В TS вы можете стандартный массив попробовать привести этому типу.


    И вот тут идет речь про стандартный массив:


    if (isNonEmptyArray(bar)) {
        needNonEmpty(bar); // okay
    } else {
        needEmpty(bar); // error!! urgh, do you care?        
    }

    Внутри If у переменной bar уточняется тип до NonEmpty а внутри else — стандартный массив

  • Парсите, а не валидируйте
    0

    Создайте, только, чтобы вот это так же работало:


    type NonEmptyArray<T> = [T, ...T[]];
    
    const okay: NonEmptyArray<number> = [1, 2];
    const alsoOkay: NonEmptyArray<number> = [1];
    const err: NonEmptyArray<number> = []; // error!
    
    if (isNonEmptyArray(bar)) {
        needNonEmpty(bar); // okay
    } else {
        needEmpty(bar); // error!! urgh, do you care?        
    } 

    контексте самого произвольного вектора без создания сторонних типов.

    Как только вы описываете концепцию вектора с некоторым условием, воспринимаемую системой типов вы создаете новый тип на основе верктора, возможно, неименованный.

  • Парсите, а не валидируйте
    0

    В тайпскрипт, оказывается, тоже можно

  • Коронавирус: опасная иллюзия смертности
    0

    Мне думается еще чем опаснее, тем больше усилий тратится на борьбу (например, у симптомного бошльше шансов попасть на карантин) => тем меньше возможностей размножиться. Интересно, насколько это влияет на эволюцию вируса.

  • В кризис я потерял работу и теперь боюсь писать умный код, чтобы не распугать последние вакансии
    +1

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


    Я не помню, чтобы кто-то из авторов книжек называл рефакторингом введения кеша. Так же стоит учитывать что оно находится в связи со словом factoring — декомпозиция, разбиение на кусочки.


    Такое прочтение слова refactoring имеет ценность, так как рекомендуют отделять реструктуризацию кода от значимых изменений.


    Возможно в разных прочтениях слова таится не понимание между pnovikov и marvin255 — если это так, то с точки зрения первого необходимость рефакторинга означает плохой факторинг кода, а с точки зрения второго, нет, так как рефакторинг это просто любое изменение кроме изменения связанного с функциональными требованиями. Хорошая декомпозиция (факторинг) на репозитории позволила просто добавить кеш.

  • В кризис я потерял работу и теперь боюсь писать умный код, чтобы не распугать последние вакансии
    +1
    Не соглашусь с вами. Новых функций у программы не появилось — она не стала решать на одну задачу от бизнеса больше.

    Я был неточен в определении.

  • В кризис я потерял работу и теперь боюсь писать умный код, чтобы не распугать последние вакансии
    +1

    Да, мне надо было скопипастить из википедии:


    "Рефа́кторинг (англ. refactoring), или перепроектирование кода, переработка кода, равносильное преобразование алгоритмов — процесс изменения внутренней структуры программы, не затрагивающий её внешнего поведения "

    Обычно в книжках по рефакторингу я видел "extract method" а не "introduce cache".

  • Коронавирус: опасная иллюзия смертности
    +1

    А что, серологический тест уже есть? Кто проводит? В википедии вот что:


    A number of laboratories and companies are developing serological tests, which detect antibodies.[413] As of 6 April 2020, none of these has been proved sufficiently accurate to be approved for widespread use.[414] In the US a serological test developed by Cellex has been approved for emergency use by certified laboratories only.[415]
  • В кризис я потерял работу и теперь боюсь писать умный код, чтобы не распугать последние вакансии
    +3
    В процессе рефакторинга написал декоратор для репозитория валют, который кэширует результаты.

    Это не рефакторинг а добавление новой фичи. Рефакторинг — это изменение структуры кода без изменения функциональности.

  • Коронавирус: опасная иллюзия смертности
    0

    Вот тут аргументы в пользу локдауна:
    https://www.washingtonpost.com/graphics/2020/world/corona-simulator/


    Начиная с
    Whoops! As health experts would expect, it proved impossible to completely seal off the sick population from the healthy.

  • Коронавирус: опасная иллюзия смертности
  • Коронавирус: опасная иллюзия смертности
    +3
  • История моей трудовой деятельности в ООО «Опен Продукт»
    +4

    soft skills in Russia

  • Коронавирус: как мы себя обманываем
    0

    Насколько я понимаю, тест на антитела еще разрабатывается. Википедия говорит о нем в будущем времени.

  • Ваш C# уже «функциональный», просто позвольте ему это
    +1

    А зачем вообще нужен tolist?

  • Коронавирус: как мы себя обманываем
  • Коронавирус: как мы себя обманываем
    +5

    Можно немного пояснить про соотношение смертности от Covid и естественной?


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


    Так как чтобы умереть надо в среднем 28 дней не надо ли умножать естественную смертность на 28/365 чтобы сравнивать со смертностью от коронавируса?

  • Надоело, но: первую волну COVID-19 Германия полностью остановила
    +1

    https://meduza.io/feature/2020/03/18/na-pike-epidemii-rech-mozhet-idti-o-millionah-testov


    — Многих смущает, что у нас проведено больше 100 тысяч тестов и выявлено всего 114 заболевших. Как вы относитесь к этим цифрам?

    — Знаете, меня это тоже беспокоит, но, с другой стороны, в мире есть некоторый процент тяжелых случаев. Он известен. Непонятно, как можно скрыть, что тяжелый случай связан с коронавирусом, должна происходить проверка причины летального случая. А если произошел летальный исход, то количество вируса достаточно [для заявленной точности], не найти его невозможно. А в России пока не известен ни один летальный исход или тяжелый случай, связанный с коронавирусом. Это говорит о том, что у нас процент заражения пока еще не так высок. Я думаю, нереально, чтобы кто-то скрывал: врачи сами понимают риск и не хотят быть зараженными. Даже в авторитарном и закрытом Китае не смогли это скрыть.

    Хотя 100 случаев на 140 миллионов — это действительно мало по сравнению с другими странами. Причин может быть несколько. Во-первых, у нас меньше туристов, чем в Италии. За рубеж выезжает меньше людей. Страна более распределенная, плотность населения ниже. Все эти факторы срабатывают. Исходя из процента тяжелых случаев и летальных исходов я верю, что официальная статистика здесь ближе к правде. К тому же темпы роста числа выявленных заболевших говорят о том, что статистике в какой-то степени можно доверять.
  • Надоело, но: первую волну COVID-19 Германия полностью остановила
    +1
    Сами то читали?

    Ага. Этот ответ на вопрос "как проверить". Можно попробовать сделать то же самое в более свежих данных и учесть колебания от года к году.

  • Надоело, но: первую волну COVID-19 Германия полностью остановила
    +1
    Ну страшилок то в инете много. Кто вам сказал, что все это вообще правда, что там написано? Как проверить?

    Поискать в статистике вспышку пневмоний?

  • Надоело, но: первую волну COVID-19 Германия полностью остановила
    0

    Это не первая волна с точки зрения автора. Первая волна это Webasto

  • Надоело, но: первую волну COVID-19 Германия полностью остановила
    0
    Да, цифры на порядки отличаются от Италии. Чем их объяснить? Ну ведь не тестами же, правда?

    А почему не тестами. Допустим в среднем из 100 человек в Германии и Италии умирает 1, в Германии хватило тестов на всех и у них смертность 1% (1/100) в Италии хватило тестов на половину (причем тестируют не рандомно а людей с симптомами) и у них смертность 2% (1/50).


    Еще я слышал что в Германии больше больничных мест на единицу населения.

  • Почему разработчикам не нравится Agile?
    0

    Как под сотней функций можно иметь ввиду "порадоваться" мне непонятно и смысл второго абзаца я не понял.


    Я бы выбрал то подмножество функций, которое нужно в первую очередь, реализовал бы только его. Как winehq.org — часть приложений поддерживается, часть нет, но пользоваться уже можно.

  • Почему разработчикам не нравится Agile?
    0

    У вас разработчиков после спринта судят?