Pull to refresh
6
Karma
0
Rating
Александр Щетинин @Alxdhere

User

Обратный websocket/http туннель данных на .NET + SignalR

Open source *.NET *Network technologies *
Sandbox

 

Возникла необходимость организовать трафик к внешнему сервису из сегмента с ограничением на исходящие соединения. Этот внешний сервис использовал одновременно множество tcp/udp сокетов. При беглом обзоре существующих утилит не обнаружил готовое решение инкапсуляции множества сокетов с поддержкой «обратного» соединения.

Читать далее
Total votes 5: ↑5 and ↓0 +5
Views 3.2K
Comments 3

Как врач сделал себе ИИ помощника. Часть 1

R *Artificial Intelligence Health
Sandbox

Всем привет, меня зовут Александр и я врач-гематолог. Для справки, это тот, кто занимается болезнями крови. Мой общий стаж перевалил за 16 лет, я кандидат медицинских наук и последние пару-тройку лет интересуюсь анализом данных, machine learning и ИИ в медицине. Под "интересуюсь" я подразумеваю исследования и публикации по этим темам, а также обучение и саморазвитие.

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

Общий анализ крови (ОАК) – самый частый и один из самых сложных анализов человека для интерпретации, что обусловлено большим числом входящих в него параметров. Как правило, именно этот анализ является скрининговым тестом как для гематологов амбулаторного приема, так и для врачей общей практики и других специальностей. Объемы выполняемых анализов исчисляются сотнями тысяч. Моя идея не нова - машинная помощь в правильной и быстрой интерпретации общего анализа крови, которая будет содействовать развитию качественной, доступной и своевременной диагностики онкогематологических заболеваний. Зачастую врач первичного звена (терапевт) не может дифференцировать изменения в ОАК, что приводит либо к гиподиагностике, либо к повышенной настороженности и излишне частому направлению на консультацию к врачу-гематологу. Ситуацию усугубляют огромные объемы анализов, выполняемые в рамках профилактических и лечебно-диагностических процессов как в государственном, так и в частном секторе здравоохранения. Расшифровка анализов онлайн - один из востребованных запросов в Интернете. Меня часто просят об этом в социальных сетях.

Читать далее
Total votes 78: ↑74 and ↓4 +70
Views 11K
Comments 67

Boson — разработка СУБД «с нуля» (часть I)

C++ *System Programming *Algorithms *Data storage *

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

Каждый разработчик "кровавого" enterprise в своей работе использует СУБД (SQL/NoSQL) и меня всегда искренне интересовало как они устроены в самом сердце, на самом низком уровне. Почитав документацию и исходный код SQLite и MongoDB, про используемые в индексах и интерпретаторах запросов алгоритмы, осознал, что несмотря на широкую распространенность и некую привычность, системы управления базами данных (СУБД) - это сложные программные продукты, реализация которых не всем под силу. Отлично - как раз то, что мне надо. С мотивацией разобрались, перейдем к делу.

Итак, для начала хорошо бы сформулировать высокоуровневую спецификацию требований. Boson - это легкая, встраиваемая документоориентированная база данных на С/С++

Читать далее
Total votes 88: ↑85 and ↓3 +82
Views 14K
Comments 60

Документирование ASP .Net Core Web API с помощью OpenAPI/Swagger. Библиотека Swashbuckle

SimbirSoft corporate blog Programming *.NET *ASP *C# *

Привет, я backend-разработчик IT-компании SimbirSoft Дмитрий. В этой статье расскажу, зачем нужно документировать Web API, какие существуют подходы и покажу, как создать документацию для ASP.NET Core Web API с использованием OpenAPI/Swagger.

Материал будет полезен начинающим backend-разработчикам, которые знакомятся с Web API, а также специалистам уровня Middle, интересующимся актуальными стандартами для оформления документации.

Читать далее
Total votes 11: ↑10 and ↓1 +9
Views 3.8K
Comments 8

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

Programming *Algorithms *Mathematics *Popular science The future is here

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

