Как стать автором
Обновить
2
0

Пользователь

Отправить сообщение

Сколько стоит умный дом? Рассказываю, как строил свой и что получилось за 1000 руб./м²

Уровень сложностиПростой
Время на прочтение25 мин
Количество просмотров95K

Подробный рассказ о том, как я свой дом и сад сделал умными. С фото, техническими деталями, стоимостями и выводами на будущее.

Читать
Всего голосов 246: ↑244 и ↓2+296
Комментарии296

Зачем стрелять в зад медведю и ползти на пузе к моржу

Время на прочтение3 мин
Количество просмотров27K

Читал про любопытных учёных, которые исследуют Арктику. Знаете, как люди узнают, что они там наворотили в природе этой своей цивилизацией? Всё просто: спрашивают у зверей.

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

Что скажут на это учёные
Всего голосов 228: ↑222 и ↓6+269
Комментарии61

Record vs struct — когда кто кого

Время на прочтение13 мин
Количество просмотров25K

В .Net, помимо типов class и struct, с недавних пор есть еще и типы record и record struct. Появление двух новых типов могло внести запутанность по поводу того, в чем их сходства и различия, и в каких случаях стоит их применять. В этой статье мы разберем, в каких ситуациях использовать class, record, struct, и какие преимущества даёт тот или иной тип в различных ситуациях. В конце мы приведем шпаргалку, которая поможет быстро определиться, какой из видов типов лучше подходит в том или ином случае.

Читать далее
Всего голосов 19: ↑18 и ↓1+20
Комментарии8

Язык программирования типов, скрытый в TypeScript. Utility Types

Время на прочтение5 мин
Количество просмотров15K

TypeScript — это язык, расширяющий JavaScript, добавляя в последний типизацию. Правда, так как TypeScript не имеет runtime-а (почти), он транслируется в JavaScript, в процессе чего, вся типизация теряется. Такую типизацию можно назвать лишь инструментом статического анализа кода. Тем не менее — это очень мощный инструмент. К тому же, помимо проверки кода, типизация также и документирует его.

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

Читать далее
Всего голосов 22: ↑21 и ↓1+21
Комментарии3

Очень типобезопасно! Концепт продвинутой расширяемой системы единиц измерения с generic math для .NET

Время на прочтение3 мин
Количество просмотров4.9K

Что может быть лучше десятка пары часов проведенных с дженериками и compile time safety в C#?

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

Читать далее
Всего голосов 23: ↑23 и ↓0+23
Комментарии15

Исключения среди исключений в .NET

Время на прочтение15 мин
Количество просмотров25K

В свое время я случайно узнал, что исключения в моём горячо любимом языке C# — и, как следствие, во всем .NET — не все ведут себя одинаково. Причём, что ещё гораздо интереснее, далеко не все и не всегда могут быть обработаны и перехвачены. Что, казалось бы, полностью противоречит интуитивному восприятию конструкции try-catch-finally

Изучая этот вопрос, я находил всё новые и новые исключения среди исключений, которые оказывались «сильнее», чем конструкция try-catch-finally. К тому моменту, когда мой список вырос до 7 пунктов, я внезапно осознал, что нигде не было такого места, где можно было бы найти их все сразу. Максимум — 2 или 3 случая, рассмотренных в одной статье. 

Это и подтолкнуло меня к написанию данной статьи. 

Читать далее
Всего голосов 63: ↑62 и ↓1+82
Комментарии19

Шаблон проектирования «Спецификация»

Время на прочтение4 мин
Количество просмотров62K
Предпринимая попытки постичь DDD вы наверняка натолкнетесь на этот паттерн, который часто тесно используется вместе с другим, не менее интересным, паттерном «Репозиторий». Этот паттерн предоставляет возможность описывать требования к бизнес-объектам, и затем использовать их (и их композиции) для фильтрации не дублируя запросы.

Пример


Давайте для примера спроектируем домен для простого группового чата: у нас будут три сущности: Группа и Пользователь, между которыми связь многие-ко-многим (один пользователь может находиться в разных группах, в группе может быть несколько пользователей) и Message представляющий собой сообщение, которое пользователь может написать в какой-либо группе:
Читать дальше →
Всего голосов 31: ↑26 и ↓5+21
Комментарии64

Программируем микроконтроллеры ESP32 и STM32 на C# (nanoFramework)

Время на прочтение31 мин
Количество просмотров47K
dotnet nanoFramework

