Pull to refresh
9
0

Математик. Системный программист.

Send message

Объясните мне, как вы для себя разобрались в моделях типизаций — они же все размыты

Reading time7 min
Views39K


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


Уже потом, работе на третьей, меня перевели в отдел, где делали веб. Я подумывал уволиться, но мне объяснили — там тайпскрипт, тайпскрипт — это такой сишарп для браузера.


Я согласился, изучил его, и сейчас это один из моих любимых ЯП. Но. Тайпскрипт — это вот вообще не сишарп. Это язык с принципиально другой системой типов. Сложной, мощной, но другой.

Читать дальше →
Total votes 120: ↑106 and ↓14+115
Comments441

Книга «Управление памятью в .NET для профессионалов» в правильном переводе команды DotNetRu

Reading time5 min
Views17K
Совсем недавно в издательстве ДМК-пресс на русском языке вышла замечательная книга Конрада Кокосы «Управление памятью в .NET для профессионалов».

Это издание примечательно тем, что в переводе участвовали не только люди со стороны издательства, но и члены сообщества DotNet.Ru, практикующие разработчики, для которых эта книга действительно актуальна.

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


Читать дальше →
Total votes 41: ↑41 and ↓0+41
Comments25

Трюки для обработки метрик в Kapacitor

Reading time7 min
Views5.8K
Скорее всего, сегодня уже ни у кого не возникает вопрос, зачем нужно собирать метрики сервисов. Следующий логичный шаг – настроить алертинг на собираемые метрики, который будет оповещать о любых отклонениях в данных в удобные вам каналы (почту, Slack, Telegram). В сервисе онлайн-бронирования отелей Ostrovok.ru все метрики наших сервисов льются в InfluxDB и отображаются в Grafana, там же настроен базовый алертинг. Для задач типа «нужно посчитать что-то и сравнить с этим» мы используем Kapacitor.


Kapacitor – часть TICK-стека, который умеет обрабатывать метрики из InfluxDB. Он может соединить несколько измерений между собой (join), из полученных данных вычислить что-то полезное, записать результат обратно в InfluxDB, отправить алерт в Slack/Telegram/почту.

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

Поехали!
Читать дальше →
Total votes 7: ↑7 and ↓0+7
Comments6

X.509 своми силами в .Net Core

Reading time6 min
Views19K

image


Некоторое время назад я задался вопросом, можно ли наладить фабрику сертификатов, не прибегая к утилите openssl. Как подвести «под кнопку» весь процесс от генерации ключей до проверки подлинности. Забегая вперед, скажу, что пространство System.Security.Cryptography в этом плане является вполне самодостаточным. В статье я рассмотрю этапы создания сертификатов, экспорт в форматы pem и pkcs12, хранение сертификатов в файловой системе, а также проверку подлинности, используя только классы из System.Security.Cryptography.

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

Грабли на пути к keep-alive

Reading time4 min
Views29K

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

Читать дальше →
Total votes 7: ↑5 and ↓2+8
Comments6

Сохранение значений в .Net приложение на этапе сборки

Reading time2 min
Views4.5K
Появилась у меня необходимость при сборке приложения передать внутрь набор констант для использования их на рантайме. Например, мы хотим «зашить» в приложение некое строковое значение которое будет известно в момент сборки.

В мире C++ я решал подобные штуки очень просто с использованием define и опций компилятора. Но в .Net define не имеют значений кроме true/false, т.е. они либо определены либо нет. Насколько я понимаю, их цель это простейшая условная компиляция.

Кому интересно решение добро пожаловать под кат.
Читать дальше →
Total votes 17: ↑15 and ↓2+17
Comments18

Автоматизируем мониторинг: низкоуровневое обнаружение для SNMP

Reading time74 min
Views101K
Мы уже писали о том, какой замечательный инструмент как LLD есть в Zabbix.



Тогда же мы посетовали, что составные индексы в SNMP-таблицах в системе не поддерживаются, что несколько ограничивает возможности по применению. Например, если вам нужно сделать Discovery двух RAID-контроллеров на одном сервере и всех физических и логических дисков за ними, то, увы, мы этого сделать не могли без костылей. Работало только для первого RAID-контролера в списке. Но, как говорится, все течет, все меняется! И вот долгожданный релиз 2.2 убрал это связывающее нас по рукам ограничение.