Одна из простых задач звучит так: «При переводе картинки из цветового пространства RGB в YUV мы выполняем прореживание, то есть выкидываем каждый четный столбец и каждую четную строку в компонентах U и V (все компоненты пикселя по 1 байту). Вопрос: во сколько раз меньше данных у нас стало?» Эта операция называется chroma subsampling и широко используется при сжатии видео, например.

Забавно, что когда-то давно, когда винчестеры были меньше, а дискеты больше, студенты реально отвечали на этот вопрос быстро. А в последние годы регулярно народ в ступор впадает. Приходится разбирать по частям: «Если выкинуть каждую четную строку и каждый четный столбец, во сколько раз меньше данных будет у компоненты?» Почти хором: «В четыре». Начинаю подкалывать: «Отлично! У нас было 3 яблока, первое осталось как есть, а от второго и третьего осталось по четвертинке. Во сколько раз меньше яблок у нас стало?» Народ ржет, но, наконец-то, дает правильный ответ (заметим, не все). 

Это было бы смешно, если бы от способности быстро в уме прикинуть результат не зависела способность быстрее создавать сложные алгоритмы. 

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

Кому интересно как теряют мозг студенты масштабы бедствия и что с этим делать — добро пожаловать под кат!

Читать далее
Total votes 411: ↑395 and ↓16 +379
Views 160K
Comments 764

Быстрый консольный ввод на .NET

.NET *C# *

Во времена, когда .NET был закрытой технологией только для Windows, за ним и языком C# закрепилась репутация платформы, которая отлично подходит для решения бизнес-задач, но непригодна для соревновательного программирования и написания высокопроизводительного кода.


Часто приходится слышать, что "шарпы медленные", особенно в контексте алгоритмических задач, например с timus.online и codeforces.com. И, увы, не только слышать, но и сталкиваться с реальными проблемами, связанными с особенностями платформы, получая Wrong Answer, Runtime Error, Memory Limit, Time Limit при корректном алгоритме.


Большинство этих проблем кроется в особенностях консольного ввода и вывода. Да и часто куда проще написать cin >> nили sc.nextInt(), чем int.Parse(Console.ReadLine()) или Console.ReadLine().Split().Select(int.Parse).ToArray(), из-за чего выбор падает на другой язык.


Далее я расскажу о распространённых проблемах с консольным вводом-выводом в .NET, и о том, как сделать ввод быстрым и удобным.

Читать дальше →
Total votes 39: ↑39 and ↓0 +39
Views 8.3K
Comments 9

Величайшие программисты 21 века. Джон-Движок Кармак

RUVDS.com corporate blog Programming *Game development *Development Management *History of IT
✏️ Technotext 2022

Джон Кармак вместе с тёзкой Джоном Ромеро стали родоначальниками игрового жанра FPS. На слабеньких 486SX, без видеокарт (!) они выдали настоящий 3D-шутер без лагов с эффектом присутствия, что стало бомбой для 1993 года — в эпоху пошаговых стратегий и отсутствия скроллинга. Казалось, тут вмешалась чёрная магия…

В принципе, примерно так и есть. В разработке Wolfenstein 3D, Doom и движка Quake Джон Кармак действительно использовал кучу нестандартных приёмов вроде конверсии указателей или выхода за границы объектов, чтобы в циклах получать доступ к другому объекту, который гарантированно идёт следом.

Уровень программирования Doom и Quake до сих пор считается непревзойдённым образцом хакерских оптимизаций, а сам Джон Кармак — эталон сверхэффективного разработчика. Благодаря высочайшему качеству программирования Doom стал феноменом, который изменил мир.
Читать дальше →
Total votes 121: ↑117 and ↓4 +113
Views 35K
Comments 63

Как я запустил свою первую мобильную игру и провалился

Game development *Unity3D *Games monetization *Game design *Games promotion *
Sandbox
✏️ Technotext 2022

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

Читать далее
Total votes 133: ↑132 and ↓1 +131
Views 37K
Comments 84