.NET nanoFramework — это бесплатная платформа с открытым исходным кодом, основанная на .NET и предназначена для малых встраиваемых устройств, микроконтроллеров. С её помощью можно разрабатывать различные устройства для Интернета вещей, носимые устройства, научные приборы, робототехнические устройства, можно создавать прототипы и даже использовать на промышленном оборудовании. В первой части мы познакомились с платформой .NET nanoFramework, её архитектурой, основными возможностями, посмотрели примеры программного кода. Теперь перейдем к практике, установим nanoFramework на микроконтроллеры серии ESP32 и STM32, напишем первый «Hello World!», поработаем с аппаратными интерфейсами, и оценим переносимость кода с «большого» .NET на платформу nanoFramework.
Читать дальше →
Всего голосов 29: ↑27 и ↓2+32
Комментарии118

Как я «напрограммировал» себе скилл рисования диаграмм в скетч-стиле

Время на прочтение5 мин
Количество просмотров26K

По работе мне часто приходится рисовать разные схемы, диаграммы процессов и графики, в том числе и те, которые потом используются в качестве иллюстраций для сайта, статей и презентаций. Всё бы ничего, но есть у диаграмм и графиков, сделанных в популярных онлайн-сервисах наподобие draw.io или lucidcharts одна беда — они выглядят как-то слишком уныло и «олдскульно», в духе «90-х». Всю эту инфографику хотелось бы сделать более заметной, привлекательной и душевной (и, желательно, без привлечения дизайнера).

Так у меня возникла идея создания инструмента для отрисовки диаграмм и графиков в стиле «нарисовано от руки». Об истории создания сервиса и «подводных камнях» я расскажу в этой заметке.

Читать далее
Всего голосов 157: ↑157 и ↓0+157
Комментарии37

Полное руководство по Flexbox

Время на прочтение11 мин
Количество просмотров583K
Полное руководство по CSS flexbox. Это полное руководство объясняет все о flexbox, сосредотачиваясь на всех возможных свойствах для родительского элемента (контейнер flex) и дочерних элементов (элементы flex). Оно также включает в себя историю, демонстрации, шаблоны и таблицу поддержки браузеров.
Читать дальше →
Всего голосов 23: ↑17 и ↓6+11
Комментарии5

Полное визуальное руководство/шпаргалка по CSS Grid

Время на прочтение7 мин
Количество просмотров347K

Сегодня мы с вами рассмотрим свойства CSS Grid (далее также — Грид), позволяющие создавать адаптивные или отзывчивые макеты веб-страниц. Я постараюсь кратко, но полно объяснить, как работает каждое свойство.


Что такое CSS Grid?



Грид — это макет для сайта (его схема, проект).


Грид-модель позволяет размещать контент сайта (располагать его определенным образом, позиционировать). Она позволяет создавать структуры, необходимые для обеспечения отзывчивости сайтов на различных устройствах. Это означает, что сайт будет одинаково хорошо смотреться на компьютере, телефоне и планшете.


Вот простой пример макета сайта, созданного с помощью Грида.

Читать дальше →
Всего голосов 34: ↑33 и ↓1+39
Комментарии4

Практическое руководство по TypeScript для разработчиков

Время на прочтение10 мин
Количество просмотров80K

Представляю вашему вниманию перевод статьи "Working With TypeScript: A Practical Guide for Developers".


Что такое TypeScript?


TypeScript — это популярный статический типизатор (static type checker) или типизированное надмножество (typed superset) для JavaScript, инструмент, разработанный Microsoft и добавляющий систему типов к гибкости и динамическим возможностям JavaScript.


TypeScript развивается как проект с открытым исходным кодом, распространяется под лицензией Apache 2.0, имеет очень активное и высокопрофессиональное сообщество, а также огромное влияние на экосистему JavaScript.


Установка TypeScript


Для того, чтобы начать работу с TypeScript, нужно либо установить специальный интерфейс командной строки (command line interface, CLI), либо воспользоваться официальной онлайн-песочницей или другим похожим инструментом.

Читать дальше →
Всего голосов 26: ↑24 и ↓2+33
Комментарии4

Полное руководство по CSS Flex + опыт использования

Время на прочтение6 мин
Количество просмотров53K

Как и CSS Grid, Flex Box довольно сложен, потому что состоит из двух составляющих: контейнера и элементов внутри него.