Рассказать о нововведении я бы хотел на примере шаблона для HP серверов. Но сначала немножко вспомним про SNMP.

Читаем и учимся
Total votes 21: ↑21 and ↓0+21
Comments20

Нейросети в трейдинге. Рано хоронить

Reading time3 min
Views19K
UPDATE:
Продолжение этой статьи здесь, здесь и здесь.
Сайт с прогнозами нейросети здесь.
Добавить нейросеть в MetaTrader5 можно тут.


Это мой расширенный ответ на недавнюю публикацию «Мечтают ли нейросети об электроденьгах?», в которой автор многословно и подробно объясняет почему нейросети точно не могут работать в трейдинге и почему предсказание цены невозможно.
Читать дальше →
Total votes 14: ↑4 and ↓10-4
Comments85

Как не пропустить невалидный код в репозиторий

Reading time6 min
Views6.2K

Зачем это необходимо


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


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

Читать дальше →
Total votes 10: ↑8 and ↓2+12
Comments6

Как правильно делать код-ревью?

Reading time9 min
Views23K

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


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


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


Терминология:


CL: "changelist" — список изменений кода, отправленный в систему контроля версий на ревью. Аналог Pull Request в GitHub или Merge Request в GitLab.

Читать дальше →
Total votes 21: ↑16 and ↓5+18
Comments7

.NET Core vs Framework. Производительность коллекций

Reading time8 min
Views23K

image


Релиз .NET Core 3.1 — хороший повод мигрировать свой проект с Framework на Core. Во-первых, это отполированная версия с долгосрочной поддержкой (LTS), т.е. её можно смело использовать в продакшене. Во-вторых, в третьей версии добавили поддержку WPF и WinForms, так что теперь появилась возможность мигрировать и десктопные приложения.


Мне стало интересно, какой прирост производительности можно ожидать от Core в самых базовых классах, которые максимально часто используются в коде. Например, коллекции List, Array и Dictionary.


Если вам тоже интересно, как и почему изменилась производительность основных коллекций в Core 3 — прошу под кат!

Читать дальше →
Total votes 41: ↑41 and ↓0+41
Comments40

Умный корректор осанки отечественного производства поступил в продажу. Посмотрели на новинку — IBACK

Reading time6 min
Views23K
Тема корректоров осанки — одна из наших самых любимых: больше, чем об этом, мы пишем разве что о наушниках с костной проводимостью. Удивительно, но получается, что весь блог крутится вокруг костей — не задумывались об это раньше…

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


Читать дальше →
Total votes 22: ↑19 and ↓3+19
Comments14

Чешские программисты бесплатно написали сайт стоимостью 16 миллионов евро? Правда?

Reading time11 min
Views132K
В конце января 2020 г. чешские программисты на безвозмездной основе за два дня разработали портал продажи билетов на право пользования скоростными дорожными магистралями Чехии. На разработку этого портала изначально был выделен 401 миллион чешских крон (около 16 миллионов евро) министерством транспорта Чехии, но энтузиазм сообщества позволил сохранить колоссальные бюджетные средства.

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

Такое изложение событий было приведено в пересказе издания CNews или, по крайней мере, таким образом было интерпретировано читателями.

Эта потрясающая история захватила умы всего бывшего СССР, многократно разойдясь по соцсетям. Однако, к сожалению, в оригинальной подаче CNews — вероятно, неумышленно — был опущен и искажён ряд ключевых деталей, вследствие чего исходная ситуация была весьма своеобразно искажена.

Целью данного поста является устранение этого пробела.
Читать дальше →
Total votes 263: ↑257 and ↓6+336
Comments266

Имитируем сетевые проблемы в Linux

Reading time15 min
Views33K
Всем привет, меня зовут Саша, я руковожу тестированием бэкенда. У нас, как и у многих, реализована сервис-ориентированная архитектура. С одной стороны, это упрощает работу, т.к. каждый сервис проще тестировать по отдельности, но с другой — появляется необходимость тестировать взаимодействие сервисов между собой, которое часто происходит по сети.

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


Читать дальше →
Total votes 55: ↑54 and ↓1+66
Comments17

Рецензия на книгу Роба Фицпатрика «Спроси маму» («The mom test» Rob Fitzpatrick)

Reading time6 min
Views30K
Прочитал книгу Роба Фицпатрика «Спроси маму» («The mom test» Rob Fitzpatrick). На русском, похоже она нигде ещё не продается. На английском можно купить тут: momtestbook.com

