Как стать автором
Обновить
4
0.3
Вячеслав @Marwin

Руководитель команды разработки на .Net

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

Пожалуйста, прекратите использовать антипаттерн UPSERT (SQL Server)

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

Я думаю, что все уже знают мое мнение о MERGE и почему я держусь от него подальше. Но вот еще один антипаттерн, который я постоянно встречаю, когда требуется выполнить UPSERT (UPdate inSERT — обновить строку, если она существует, и вставить, если ее нет):

Читать далее
Всего голосов 17: ↑15 и ↓2+14
Комментарии16

Как правильно верстать в 2022 году. Часть 1

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

Меня зовут Николай, я Frontend-разработчик IT-компании Relog. Хочу рассказать о самых распространённых ошибках в вёрстке современных проектов.

Дело в том, что лишь малая часть современных фронтендеров обращает внимание на работу с HTML и CSS, предпочитая готовые решения, вроде UI-библиотек и систем сеток. Но эти решения неидеальные и приходится дописывать обёртки вокруг них, видоизменять код, переписывать стили и совершать прочие действия для соответствия требованиям проекта. Тут-то и начинаются проблемы: вёрстка местами становится избыточной, стили переназначются через important и с каждым релизом проект всё сложней поддерживать. Я уже не говорю об удобстве использования и доступности. Об этом думают вообще в последнюю очередь.

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

Читать далее
Всего голосов 41: ↑39 и ↓2+44
Комментарии42

Как вырастить тупого ребёнка (научно обоснованные вредные советы)

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

Brain of someone described as an «idiot»

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

Попробуем разобрать эти верования с точки зрения доказательной медицины и пойдём от обратного.

Что мы подразумеваем под умственным развитием


Интеллект (ум) – это способность учиться, делать выводы и решать проблемы. Эти способности закладываются генетически, но развиваются благодаря внешним факторам с момента зачатия до конца жизни.

Набор генов не только определяет ваши свойства, а ещё, сильно упрощая, задаёт возможный диапазон их развития. То есть мы не можем по ДНК отличить гения от среднего, не очень умного человека, но можем влиять на развитие потенциала ребёнка посредством воздействия на генетику эпигенетическими механизмами.

Итак, начнём растить не очень умного ребёнка, пользуясь достижениями современной науки.
Читать дальше →
Всего голосов 166: ↑143 и ↓23+155
Комментарии480

Windows10 + USB Printer + Network Share Printer. Лайф-хак

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

Думаю, многие наступили и мучаются с локально установленным USB принтером, который надо отдать в сеть для печати с других ПК. Microsoft несколько месяцев назад в пылу борьбы с очередной уязвимостью поломало данный механизм, призналось что "сломалось, ждите, починим" и собственно на этом все.

По состоянию на 23.12.2021 попытка подключить такой принтер на другом ПК после установки всех обновлений ("принт-сервер" win10, клиенты win10, win11 - другие не проверял) уже перестало давать ошибку подключения, но печатать от этого не стало.

И вот на просторах интеренета проскочило что с линукса оно ж печатает!! как? почему?

И тут вспоминаем, что, собственно, в Win10 есть родная подсистема печати для Linux. Раздел Windows Features / Print and Document Services / LPD Print Service. А почему бы и не поробовать?

Итого алгоритм:

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

Новые API в .NET 6

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

.NET 6 в процессе разработки, и я хотел поделиться некоторыми из моих любимых новых API в .NET и ASP.NET Core, которые вам обязательно понравятся. Почему они понравятся? Потому что они разработаны при прямом участии нашего фантастического сообщества разработчиков .NET. Подробнее в статье.

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

Acme.sh + Ansible + Alias mode: Автоматизируем получение и распространение TLS сертификатов

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

Acme.sh - скрипт, позволяющий без особых проблем получать let's encrypt сертификаты очень разными способами. В данной статье разберу как получать сертификаты через DNS api, но этим уже никого не удивишь, поэтому расскажу про метод DNS alias, он свежий (всего 3 года) и интересный. А так же про автоматизацию на Ansible и немного про мониторинг сертификатов.