Когда я начал изучать Flex, я хотел увидеть все, на что он способен. Но мне не удалось найти подробное руководство с примерами всех возможностей. Поэтому я решил самостоятельно создать диаграммы свойств Flex с «высоты птичьего полета».

Читать!
Всего голосов 14: ↑11 и ↓3+13
Комментарии13

Многопоточность на низком уровне

Время на прочтение14 мин
Количество просмотров38K

Очень часто при обсуждении многопоточности на платформе .NET говорят о таких вещах, как детали реализации механизма async/await, Task Asynchronous Pattern, deadlock, а также разбирают System.Threading. Все эти вещи можно назвать высокоуровневыми (относительно темы хабрапоста). Но что же происходит на уровне железа и ядра системы (в нашем случае — Windows Kernel)?


На конференции DotNext 2016 Moscow Гаэл Фретёр, основатель и главный инженер компании PostSharp, рассказал о том, как в .NET реализована многопоточность на уровне железа и взаимодействия с ядром операционной системы. Несмотря на то, что прошло уже пять лет, мы считаем, что никогда не поздно поделиться хардкорным докладом. Гаэл представил нам хорошую базу по работе процессора и атомнарным примитивам.



Вот репозиторий с примерами из доклада. А под катом — перевод доклада и видео. Далее повествование будет от лица спикера.

Всего голосов 31: ↑30 и ↓1+40
Комментарии16

Популярные заблуждения о C#

Время на прочтение11 мин
Количество просмотров68K

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

Читать далее
Всего голосов 74: ↑71 и ↓3+87
Комментарии63

Гигиена труда оператора ЭВМ (МКМ)

Время на прочтение25 мин
Количество просмотров23K

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

Читать далее
Всего голосов 30: ↑23 и ↓7+29
Комментарии21

Не можете запомнить порядок слов в английском предложении? Вжарьте по нему «опсашком»

Время на прочтение6 мин
Количество просмотров44K

В русском языке порядок слов в предложении практически не важен. 

«Я тебя люблю», «Я люблю тебя», «Тебя я люблю», «Люблю я тебя». Нюансы есть, но при этом каждый из этих вариантов грамматически правильный. 

В английском все не совсем так. Есть фраза «I love you», а «You love I» — уже нет, так говорить неправильно. Вот только в английском есть свои способы, как сделать язык богаче и не привязываться к жесткой структуре «подлежащее-глагол-сказуемое».    

Об этом сегодня и поговорим. Как правильно организовать порядок слов в английском предложении и не показаться скучным. Спойлер: «опсашком» в заголовке — это не описка, а реальный мнемонический инструмент. Обо всем расскажем в статье. 

Читать далее
Всего голосов 24: ↑23 и ↓1+31
Комментарии121

Как законтрибьютить в опенсорс, чтобы не сгореть со стыда

Время на прочтение13 мин
Количество просмотров13K

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


На осеннем TechTrain Андрей Солнцев (asolntsev) и Артем Ерошенко (eroshenkoam) показали на примере Allure и Selenide, как справиться с техническими и психологическими трудностями. Прямо во время доклада они сделали изменения в опенсорсных проектах.



Под катом — расшифровка их доклада и видео с фестиваля. Далее повествование будет от лица спикеров.

Всего голосов 36: ↑34 и ↓2+50
Комментарии6

Использование алгоритма Прима для генерации соединённых друг с другом пещер

Время на прочтение4 мин
Количество просмотров13K


Я решил объяснить один из алгоритмов генерации карты, используемых в моей игре In the House of Silence. Главное преимущество этого способа заключается в том, что в отличие от других алгоритмов, он никаким образом не может сгенерировать карту с разделёнными частями.

Генерация идеального лабиринта



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

Для понятности я привёл псевдокод, описывающий алгоритм Прима. Будет довольно просто приспособить его под любой язык программирования.
Читать дальше →
Всего голосов 50: ↑50 и ↓0+50
Комментарии5

Написание Dockerfile. Лучшие практики

Время на прочтение4 мин
Количество просмотров13K
Публикуем новый перевод и надеемся, что рекомендации автора помогут вам оптимизировать образ Docker.

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



Если вы новичок в Docker, можете выбрать шаблон (базовый образ) и определить свои инструкции (команды Dockerfile), чтобы разместить свой код внутри образа и запустить его.

Простота Docker будем помогать вам в работе с самого начала его использования, а навык его оптимизации приходит с опытом и обычно требует времени.
Читать дальше →
Всего голосов 11: ↑8 и ↓3+8
Комментарии10

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность