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

C# разработчик

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

Я программист, и я тупой

Время на прочтение2 мин
Количество просмотров78K
Я пишу код за деньги уже пятнадцать лет. Пробовал себя и в других ролях – управление продуктом, аналитика, тестирование, – но как-то не пошло. И с течением лет пришел к осознанию, что я не очень умный. К сожалению.

Никаких особых медицинских диагнозов мне не ставили, но мои умственные способности крайне ограниченны. Даже те задачи на Leetcode, которые попроще, вызывают у меня затруднения. Когда я читаю о самом обычном алгоритме консенсуса, у меня кипит мозг. У меня плохо получается отслеживать сложные зависимости в кодовой базе. Я не способен освоить модные языки вроде Rust (пытался, но по правде сказать, для меня это чересчур). Я терпеть не могу микросервисы и современный фронтенд: там слишком много движущихся частей, и уследить за всеми я не в состоянии.

Как же я выхожу из положения?
Читать дальше →
Всего голосов 297: ↑283 и ↓14+324
Комментарии334

«Чистый» код, ужасная производительность

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

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

Если посмотреть на список правил «чистого» кода и вытащить из него правила, которые действительно влияют на структуру кода, то мы получим следующее:

  • Отдавайте предпочтение полиморфизму, а не «if/else» и «switch»
  • Код не должен знать о внутреннем устройстве объектов, с которыми он работает
  • Функции должны быть маленькими
  • Каждая функция должна выполнять одну задачу
  • Принцип «DRY» — Don’t Repeat Yourself («не повторяйся»)

Эти правила достаточно чётко формулируют то, как должен создаваться конкретный фрагмент кода, чтобы быть «чистым». Но я задам такой вопрос: если мы создадим фрагмент кода, соответствующий этим правилам, какова будет его производительность?
Читать дальше →
Всего голосов 192: ↑156 и ↓36+149
Комментарии368

Markdown Editor: WYSIWYG и markup-редактор на базе Gravity UI

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

Привет, Хабр! Меня зовут Сергей Махнаткин, я работаю разработчиком в отделе User Experience в Yandex Cloud. В прошлом году мы писали о нашей дизайн-системе и библиотеке компонентов Gravity UI. С тех пор система не раз обновлялась и обрастала новыми функциями, и сегодня я хочу рассказать о новом инструменте — Markdown Editor, который значительно упрощает процесс работы с документацией.

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

Читать далее
Всего голосов 38: ↑37 и ↓1+55
Комментарии20

Самые опасные сетевые порты: как найти и закрыть все лазейки

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

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

Привет! Меня зовут Ваня, я ведущий инженер по информационной безопасности в Selectel. В этом материале разберу, какие порты наиболее интересны хактивистам и как быть в курсе актуальных уязвимостей. А в конце поделюсь чек-листом с планом действий при обнаружении открытых портов в своей инфраструктуре. Подробности под катом!
Читать дальше →
Всего голосов 41: ↑38 и ↓3+43
Комментарии26

Бесплатная open-source альтернатива Google Photos и iCloud Photos

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

Как-то мы лежали в кровати с нашим малышом и жена сказала, что фотографий и видео с ним стало больше и она не хочет использовать платное приложение. Примерно так начинается рассказ создателя Immich – бесплатного open-source решения для хранения фотографий и видео.

Надо сказать, в последние годы я тоже регулярно пытался найти бесплатную self-hosted альтернативу Google Photos и iCloud, однако до сегодняшнего дня функциональных и вместе с тем простых в настройке решений я не встречал. Тот же Nextcloud всегда казался чересчур громоздким. Immich же, напротив, сразу завоевал моё сердце, и вот, после нескольких недель его использования, с радостью делюсь своим рабочим примером.

Читать далее
Всего голосов 43: ↑38 и ↓5+44
Комментарии125

Неинтерактивная SSH-аутентификация

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


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

Чтобы не вводить пароль каждый раз вручную, есть специальные инструменты для автоматизации логина, то есть для неинтерактивной SSH-аутентификации. Это классическая утилита sshpass и её «исправленный» вариант passh (подробнее о причине «исправления» см. здесь).
Читать дальше →
Всего голосов 14: ↑13 и ↓1+15
Комментарии22

Основы Docker: контейнеризация, Dockerfile и Docker Compose. Часть 2

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров8.3K

Привет, Хабр! Меня зовут Толя, я лидер компетенции Java в Цифровом СИБУРе. Наш прошлый материал о Docker собрал классный фидбэк, поэтому мы решили развить тему и подготовить ещё несколько статей, двигаясь от простого к сложному.

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

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

Введение в Docker и Kubernetes: основы контейнерных технологий. Часть 1

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

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

Читать далее
Всего голосов 15: ↑12 и ↓3+10
Комментарии16

7 продвинутых приёмов JavaScript, которые должен знать каждый разработчик

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

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

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

Давайте разберём 7 продвинутых техник в JavaScript, которые помогут вам вывести свои навыки на новый уровень.

Читать далее
Всего голосов 31: ↑23 и ↓8+21
Комментарии10

Obsidian — Notion свободного человека

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

Notion объявили, что уходят из России и 9 сентября блокируют аккаунты пользователей.

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

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

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

Год назад перевёл все свои заметки в Обсидиан. Причина простая: Обсидиан может гораздо больше вещей, чем Notion.

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

Читайте в статье
Всего голосов 121: ↑115 и ↓6+128
Комментарии266

Obsidian+Github вместо Notion: синхронизация, бекап и версионность (3-в-1)

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

О том, как сделать прозрачную синхронизацию заметок Obsidian между устройствами (Desktop, Android, iOS) через GitHub:

1. Без сторонних приложений (вроде iCloud, SyncThing, Termux и пр)
2. Бесплатно
3. Бонусом — резервная копия: как самих заметок, так и истории изменений.

В результате получается полноценная замена Notion: структурированные заметки с автоматической синхронизацией между устройствами.

Инструкция:
Всего голосов 133: ↑133 и ↓0+154
Комментарии126

Будни техпода. Какую ОС семейства Linux выбрать для VDS

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


Не все наши клиенты знакомы с Linux, и это вполне нормально. Когда дело доходит до выбора сервера, часто возникает вопрос: какую версию Linux выбрать и чем они отличаются друг от друга? И в этой статье я постараюсь объяснить, что из себя представляют популярные дистрибутивы Linux (Ubuntu, Debian, CentOS), которые можно заказать на нашем сайте, и чем они принципиально отличаются друг от друга. А ещё подскажу, как с ними удобнее работать тем, кто пока на «вы» с консолью.
Читать дальше →
Всего голосов 31: ↑22 и ↓9+23
Комментарии16

Курс «PostgreSQL для начинающих»: #4 — Анализ запросов (ч.2 — узлы получения данных)

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров10K

Продолжаю публикацию расширенных транскриптов лекционного курса "PostgreSQL для начинающих", подготовленного мной в рамках "Школы backend-разработчика" в "Тензоре".

В первой части лекции мы узнали, что такое план выполнения запроса, как и зачем его читать (и почему это совсем непросто), и о каких проблемах с производительностью базы он может сигнализировать. В этой - разберем, что такое Seq ScanBitmap Heap ScanIndex Scan и почему Index Only Scan бывает нехорош.

Как обычно, для предпочитающих смотреть и слушать, а не читать - доступна видеозапись (часть 1часть 2) и слайды.

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

Как понять, что твой мидл готов стать сеньором? Гайд для тимлида (и не только)

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров23K
Новый грейд — это не просто лычка IT-спеца. По сути, это кульминация работы над задачами и решений различных кейсов, которыми он занимался на своей позиции. Но на этот новый уровень айтишник переходит не один.



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

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

Читать дальше →
Всего голосов 47: ↑35 и ↓12+27
Комментарии66

Управление временем контейнера с помощью docker-compose и faketime

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров4K

Периодически при тестировании микросервисов приходится сталкиваться с необходимостью изменения времени для проверки работы того или иного функционала. Это может быть функционал, который срабатывает по “тику” cron или применение системного времени как одного из условий обработки/хранения/передачи данных тестируемым микросервисом.  

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

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

Неизвестная Windows 11 23H2 сборки 10.0. 25398.1 на базе Windows Server 23H2. Для геймеров и на старое железо

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров13K

Итак, для начала благодарности за данный материал форуму MyDigitalLife, где активно обсуждаются варианты вивисекции ОС Microsoft, и особенно xinso, который тестирует каждую сборку каждого издания на каждом языке и делится своим опытом, пускай и довольно своеобразно. Тем, кто не хочет читать целиком, в самом конце статьи дана ссылка на конструктор для сборки. Публикация готовых образов будет пиратством, что правилами Хабра запрещено, так что если вам будет интересно просто попробовать эту сборку, ставьте лайк и пишите мне в ПМ, дам готовый образ для установки (русский и английский интерфейсы включены в образ, остальные языки в виде дополнительных языковых пакетов).

Сегодня я буду рассказывать кратко о странной версии Windows (рука не поднимается сказать «Windows 11», так как это не совсем правда) – релизе zn_release на базе сборки 10.0.25398.1, на которой выходил лишь Windows Server 23H2 (только Core) и Azure Stack HCI 23H2 (тоже только Core).

Если вы не следите внимательно за выходами Windows 11, и не читали мою статью ‭«Все о версиях Windows 11‭»‬, то можете быть не в курсе, что официально выходили следующие версии:

·         Windows 11 21H2 – на базе сборки 10.0.22000.x ядра co_release (Cobalt);

·         Windows 11 22H2 – на базе сборки 10.0.22621.x ядра ni_release (Nickel);

·         Windows 11 23H2 – на базе сборки 10.0.22631.x того же ядра ni_release (Nickel);

·         Windows 11 24H2 – на базе сборки 10.0.26100.x ядра ge_release (Germanium).

Более того, версия 23H2 особо от 22H2 не отличается, имеет то же ядро и общие обновления. По сути, отличие между ними в пакете, включающим малость нового функционала. Вообще обе версии довольно неудачны в плане производительности и не особо популярны у геймеров.

Версия 24H2 на ядре Germanium сборки 10.0.26100.х в продажу пойдет осенью, сейчас доступна OEM производителям и инсайдерам. О ней мы знаем два интересных факта – она быстрее чем та, что на ядре Nickel, и она не работает на старых компьютерах, процессор которых не поддерживает SSE4.2.

Геймеры выбирают Windows 11 10.0.25398.1?
Всего голосов 42: ↑42 и ↓0+54
Комментарии31

Как Orange Pi вернула мне Ютуб

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

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

В связи с последними событиями вокруг видеохостинга YouTube, ситуация вынуждает искать технические решения для восстановления доступа к сервису. В этой статье я хочу поделиться своим техническим опытом по восстановлению доступа к сервису с помощью дешевого одноплатника Orange Pi Zero2 от компании Xunlong Software.

Читать далее
Всего голосов 83: ↑79 и ↓4+83
Комментарии124

Пожалуй, самый простой способ спасти ваше .NET-приложение, или Prometheus (и не только) спешит на помощь

Уровень сложностиСредний
Время на прочтение32 мин
Количество просмотров7.3K
Существует множество возможных проблем приложений, которые удается заметить лишь с опозданием. Особенно когда релиз уже состоялся… К счастью, существует пара ключевых инструментов, которые выручают почти в любой ситуации, — и вряд ли найдется что-то проще.



Меня зовут Александр Пугач, я — Senior .NET Developer в проекте Data Warehouse «Лаборатории Касперского» (да-да, вы могли не знать, но у нас в компании широко используются .NET и «шарпы»).

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

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

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

Самые дикие налоговые проблемы, в которые встряли уехавшие из России айтишники в 2024

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

Попытка налоговой отхватить 6% с продажи квартиры в Грузии у налогового нерезидента РФ, двойное налогообложение заработанной крипты от российской ФНС, а также штраф 30% за сдачу в аренду недвижимости в Германии – в этой статье мы собрали самые жуткие истории из жизни, с которыми налоговые юристы сталкивались на практике.

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

Искусство сетапа: автоматизируем подготовку стека под новые проекты

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

Привет, меня зовут Грант, я фронтенд-разработчик в KTS. В этой статье я хочу поделиться опытом заведения проектов от нашей команды.

Читать далее
Всего голосов 34: ↑34 и ↓0+36
Комментарии9
1
23 ...

Информация

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