Под катом гифки и видео версия.

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

Несколько советов по работе с асинхронным кодом в C#

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

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

Читать далее
Всего голосов 12: ↑8 и ↓4+5
Комментарии5

Букварь по F# для любопытствующих C#-разработчиков

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

Предисловие


Мой переход на F# в качестве излюбленного языка был слегка усеян препятствиями. Примерно через десять лет почти постоянного использования C# у меня пробудилось любопытство, когда я услышал об этом другом #-языке. Моя первая реакция была той, которую с тех пор видел у других C#-разработчиков — отрицание, — C# является хорошим языком, и мне с ним комфортно, так зачем тратить силы на изучение другого? Но любопытство осталось — и, по крайней мере, несколько раз выделил вечер, чтобы прочитать базовый вводный пост и попытаться написать каких-нибудь ката на F#. Это не прижилось, потому что я просто чувствовал себя потерянным и не мог воплотить свой опыт использования C# в ощущение даже отдаленного комфорта с F#. Достаточно легко опустить фигурные скобки, немного замяться, чтобы не забыть let вместо var — но как сделать то, что я хотел?


Тогда я этого не осознавал, но, на мой взгляд, наблюдал потенциальный недостаток в том, как F#-разработчики говорят, описывают и представляют свой язык внешнему миру. Существует обширная база материалов обо всех возможностях и функциональности F#: Algebraic Data Types, Exhaustive Matching, Type Inference и т.д. Есть много статей, посвященных тому, как решать широкий спектр задач с помощью F#. Но, как мне кажется, не хватает чего-то вроде следующего: некоторых указаний о том, как взять то, что вам уже удобно в C#, и перевести их на F#. Так что мне интересно, можем ли мы как-то закрыть этот недостаток.

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

14 вещей, которые я хотел бы знать перед началом работы с MongoDB

Время на прочтение8 мин
Количество просмотров33K
Перевод статьи подготовлен в преддверии старта курса «Нереляционные базы данных».





Основные моменты:

  • Крайне важно разработать схему несмотря на то, что в MongoDB она необязательна.
  • Аналогично, индексы должны соответствовать вашей схеме и шаблонами доступа.
  • Избегайте использования больших объектов и больших массивов.
  • Будьте осторожны с настройками MongoDB, особенно если речь идет о безопасности и надежности.
  • В MongoDB нет оптимизатора запросов, поэтому вы должны быть осторожны при выполнении операций запроса.

Я очень давно работаю с базами данных, но только недавно открыл для себя MongoDB. Есть несколько вещей, которые я хотел бы знать перед началом работы с ней. Когда у человека уже есть опыт в определенной сфере, у него существуют предвзятые представления о том, что такое базы данных и что они делают. В надежде облегчить задачу понимания другим людям, представляю список распространенных ошибок.
Читать дальше →
Всего голосов 30: ↑19 и ↓11+18
Комментарии13

Варианты использования конфигурации в ASP.NET Core

Время на прочтение15 мин
Количество просмотров20K
Для получения конфигурации приложения обычно используют метод доступа по ключевому слову (ключ-значение). Но это бывает не всегда удобно т.к. иногда требуется использовать готовые объекты в коде с уже установленными значениями, причем с возможностью обновления значений без перезагрузки приложения. В данном примере предлагается шаблон использования конфигурации в качестве промежуточного слоя для ASP.NET Core приложений.
Читать дальше →
Всего голосов 10: ↑9 и ↓1+9
Комментарии6

Почему налоговая не верит в айтишников-индивидуальных предпринимателей?

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

Сколько может зарабатывать айтишник на ИП? У ФНС свое мнение


Когда один человек много зарабатывает и честно платит налоги, налоговики смотрят со стороны и думают: «Как такое возможно? Наверняка у него масса помощников! Пусть и за них налоги заплатит!»

Рассказываем, как при наличии электронной подписи в пару кликов забыть о подобных притязаниях налоговой.
Читать дальше →
Всего голосов 90: ↑87 и ↓3+119
Комментарии233

Сводные таблицы в SQL

Время на прочтение10 мин
Количество просмотров71K
Сводная таблица – один из самых базовых видов аналитики. Многие считают, что создать её средствами SQL невозможно. Конечно же, это не так.
Читать дальше →
Всего голосов 17: ↑17 и ↓0+17
Комментарии9

Все статьи Тима Урбана (Wait But Why) на русском [46 из 99]

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

Привет, Хабр!

Я делаю проект «Ontol» — это GitHub для лонгридов (и видеолекций), где каждый может создавать свои подборки самых важных лонгридов (видеолекций) всех времен и народов по значимым темам жизни, постоянно их пополнять, улучшать и делиться ими со всеми в 1 клик. (прототип, телеграмм-канал)

Тим Урбан, пожалуй, самый продуктивный (даже в чем-то потеснил Пола Грэма) человек, который интересуется сложными вопросами и делится своими находками с человечеством, чтобы донести «кванты мировоззрения». Сферы его интересов от космоса и природы звука, крионики, нейроинтерфейсов и электромобилей, до выбора карьеры, дружбы и спутника жизни. Эти статьи входят в несколько моих онтолов (личных топ-10 самых полезных материалов на определенную тему: деньги, дело жизни, семья, космос, прокрастинация, искусственный интеллект, бессмертие).

А ещё, Тим Урбан — это человек, который больше всех сделал для понимания прокрастинации и борьбы с ней (а так же для инсайтов по GTD):


Вклад в философию и понимание космонавтики:



А какие ваши любимые статьи Тима Урбана?

Под катом все публикации Тима Урбана в хронологическом порядке (и перевод если есть).

UPD. 06.08.2020 Добавлен перевод «Всё, что Вам нужно знать о звуке» и "Глава 8. Лаборатории и эхо-камеры".
Читать дальше →
Всего голосов 16: ↑13 и ↓3+18
Комментарии0

Бенчмарки для веб-сайтов: 4 бесплатных инструмента

Время на прочтение3 мин
Количество просмотров6.9K
Расскажем об утилитах, которые помогут оценить производительность сайта и повысить его безопасность. В списке есть как новые инструменты — например, Fast or Slow от авторов плагина Wordfence для WordPress, так и проверенные временем системы вроде Mozilla Observatory.

Больше бенчмарков, в том числе для серверов Linux.

Читать дальше →
Всего голосов 7: ↑6 и ↓1+8
Комментарии0

Машинное обучение на C#: введение в ML.NET

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


ML.NET претендует на звание самой мощной библиотеки для машинного обучения на платформе .NET. Так ли это на самом деле? На вопрос отвечает Джефф Просайз.

Джефф Просайз — один из создателей компании Wintellect, коллега по цеху знаменитого Джеффри Рихтера, автор более девяти книг и множества статей по разработке приложений, сейчас работает с Azure и разрабатывает различные AI-решения.

Под катом перевод и видео доклада Джеффа с конференции DotNext 2019 Moscow в оригинале.
Всего голосов 25: ↑25 и ↓0+25
Комментарии10

Веб-разработка с .NET: Представляем Blazor WebAssembly 3.2.0

Время на прочтение5 мин
Количество просмотров13K
Привет, Хабр! Я рад сообщить, что Blazor WebAssembly теперь официально выпущена и доступна для всех. Это полнофункциональный и поддерживаемый выпуск Blazor WebAssembly, готовый к использованию в продакшене. Фулл-стак веб-разработка с .NET! Подробности под катом.

Читать дальше →
Всего голосов 12: ↑10 и ↓2+12
Комментарии17

Безопасность REST API от А до ПИ

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

Введение