Честно говоря, многого от книги не ждал. Ну, в самом деле, что можно сказать нового про CustDev, проблемные интервью и прочие lean штуковины? Говорим с клиентами, делаем то, что они хотят, вроде всё понятно. Однако, книга приятно удивила. Тема вспахана настолько глубоко, что после прочтения и некоторой практики можно самому читать тренинги и выступать в качестве спикера на конференциях типа LEAN Startup Russia. Кстати, именно на этой конференции я и получил эту книгу бесплатно, за что большой респект организаторам — ФРИИ​ и LPGenerator​, а также Julia Ploskonosova​ и Ilya Korolev​. PS: обзор конференции я написал тут.

Но сначала некоторое лирическое отступление.
Читать дальше →
Total votes 12: ↑12 and ↓0+12
Comments1

Как я чуть не выкинул 150к на ветер или история установки приточной вентиляции в квартире

Reading time19 min
Views657K

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


Читать дальше →
Total votes 285: ↑280 and ↓5+365
Comments595

Тимлид — Таков путь

Reading time6 min
Views20K
В преддверии нового года хочется всем тимлидам пожелать расслабиться, отпустить все трудности на работе и готовиться ĸ празднованию с семьей, с друзьями.

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

Если посмотреть его пока не было возможности, то январские праздники отличная возможность, чтобы это исправить.


Итак, немного о рабочих буднях тимлида:

  1. Берешь на работу джуна, учишь его, лелеешь. Вкладываешь в него силы и время, а через год он расправляет крылья и уходит искать лучшее место с зарплатой в три раза выше.
    Таков путь.
  2. Полгода отĸрыта ваĸансия на разработчиĸа без результата. На собеседования приходят мидлы, просят зарплату больше твоей и говорят, что уже есть офферы на эту сумму в других ĸомпаниях.
    Таков путь.

Читать дальше →
Total votes 56: ↑48 and ↓8+58
Comments47

Что нам стоит Cache построить?

Reading time11 min
Views25K

Написано не мало хороших статей на тему «Что, как и где кешировать». Так почему же ещё раз мусолить эту тему? А потому что тема достаточно важная, а многие, пока не столкнуться с конкретными проблемами, не считают нужным с ней разбираться. Так что аудитория, на которую я рассчитываю, это те, кто к моменту выхода уже существующих статей были в них не заинтересованы, но сейчас интерес есть, и они не пройдут мимо.

Я постараюсь кратко осветить основные моменты организации кеширования, после чего рассмотрю новшества .Net Framework 4.0, которые должны упростить жизнь разработчиков (речь пойдёт о In-memory кеше вне ASP.NET инфраструктуры).
Читать дальше →
Total votes 15: ↑13 and ↓2+11
Comments9

Как распилить монолит на сервисы и сохранить производительность In-memory кэшей без потери консистентности

Reading time12 min
Views10K

Всем привет. Меня зовут Александр, я Java-разработчик в группе компаний Tinkoff.

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

В статье я расскажу про наш опыт перехода на сервис-ориентированную архитектуру, сопровождающуюся переездом в Kubernetes, и про решение сопутствующих проблем. Будет рассмотрен подход к организации системы распределенного кэширования In-Memory Data Grid (IMDG), его преимущества и недостатки, из-за которых мы решили написать собственное решение.

В статье рассматривается проект, бэкэнд которого написан на Java. Поэтому речь также пойдет про стандарты в области временного In-memory-кэширования. Обсудим спецификацию JSR-107, несостоявшуюся спецификацию JSR-347, а также особенности кэширования в Spring. Добро пожаловать под кат!
Читать дальше →
Total votes 24: ↑24 and ↓0+24
Comments17

Оптимизация производительности .NET (C#) приложений

Reading time11 min
Views41K
image

Статей с подобным заголовком достаточно много, поэтому постараюсь избежать банальных тем. Надеюсь, что даже опытный разработчик найдёт здесь что-то полезное для себя. В данной статье будут рассмотрены только простые механизмы и подходы оптимизации, которые позволят применить их, затратив минимум усилий. И эти изменения не увеличат энтропию вашего кода. В статье не будет уделено внимания, что и когда нужно оптимизировать, эта статья скорее о подходе к написанию кода в целом.
Читать дальше →
Total votes 48: ↑44 and ↓4+40
Comments51

Information

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