Pull to refresh
0
0
Серёжа Кислов @kislovs

.NET разработчик

Send message

Оформляем README-файл профиля на GitHub

Reading time14 min
Views234K

Летом 2020 года GitHub позволила пользователям создавать персональные README-файлы и с их помощью кастомизировать свои профили. Сама платформа при создании подобного файла предлагает уже готовый шаблон, в который можно вписать свои данные. Но о какой кастомизации может идти речь, если у всех будут одинаково оформленные профили? За почти два года сообщество придумало множество различных способов выделиться и особенно оформить свою страницу на GitHub.

Читать далее
Total votes 62: ↑60 and ↓2+73
Comments25

Английский. Скрытый драйвер языка

Reading time7 min
Views28K

На какие вопросы отвечает эта статья

1. Каков механизм восприятия языка “напрямую”.

2. Как тренировать этот механизм.

3. Как воспринимать английские слова как русские.

3. Почему аудирование бесполезно.

На какие вопросы не отвечает эта статья

1. Как осваивать словарный запаса.

2. Как учить грамматику.

3. Как интегрировать связь смысл-слово в дальнейшую практику.

Поэтапно буду выкладывать статьи с подробным описанием упражнений. Ответы на все неотвеченные вопросы будут в последующих статьях. 

Читать
Total votes 34: ↑23 and ↓11+13
Comments40

Структурное логирование и интерполированные строки в C# 10

Level of difficultyMedium
Reading time11 min
Views28K

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

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

Запросы в PostgreSQL: 1. Этапы выполнения

Reading time17 min
Views80K

Привет, Хабр! Начинаю еще один цикл статей об устройстве PostgreSQL, на этот раз о том, как планируются и выполняются запросы.

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

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

Материал перекликается с нашим учебным курсом QPT «Оптимизация запросов», но ограничивается только подробностями внутреннего устройства и не затрагивает оптимизацию как таковую. Кроме того, я ориентируюсь на еще не вышедшую версию PostgreSQL 14. А курс мы тоже скоро обновим (правда, на версию 13; приходится бежать со всех ног, чтобы только оставаться на месте).

Поехали
Total votes 33: ↑33 and ↓0+33
Comments11

Оптимизация dotMemory с использованием dotMemory (и не только...)

Reading time8 min
Views6.8K

dotMemory — это профилировщик памяти для .NET от компании JetBrains. А меня зовут Илья, и я из команды разработки этого инструмента.

Хочу поделиться историей классического догфудинга: как мы оптимизировали один из алгоритмов в dotMemory с помощью своих же инструментов — dotMemory и dotTrace (часть 1). Потом еще раз — с помощью dotTrace, а напоследок еще и с использованием BenchmarkDotNet (часть 2).

Поделиться этой историей меня мотивировали статьи 1 и 2, за что их авторам отдельное большое спасибо.

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

10 ловушек, связанных с требованиями, которых следует избегать

Reading time12 min
Views16K

Небрежное отношение к разработке и управлению требованиями часто приводит к тому, что проекты по разработке программного обеспечения оказываются сложными или проваливаются. Вот десять распространенных ловушек, с которыми можно столкнуться, если не принимать требования всерьез. Я описываю симптомы, которые могут указывать на то, что вы стали жертвой одной из ловушек, а также некоторые возможные решения. Более подробную информацию обо всех этих ловушках можно найти в книге "Требования к программному обеспечению", 3-е издание, авторы Karl Wiegers и Joy Beatty.

Читать далее
Total votes 12: ↑10 and ↓2+11
Comments18
Современный мир полон удивительных, порой пугающих технологий. Иногда кажется, что мы уже живём в предсказанном классиками научной фантастики антиутопичном техногенном будущем.

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

Мы за второй подход. И эта коллекция — как раз о необычных путях и хитростях в современной разработке. Читай, учись — и не бойся инноваций.
Кам он!
Total votes 11: ↑9 and ↓2+20
Comments2

Оживляем деревья выражений кодогенерацией

Reading time8 min
Views12K

Expression Trees — это, пожалуй, самое удобное средство манипуляции кодом в run-time.

Расширять код метапрограммами в compile-time позволяют Roslyn Source Generators, с ними это стало проще, чем когда-либо.

Пора использовать одно во благо другого, даже если мир к этому еще не совсем готов.

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

aSocial — полностью распределенная социальная сеть

Reading time14 min
Views9.2K

В свете последних событий идея о распределенной социальной сети вновь зохватывает разум...

Читать дальше
Total votes 9: ↑8 and ↓1+9
Comments42

Job — шаблон проектирования для новичков и опытных Go программистов

Reading time4 min
Views13K

Я начал программировать на Go после достаточно продолжительного периода программирования на PHP. Полагаю судя по последним тенденциям, мой случай далеко не единичный. Go в целом набирает популярность среди Web разработчиков.

Читать далее
Total votes 12: ↑6 and ↓6+7
Comments51

Автоматизация ручных действий с GitHub Actions

Reading time10 min
Views17K

GitHub Actions — инструмент для автоматизации рутинных действий вашего пакета на GitHub.

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

GitHub предоставляет действительно удобные и рабочие инструменты для этого.

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

Взламываем Ball Sort Puzzle

Reading time8 min
Views17K

Ball Sort Puzzle — это популярная мобильная игра на IOS/Android. Суть её заключается в перестановке шариков до тех пор, пока в колбах не будут шарики одного цвета. При этом шарик можно перетаскивать либо в пустую колбу, либо на такой же шарик.

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

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

Ну это ни в какие ворота — против нас играет коварный ИИ. Нужно действовать соответственно!

Под катом мы:

• Придумаем алгоритм, решающий эту головоломку (Python)

• Научимся парсить скриншот игры, чтобы скармливать алгоритму задачки (OpenCV)

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

• Выстроим CI/CD через GitHub Actions и задеплоим бота на Яндекс.Функции

Погнали!
Total votes 9: ↑8 and ↓1+11
Comments14

Так ли токсичен синтаксис Rust?

Reading time19 min
Views50K
fn main() {
  println!("Hello, Rust!");
  println!("... Goodbye!");
}

Синтаксис — это первое, на что обращают внимание разработчики, впервые столкнувшись с кодом на Rust. И сложно найти что-то другое, что вызывало бы больше негодования у новичков, и при этом такое, к чему совершенно спокойно относятся уже "понюхавшие пороха" Rust-программисты. Посмотрите, например, сколько эмоций вызывает синтаксис Rust у комментаторов одной из типичных новостей про Rust на OpenNET:

Читать дальше →
Total votes 118: ↑102 and ↓16+120
Comments737

9 тяжёлых уроков, которые я усвоил за 18 лет разработки

Reading time8 min
Views61K
Я начал писать код в моей комнате родительского дома, когда мне было 14. Помню, как читал всё, что мог достать с помощью своего медленного соединения с Интернетом. Затем, когда мне было 20, я подписал первый контракт, став веб-разработчиком и изучая PHP и JavaScript. Мне потребовалось 18 лет, чтобы осознать, что кодинг — только часть профессии. Заметьте, я по-прежнему наслаждаюсь кодингом. Не думаю, что когда-нибудь перестану программировать, даже если это станет просто моим хобби, но есть нечто гораздо большее, чем код. Вот почему я хочу поделиться своим опытом. Я думаю, что иногда разработчики усваивают эти уроки слишком поздно.

Приятного чтения
Total votes 71: ↑62 and ↓9+72
Comments142

Кастомизация профиля GitHub: Readme

Reading time1 min
Views22K


Летом 2020 года на GitHub появилась возможность добавить Readme для своего профиля. Эта новость как-то обошла стороной Habr, поэтому сделаю небольшой обзор данной фичи.
Читать дальше →
Total votes 27: ↑24 and ↓3+29
Comments10

