Pull to refresh
2
0

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

Send message

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

Level of difficultyEasy
Reading time25 min
Views94K

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

Читать
Total votes 300: ↑298 and ↓2+296
Comments296

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

Reading time3 min
Views27K

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

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

Что скажут на это учёные
Total votes 281: ↑275 and ↓6+269
Comments61

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

Reading time13 min
Views24K

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

Читать далее
Total votes 22: ↑21 and ↓1+20
Comments8

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

Reading time5 min
Views15K

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

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

Читать далее
Total votes 23: ↑22 and ↓1+21
Comments3

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

Reading time3 min
Views4.9K

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

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

Читать далее
Total votes 23: ↑23 and ↓0+23
Comments15

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

Reading time15 min
Views25K

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

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

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

Читать далее
Total votes 84: ↑83 and ↓1+82
Comments19

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

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

Пример


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

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

Reading time31 min
Views46K
dotnet nanoFramework

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

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

Reading time5 min
Views25K

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

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

Читать далее
Total votes 157: ↑157 and ↓0+157
Comments37

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

Reading time11 min
Views577K
Полное руководство по CSS flexbox. Это полное руководство объясняет все о flexbox, сосредотачиваясь на всех возможных свойствах для родительского элемента (контейнер flex) и дочерних элементов (элементы flex). Оно также включает в себя историю, демонстрации, шаблоны и таблицу поддержки браузеров.
Читать дальше →
Total votes 23: ↑17 and ↓6+11
Comments5

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

Reading time7 min
Views342K

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


Что такое CSS Grid?



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


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


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

Читать дальше →
Total votes 41: ↑40 and ↓1+39
Comments4

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

Reading time10 min
Views79K

Представляю вашему вниманию перевод статьи "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), либо воспользоваться официальной онлайн-песочницей или другим похожим инструментом.

Читать дальше →
Total votes 37: ↑35 and ↓2+33
Comments4

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

Reading time6 min
Views52K

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

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

Читать!
Total votes 19: ↑16 and ↓3+13
Comments13

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

Reading time14 min
Views37K

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


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



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

Total votes 42: ↑41 and ↓1+40
Comments16

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

Reading time25 min
Views23K

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

Читать далее
Total votes 43: ↑36 and ↓7+29
Comments21

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

Reading time6 min
Views44K

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

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

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

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

Читать далее
Total votes 33: ↑32 and ↓1+31
Comments121

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

Reading time13 min
Views13K

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


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



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

Total votes 54: ↑52 and ↓2+50
Comments6

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

Reading time4 min
Views13K


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

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



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

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

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

Reading time4 min
Views13K
Публикуем новый перевод и надеемся, что рекомендации автора помогут вам оптимизировать образ Docker.

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



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

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

Information

Rating
Does not participate
Registered
Activity