Отечественная образовательная робототехника. Часть 2: Переклеивание шильдиков или самобытные решения?

RoboUniver corporate blog Programming *Robotics development *Robotics

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

Читать далее
Total votes 17: ↑16 and ↓1 +15
Views 5.3K
Comments 78

Не обманывайте себя: вы не «исправите это потом»

Productivity Inside corporate blog Perfect code *
Translation
Недавно я одобрил pull request от коллеги с таким описанием: «Сделано костыльно, но мне не хватает сегодня времени реализовать это лучше». И тогда я задумался: когда же будет устранен этот «костыль»? На память приходит много случаев, когда я сам или мои коллеги отправляли в работу код, который нас не вполне устраивал (с точки зрения простоты поддержки, качества, чистоты, из-за проблем с функциональностью, неважного пользовательского опыта и т.д.). С другой стороны, воспоминаний о том, как мы реально возвращались к чему-то и вносили необходимые изменения, у меня гораздо меньше.

Где-то я читал (к сожалению, сейчас не могу найти источник) такую мысль: «Чем дольше что-либо остается неизменным, тем меньше вероятность, что оно изменится в будущем». Иными словами, начиная с того момента, как мы отправили в релиз «костыль», шансы на то, что он будет исправлен, неуклонно снижаются с течением времени. Если сегодня мы его не устраним, завтра вероятность станет ниже. Послезавтра она еще снизится, через неделю – еще, через месяц – еще…

По моим наблюдениям, эта закономерность работает, и, думаю, на то есть несколько причин. Как ни странно, причины эти заключаются не том, что мы лентяи, нам не хватает профессионализма или просто плевать на всё. И даже не в менеджерах продукта, которые злодейски заставляют нас переходить к новой функциональности и не дают ничего чинить. Причин несколько, и они взаимосвязаны.
Читать дальше →
Total votes 22: ↑20 and ↓2 +18
Views 6.7K
Comments 23

Использование сертификатов в ASP.NET Core

Information Security *.NET *ASP *
Translation

В последнее время использование протокола HTTPS для Web-ресурсов является обязательным требованиям ко всем более-менее большим Web-проектам. Эта технология основана на использовании так называемых сертификатов. Раньше за получение своего сертификата нужно было платить. Но сегодня появление таких сервисов, как Let's Encrypt сделало возможным получение сертификатов бесплатно. Таким образом, цена больше не служит оправданием отказа от использования HTTPS.

В самом простом случае сертификат позволяет установить защищённое соединение между клиентом и сервером. Но это далеко не всё, на что они способны. В частности, недавно я смотрел на Pluralsight курс Microservices Security. И там среди прочих упоминалась такая вещь, как Mutual Transport Layer Security. Она позволяет не только клиенту убедиться в том, что он общается именно с тем сервером, с которым хочет, но и сервер может узнать, что за клиент с ним общается.

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

Читать далее
Total votes 9: ↑9 and ↓0 +9
Views 14K
Comments 11

Почему после курсов по программированию вы никому не нужны. Как найти первую работу в IT

Development Management *Studying in IT IT career Statistics in IT
Sandbox
✏️ Technotext 2022

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

Читать далее
Total votes 106: ↑93 and ↓13 +80
Views 136K
Comments 436

Что нам стоит UAV построить 3 или beyond the dark chip

Reading room

Напомню, что началось все с  комментариев к статье Вредные заблуждения о нанометрах. Или почему наличие в России доступа только к 90нм – это катастрофа, где проявилась масса экспертов со свежей регистрацией  и продемонстрированным отсутствием понимания работы индустрии в целом. В моей попытке раскрыть тему производства с самого начала экспертов было меньше, во второй части эксперты начинают ссылаться на Росатый, хотя какое отношении ОБЧР Росатого имеют к заявленной теме – не знаю. 

Читать далее
Total votes 48: ↑41 and ↓7 +34
Views 6K
Comments 25

