• Магические сигнатуры методов в C#

    • Translation

    Представляю вашему вниманию перевод статьи The Magical Methods in C# автора CEZARY PIĄTEK.


    Есть определенный набор сигнатур методов в C#, имеющих поддержку на уровне языка. Методы с такими сигнатурами позволяют использовать специальный синтаксис со всеми его преимуществами. Например, с их помощью можно упростить наш код или создать DSL для того, чтобы выразить решение проблемы более красивым образом. Я встречаюсь с такими методами повсеместно, так что я решил написать пост и обобщить все мои находки по этой теме, а именно:


    • Синтаксис инициализации коллекций
    • Синтаксис инициализации словарей
    • Деконструкторы
    • Пользовательские awaitable типы
    • Паттерн query expression
    Читать дальше →
  • Инклюзивное образование: почему такая хорошая идея так плохо работает



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

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

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

      А теперь посмотрим, что происходит, когда мы эту идею пытаемся реализовать.
      Читать дальше →
    • Алексей Каптерев: Критическое мышление 101 (часть 2)

        25 апреля в рамках «Дня тренинга МГУ 2020» Алексей Каптерев выступил с докладом про критическое мышление. Представляем вам часть 2 расшифровки лекции.

        Часть 1 доступна по ссылке.


        Читать дальше →
      • Подготовка к собеседованиям в IT-гиганты: как я преодолела проклятье алгоритмического собеседования


          Дисклеймер:


          Я не программирую с трёх лет, не знаю наизусть Кнута, не являюсь призёром олимпиад по информатике и чемпионатов по спортивному программированию, не училась в MIT. У меня за плечами образование по информатике и 6 лет опыта в коммерческой разработке. И до недавнего времени я не могла пройти дальше первого технического скрининга в IT-гиганты из FAANG (Facebook, Amazon, Apple, Netflix, Google и подобные), хотя предпринимала несколько попыток. 

          Но теперь всё изменилось, я получила несколько офферов и хочу поделиться опытом, как можно к этому прийти. Речь пойдёт о позиции Software Engineer в европейских офисах перечисленных компаний.
          Читать дальше →
        • Популярные ошибки в английском среди IT-специалистов

          image

          Основываясь на многолетнем опыте преподавания английского специалистам IT-сферы (программистам, бизнес аналитикам, тестировщикам, маркетинговым специалистам), я собрала список наиболее распространенных среди “айтишников” ошибок в английском языке.
          Читать дальше →
        • Новости из США по лунной программе «Артемида» (Artemis)

            Что Трамп и «Артемида» нам готовят?


            Вопрос о том, на что именно направлена американская космическая программа «Артемида» (Artemis) отнюдь не риторический. Я писал довольно давно (когда программы «Артемида» ещё не было) на Geektimes, что в определение точных целей космонавтики на ближайшие 10-15 лет и конкретных методов достижения этих целей часто вмешиваются политики, особенно законодатели из Конгресса США. Они добавляют свое «веское слово» (часто основанное на политических разборках) и тем еще более усложняют старый спор по дилемме освоения космоса: Куда будем лететь? На Луну или все же на Марс? Такое вмешательство законодателей США в планы НАСА повторилось в январе этого года, чему посвящена первая часть статьи.

            НАСА оказалось в шоке от «настойчивых пожеланий» законодателей и взяло паузу. Но появилась информация, что первый полет на Луну обойдется без стыковки с Лунной Орбитальной Станцией (ЛОС), так как с ней не успеть к 2024 году (а успеть нужно — этого требовал Трамп). Возникли сомнения и в нужности самой ЛОС: раз первый полет обойдется без неё, так может и дальше с ней спешить не стоит? Сомнения основаны на дилемме в конструкции/конфигурации лунных модулей для посадок на Луну: трехкомпонентными они будут или двухкомпонентными? Свою лепту внес подрядчик НАСА «Боинг», предложив не париться с трехкомпонентным лунным модулем с трансферной компонентой для перелета от далекой орбиты ЛОС к низкой орбите Луны. Можно ведь доставлять сразу к Луне более надежный свой двухкомпонентный (посадочный + взлетный компонент) лунный модуль на ракете-носителе SLS 1B — Space Launch System Block 1B это вариант ракеты с улучшенными твердотопливными ускорителями, дающими на 25% тяги больше, что позволяет отправлять к Луне не 26 тонн полезной нагрузки, а 35-37 тонн.

            image
            Читать дальше →
          • Из чего состоит знание иностранного языка

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

              Покупают 2—4-недельный курс в Лондоне. И, естественно (в который раз!), разочаровываются, убив почти впустую месяц своего времени и финансовые сбережения. Возвращаются с ещё более глубокой убеждённостью, что «мой случай уникален, со мной что-то не так, нужен какой-то особый подход».

              Ни черта уникального на самом деле нет, ситуация вполне типичная.
              Всё это — от тотального повсеместного непонимания, из чего, собственно, состоит знание иностранного языка. Да и разобраться непросто — весь эфир забит рекламной демагогией. 9 из 10 жалуются: я плохо воспринимаю речь на слух… что делать… У рекламщиков ответ уже готов: «Улучшить восприятие на слух? – Не проблема! Приходите! Поможем!»

              Ну приходят. Заканчивается всё очередным разочарованием и ещё более глубокой убеждённостью в своей безнадёжности и «уникальности» своего случая. В общем, кому интересно, давайте попробуем разобраться, из чего состоит знание иностранного языка.
              Читать дальше →
            • СТОП ПЕРЕКУП! Инструкция по самостоятельной сборке «медицинской маски»

              • Tutorial
              В авторском канале и примкнувшем к нему чате, постоянно всплывают пользователи, которые просят подсказать ссылку на инструкцию по самостоятельной сборке обычной трехслойной аптечной маски. Несмотря на то, что уже тысячу раз обсудили вроде везде где только можно, что «аптечная маска — ТОЛЬКО ДЛЯ ЗАБОЛЕВШИХ», все равно появляются люди, которые ведутся на странную пропаганду (в т.ч. из гос сми) и ищут эти несчастные кусочки спанбонда. Подогревает ситуацию и то, что в различных группах/домовых чатах такая простейшая маска (купленная еще пару недель назад даже не за цент, а за доли цента) сегодня в Беларуси стоит от доллара до двух (2-4 BYN). В государственных аптеках цены пока еще отстают, но не на много. Сколько же стоит такая маска на самом деле — можете прикинуть, дочитав статью до конца… Под катом — методика создания самодельной хирургической маски.

              Спаять себе медицинскую маску!
            • Монады как паттерн переиспользования кода


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


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


                Но ведь в интернете буквально сотни статей про ФП и монады, зачем писать еще одну?


                Дело в том, что все их (по крайней мере те что я читал) можно поделить условно на две категории: с одной стороны это статьи где вам объяснят что монада это моноид в категории эндофункторов, и что если монада T над неким топосом имеет правый сопряжённый, то категория T-алгебр над этой монадой — топос. На другой стороне располагаются статьи, где вам рассказывают, что монады — это коробки, в которых живут собачки, кошечки, и вот они из одних коробок перепрыгивают в другие, размножаются, исчезают… В итоге за горой аналогий понять что-то содержательное решительно невозможно.


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


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

                Читать дальше →
              • Мечтают ли нейросети об электроденьгах?

                TL;DR: Нет



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

                Почему? Давайте разбираться.
                Читать дальше →
              • 10/50/99: как давать обратную связь

                • Translation
                Обратная связь в компании, как Бэтмен в Готэме. Все ждут, что она прилетит и всех спасёт, направит на путь истинный. Но иногда, судя по ощущениям, вместо Бэтмена прилетает Джокер и рушит ваш проект.



                Для нас, как и для большинства современных компаний, вопрос обратной связи стоит довольно остро: когда, кому и как её правильно давать. Мы пробуем разные подходы. Недавно нашли интересный материал, которым делимся с вами. Под катом про принцип обратной связи «10/50/99», как помогать и не рушить.



                Читать дальше →
              • Семь архетипов превращения по принципам DevOps

                  Вопрос «как внедрить у себя девопс» стоит не первый год, но хороших материалов не так много. Иногда вы становитесь жертвой рекламы не особо умных консультантов, которым нужно продать свое время, неважно как. Иногда это мутные, крайне общие слова о том, как корабли мегакорпораций бороздят просторы вселенной. Возникает вопрос: а нам-то с этого что? Уважаемый автор, можете внятно списочком сформулировать свои идеи?

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



                  Джон Уиллис — один из отцов DevOps. За плечами у Джона — десятки лет работы с огромным количеством компаний. В последнее время Джон стал для себя замечать специфические паттерны, которые имеют место быть в работе с каждой из них. Используя эти архетипы, Джон наставляет компании на истинный путь DevOps-трансформации. Подробнее об этих архетипах — в переводе его доклада с конференции DevOops 2018.
                  Читать дальше →
                • .NET Core vs Framework. Производительность коллекций

                    image


                    Релиз .NET Core 3.1 — хороший повод мигрировать свой проект с Framework на Core. Во-первых, это отполированная версия с долгосрочной поддержкой (LTS), т.е. её можно смело использовать в продакшене. Во-вторых, в третьей версии добавили поддержку WPF и WinForms, так что теперь появилась возможность мигрировать и десктопные приложения.


                    Мне стало интересно, какой прирост производительности можно ожидать от Core в самых базовых классах, которые максимально часто используются в коде. Например, коллекции List, Array и Dictionary.


                    Если вам тоже интересно, как и почему изменилась производительность основных коллекций в Core 3 — прошу под кат!

                    Читать дальше →
                  • У меня нулевая текучка

                      Однажды на заводе, где я работал ИТ-директором, готовили отчетность к какому-то очередному мероприятию. Надо было рассчитать и предоставить показатели по выданному перечню, среди них затесалась текучесть кадров. И тут оказалось, что у меня она равна нулю.

                      Из руководителей я был такой один, тем самым привлек к себе внимание. Ну и сам удивился – оказывается, когда от тебя не уходят сотрудники, это странно и необычно.

                      В сумме я работал руководителем лет 7-10 (точно не знаю, какие периоды сюда включать), но нулевая текучка сохранилась. Никто никогда от меня не уходил, никого никогда я не выгонял. Только набирал.

                      Нулевая текучка, как показатель, никогда не была моей самоцелью. Но я стараюсь делать так, чтобы вложенные в людей усилия не пропадали даром. Сейчас расскажу примерно, как я руковожу так, что люди не уходят – вдруг что полезное для себя найдете. На полноту раскрытия темы не претендую, т.к. основываюсь только на личном опыте. Вполне возможно, что я всё делаю неправильно.
                      Читать дальше →
                    • Коронавирусы: от SARS к 2019-nCoV

                        image

                        Disclaimer: Я высказываю свое субъективное мнение на базе доступных данных. Мнение профессиональных вирусологов и эпидемиологов может отличаться от моего. В любой непонятной ситуации обращайтесь к материалам ВОЗ.

                        Привет, коллеги. Чем больше роюсь в данных по вспышке коронавируса 2019-nCoV, тем меньше мне нравится происходящее, с учетом предыдущих вспышек аналогичных вирусов. Предлагаю пробежаться по истории прошлых эпидемий и попробовать спрогнозировать дальнейшее течение.
                        Читать дальше →
                      • Какие английские слова IT-лексикона мы неправильно произносим чаще всего

                          Пока пара новых статей на технические темы еще в процессе написания, я решил опубликовать небольшой лингвистический материал. Достаточно часто замечаю, что коллеги, у которых английский язык — не родной, неправильно произносят некоторые характерные для IT сферы слова. И дело здесь не в том, насколько аутентично произносятся отдельные звуки, а именно в транскрипции. Регулярно встречал ситуации при общении с носителями, когда неправильно произносимое слово приводило к недопониманиям.

                          Дальше я приведу несколько наборов слов, сгруппированных по типовым ошибкам. К каждому слову будет приложена транскрипция, приблизительная транскрипция на русском и ссылка на более детальную информацию в словаре. Так как большинство IT компаний все-таки работает с Северной Америкой, то транскрипции будут из US English.
                          Читать дальше →
                        • Регулярные выражения для валидации распространенных видов данных

                            Для проверки текстовых полей на валидность обычно используют регулярные выражения. Существует несколько наиболе распространенных видов таких даных, как например номер кредитки, дата в определенном формате и т. д. На сайте html5pattern.com собирается коллекция регулярных выражений для таких данных (там это позиционируется, как возможное содержимое html5-атрибута pattern у inpit-элементов, но эти регулярные выражения можно использовать и для привычной валидации с помощью javascript). Актуальные для российской аудитории примеры, вместе с соответствующими регулярными выражениями вы можете посмотреть под катом.
                            Читать дальше →
                          • Как работают квантовые компьютеры. Собираем паззл


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


                              А недавно ко мне подошли коллеги и спросили “Ты понимаешь как работает квантовый компьютер? Можешь нам рассказать?” И тут я понял, что проблема со складыванием в голове целостной картинки есть не только у меня.


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

                              Получилось или нет - решать, как обычно, вам.
                            • RE: Страх и ненависть в IT

                                Писать ответы на статьи легко и приятно. Не надо часами корпеть над структурой статьи, достаточно следовать чужому плану и лишь внятно изложить мысли на бумаге. Тем не менее, рискну предположить, что критический взгляд «с другой стороны» на проблемы, поднятые в статье "Страх и ненависть в IT" уважаемым eugene_crabs, все же будет интересен. В роли адвоката дьявола, защищающего бесчеловечную системы выступаю сегодня я.

                                image

                                Я, в отличии от него, лычек сеньора не ношу, и стаж разработки у меня на пару лет поменьше, да и профильного образования, у меня, если честно, нет. Но вот проблем у меня с базовым интересом к работе не было, и мне кажется — причина в несколько ином восприятии реальности.
                                Статья для широкого круга читателей.
                                Читать дальше →
                              • Книжная абстиненция

                                  В конце статьи, по традиции, есть краткое содержание.

                                  Вы читаете книги по саморазвитию, бизнесу или повышению эффективности? Нет? Прекрасно. И не начинайте.

                                  Всё-таки читаете? Не делайте того, что в этих книгах предлагается. Пожалуйста. Иначе станете наркоманом. Как я.
                                  Читать дальше →