Умение реализовать грамотное REST API — полезный навык в наше время, т.к. все больше сервисов предоставляют свои возможности с помощью API. Но разработка REST API не ограничивается реализацией HTTP запросов в определенном стиле и формированием ответов в соответствии со спецификацией. Задача обеспечения безопасности REST API не так очевидна, как, например, обеспечение безопасности баз данных, но ее необходимость не менее важна.
В настоящее время многие онлайн системы с помощью API передают приватные данные пользователей, такие как медицинские или финансовые. Текущая же ситуация с безопасностью в веб-приложениях весьма печальна: по данным Comnews порядка 70% содержат кри­тичес­кие уязвимости. Поэтому всем, кто участвует в проектировании, реализации и тестировании онлайн систем, важно иметь общую картину по существующим угрозам и способам обеспечения безопасности как всей системы, так и используемого REST API.

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

image
Читать дальше →
Всего голосов 52: ↑52 и ↓0+52
Комментарии22

Лучшие практики повышения производительности в C#

Время на прочтение8 мин
Количество просмотров20K
Всем привет. Мы подготовили перевод еще одного полезного материала в преддверии старта курса «Разработчик С#». Приятного прочтения.




Поскольку недавно мне довелось составлять список лучших практик в C# для Criteo, я подумал, что было бы неплохо поделиться им публично. Цель этой статьи — предоставить неполный список шаблонов кода, которых следует избегать, либо потому что они сомнительны, либо потому что просто плохо работают. Список может показаться немного рандомным, потому что он слегка выдернут из контекста, но все его элементы в какой-то момент были обнаружены в нашем коде и вызывали проблемы в продакшене. Надеюсь, это послужит хорошей профилактикой и предотвратит ваши ошибки в будущем.

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

И последнее, но не менее важное: некоторые пункты (например, ConfigureAwait) уже обсуждались во многих статьях, поэтому я не буду подробно останавливаться на них. Цель заключается в том, чтобы сформировать компактный список моментов, на которые нужно обращать внимание, а не давать подробную техническую выкладку по каждому из них.
Читать дальше →
Всего голосов 23: ↑20 и ↓3+23
Комментарии16

Как я на карантине работу искал

Время на прочтение7 мин
Количество просмотров60K
Хочу поделиться с сообществом своим недавним опытом поиска работы, сообщить, так сказать, вести с передовой. Несмотря на то, что все написанное – абсолютно субъективно, заметка будет полезна для других IT-шников. Особенно – если они интроверты и редко ходят по собеседованиям.

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


Читать дальше →
Всего голосов 90: ↑86 и ↓4+104
Комментарии150

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

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

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

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

  • Работа с поставщиками. Чтобы продать что-то ненужное, нужно сначала купить что-то ненужное.
  • Управление каталогом. У кого-то узкая специализация, а кто-то продает сотни тысяч разных товаров.
  • Управление розничными ценами. Тут придется учесть и цены поставщиков, и цены конкурентов, и доступные финансовые инструменты.
  • Работа со складом. В принципе, можно и не иметь собственного склада, а забирать товар со складов партнеров, но так или иначе вопрос стоит.
  • Маркетинг. Тут наполнение сайта контентом, размещение на площадках, реклама (онлайн и офлайн), акции и много чего еще.
  • Прием и обработка заказов. Колл-центр, корзина на сайте, заказы через мессенджеры, заказы через площадки и маркетплейсы.
  • Доставка.
  • Бухгалтерия и прочие внутренние системы.

Магазин, о котором мы будем говорить, не имеет узкой специализации, а предлагает кучу всего от косметики до мини-трактора. Я расскажу, как у нас устроена работа с поставщиками, мониторинг конкурентов, управление каталогом и формирование цен (оптовых и розничных), работа с оптовыми клиентами. Немного затронем тему склада.

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

Так что рассматриваем отдельную систему, более-менее универсальную, с которой интегрирована остальная инфраструктура компании.
Читать дальше →
Всего голосов 20: ↑19 и ↓1+18
Комментарии33

Информация

В рейтинге
2 256-й
Откуда
Москва, Москва и Московская обл., Россия
Зарегистрирован
Активность

Специализация

Software Developer, Backend Developer
Lead
C#
WPF
Microsoft SQL Server
ASP.Net
.NET