Что нам стоит UAV построить 2 – От поликремния к кристаллу

Reading room

В комментариях к статье Вредные заблуждения о нанометрах. Или почему наличие в России доступа только к 90нм – это катастрофа проявилась масса экспертов со свежей регистрацией  и продемонстрированным отсутствием понимания работы индустрии в целом. В моей попытке раскрыть тему производства с самого начала экспертов было меньше, возможно в методичке не было нужной главы или, как там у последнего Пелевина – проекционно-идеологический ресурс, усиленный тремя медиа-валькириями, перебросили на азиатское направление. Но тут уже стало интересно мне, а чего там сложного.

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

Читать далее
Total votes 56: ↑50 and ↓6 +44
Views 6.6K
Comments 36

Что нам стоит UAV построить, нарисуем – будем жить. Часть 1. Про поликремний

Reading room

В комментариях к статье Вредные заблуждения о нанометрах. Или почему наличие в России доступа только к 90нм – это катастрофа проявилась не только масса экспертов с вежей регистрацией, но и отсутствие понимания работы индустрии в целом.. Ну что ж, попробую как могу пояснить – хотя это совсем не мое направление интересов. Согласно усредненному мнению - Оборудование можно сделать и самим, но пока можно и просто привезти серым импортом. Оборудование выглядит примерно как большой ящик с дырками, включённый в розетку; в одну дырку складываешь кремний, в другую заливаешь фоторезистор. Под третью дырку надо подставить ведро — в него будут ссыпаться чипы.

Читать далее
Total votes 105: ↑103 and ↓2 +101
Views 10K
Comments 32

Yii3 Overview 2. Вспомогательные инструменты разработки

PHP *Yii *GitHub *

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

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

Читать далее
Total votes 20: ↑20 and ↓0 +20
Views 2.7K
Comments 0

Почему уходят из 1С?

Programming *Development Management *IT career 1C *
Sandbox

Скромная "ответочка" на статью про то, что 1С-ники гораздо умнее коллег из других ЯП.

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

Читать далее
Total votes 147: ↑140 and ↓7 +133
Views 118K
Comments 528

Китайские LEGO-совместимые робототехнические конструкторы. На чем можно учить, когда нет официальных наборов

RoboUniver corporate blog Programming *Robotics

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

Читать далее
Total votes 26: ↑25 and ↓1 +24
Views 10K
Comments 35

Использование Identity Server 4 в Net Core 3.0

.NET *
Tutorial

Введение


На одном из моих поддерживаемых проектов недавно встала задача проанализировать возможность миграции с .NET фреймворка 4.5 на .Net Core по случаю необходимости рефакторинга и разгребания большого количества накопившегося технического долга. Выбор пал на целевую платформу .NET Core 3.0, так как, судя по утверждению разработчиков от Microsoft, с появлением релиза версии 3.0, необходимые шаги при миграции legacy кода уменьшатся в несколько раз. Особенно нас в нем привлекли планы выхода EntityFramework 6.3 для .Net Core т.е. большую часть кода, основанную на EF 6.2, можно будет оставить «как есть» в мигрированном проекте на net core.


С уровнем данных, вроде, стало понятно, однако, еще одной большой частью по переносу кода остался уровень безопасности, который, к сожалению, после беглых выводов аудита придется почти полностью выкинуть и переписать с нуля. Благо, на проекте уже использовалась часть ASP NET Identity, в виде хранения пользователей и других приделанных сбоку «велосипедов».


Тут возникает логичный вопрос: если в security часть придется вносить много изменений, почему бы сразу же не внедрить подходы, рекомендуемые в виде промышленных стандартов, а именно: подвести приложение под использование Open Id connect и OAuth посредством фреймворка IdentityServer4.

Читать дальше →
Total votes 21: ↑20 and ↓1 +19
Views 73K
Comments 5

Information

Rating
Does not participate
Location
Тюмень, Тюменская обл. и Ханты-Мансийский АО, Россия
Date of birth
Registered
Activity