Враг не пройдёт, или как помочь командам соблюдать стандарты разработки

Reading time14 min
Views9.6K
Подход governance as a code обеспечивает контроль соблюдения архитектурных принципов как в части конфигураций инфраструктуры, так и в части программного кода. Правила проверки каждого артефакта, будь то конфигурация k8s, список библиотек или даже описание сценария CI/CD, описаны специальным кодом проверки правил, имеют свой жизненный цикл, могут тестироваться и ничем не отличаются от обычного программного продукта.

Александр Токарев (Сбербанк) расскажет, как и что можно проверять в процессе разработки программного обеспечения, чтобы разрабатывать более безопасные и качественные приложения, и почему Сбербанк решил не использовать такие очевидные решения как SonarQube, а разработать собственное решение на базе Open Policy Agent без дополнительных пакетов над ним. Также Александр покажет, когда выбирать admission controller, когда использовать «чистый» Open Policy Agent, а когда можно обойтись без какого-либо контроля.

Александр поговорит о том, нужны ли стандарты, что такое язык Rego и что за крутой продукт Open Policy Agent, а также рассмотрит нетиповые кейсы его применения, как с ним работать, и как его использовать для контроля. Email Александра.


Читать дальше →
Total votes 15: ↑14 and ↓1+20
Comments3

Контрольный список для ревью кода в распределенных системах

Reading time6 min
Views6.8K
points of view by sanja

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

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

Команда Mail.ru Cloud Solutions перевела статью, автор которой несколько лет занимался обнаружением типовых сбоев в коде на продакшене и изучал причины, приведшие к такому результату. В статье — рекомендации по проверке кода, которые автор использует в качестве базового контрольного списка.
Читать дальше →
Total votes 30: ↑30 and ↓0+30
Comments3

Деконструкция TDD

Reading time6 min
Views6.4K

Здравствуйте, меня зовут Дмитрий Карловский. А вы на канале Core Dump, где мы берём разные темы из компьютерной науки и деконструируем их по полочкам. Начнём мы с разработки через тестирование.


Test Driven Development

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


Этот ритуал сделает ваш код красивым и надёжным. Поддерживать его будет легко и просто. А разработка будет простой и быстрой. Так во всяком случае настоятельно убеждают нас проповедники TDD.


Видео запись этого разбора.

Читать дальше →
Total votes 33: ↑17 and ↓16+6
Comments90

Программисту. 10 ценных GitHub-репозиториев

Reading time3 min
Views44K
GitHub — это платформа, дающая программистам отличные инструменты для организации работы над кодом. Но в GitHub-репозиториях, помимо кода, можно найти массу ценных учебных материалов. Я, например, занимаюсь разработкой ПО и постоянно ищу репозитории, которые могут чем-то мне пригодиться. Вот 10 моих любимых GitHub-проектов.


Читать дальше →
Total votes 55: ↑37 and ↓18+37
Comments9

Мёртвый код: найти и обезвредить

Reading time14 min
Views27K


Меня зовут Данил Мухаметзянов, я работаю бэкенд-разработчиком в Badoo уже семь лет. За это время я успел создать и изменить большое количество кода. Настолько большое, что в один прекрасный день ко мне подошёл руководитель и сказал: «Квота закончилась. Чтобы что-то добавить, нужно что-то удалить».

Ладно, это всего лишь шутка — он такого не говорил. А жаль! В Badoo за всё время существования компании накопилось больше 5,5 млн строк логического бизнес-кода без учёта пустых строк и закрывающих скобок.

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

Эту тенденцию заметил не только я. В Badoo поняли: наши высокооплачиваемые инженеры постоянно тратят время на мёртвый код.
Total votes 67: ↑67 and ↓0+67
Comments28

Information

Rating
Does not participate
Location
Новосибирск, Новосибирская обл., Россия
Date of birth
Registered
Activity