Pull to refresh
15
0
Влад @iamkisly

Сферический разработчик в вакууме

Send message

Как работает hashCode() по умолчанию?

Reading time12 min
Views133K

Попытка заглянуть вглубь hashCode() привела к спелеологическому путешествию по исходному коду JVM, с рассмотрением структуры объектов и привязанной блокировки (biased locking), а также удивительных последствий для производительности, связанных с использованием hashCode() по умолчанию.
Читать дальше →

Docker теперь конкурент Ollama?

Level of difficultyEasy
Reading time2 min
Views12K

Ребята зарелизили новую крупную фичу, и, как по мне, это самая крупная механика с момента выхода dev containers, так как это показывает, насколько всё-таки AI всё глубже интегрируется в разработку.

Docker Model Runner - фактически инструментарий для запуска моделей локально, и это буквально полный конкурент для Ollama, но, будем объективны, пока что ещё очень сырой.

Читать далее

strlcpy, или как CPU противоречат здравому смыслу

Level of difficultyMedium
Reading time6 min
Views17K

Один из моих старых постов о strlcpy недавно вызвал обсуждения на различных форумах. Вероятно, с этим как-то связан выпуск новой версии POSIX. Многие авторы приводили один контраргумент, который я слышал и раньше:

«В общем случае, когда исходная строка умещается в конечный буфер, strlcpy будет обходить строку только один раз, а strlen + memcpy будут обходить её дважды».

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

Читать далее

Построение Flame Chart для MSSQL

Reading time3 min
Views1.2K

Если в вашем коде TSQL много вложенных вызовов stored procedures, вы можете наглядно построить стек вызовов с помощью «flame chart» — стандартным представлением для профилирования вызовов.

Опишем по шагам всю процедуру.

Читать далее

Переезд с TeamCity на GitLab CI + K8s

Level of difficultyMedium
Reading time14 min
Views2.4K

Привет, Хабр! Меня зовут Даниил Мильков, я старший C# разработчик. Сразу хочу предупредить читателей, что про взаимодействие с k8s здесь сказано достаточно мало, разве что в разделе Kubernetes и PVC. На эту тему будет отдельная статья.

Начнём. Однажды наша команда решила перейти с TeamCity на GitLab CI…

Читать далее

Автоматизация сборки и релиза Android-приложений через GitHub Actions

Level of difficultyEasy
Reading time5 min
Views1.3K

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

Читать далее

Q&A с врачами: что следует знать о простатите и аденоме простаты

Reading time9 min
Views17K

До 10% мужчин в возрасте от 30 до 50 лет сталкиваются с простатитом. Риск развития аденомы простаты растёт после 35 лет, и к 85 годам с ним сталкиваются до 90% мужчин. Кажется, что второе заболевание и вовсе неизбежно, так зачем его лечить? 

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

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

Читать далее

Создание telegram web apps и взаимодействие с ними в телеграм ботах

Reading time8 min
Views342K

В обновлении Bot API 6.0 телеграм-боты получили много новых функций. Из них для разработчиков самая примечательная - Telegram Web Apps (Веб-приложения внутри телеграм). С этим нововведением разработчики могут подключать к своим ботам web-приложения, которые открываются в дополнительном окне, что сильно расширяет инструментарий, а, следовательно и функционал ботов в телеграм.

Читать далее

Как и зачем использовать ValueTask в C#

Level of difficultyEasy
Reading time4 min
Views3.3K

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

Сегодня мы будем разбирать интересную вещь в C# ValueTask — штука, которая спасет асинхронные методы от лишних аллокаций.

Если коротко, ValueTask — это структура, которая позволяет вернуть либо Task, либо готовый результат. Она появилась в C# 7.0 для снижения накладных расходов при работе с асинхронным кодом.

Читать далее

Гибридное кэширование в ASP.NET Core

Level of difficultyMedium
Reading time7 min
Views4.7K

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

Хочу разобраться

Кастомные сообщения об ошибках в FluentValidation

Level of difficultyEasy
Reading time3 min
Views1.1K

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

Читать далее

Метод Contains коллекций в Entity Framework для SQL Server

Level of difficultyMedium
Reading time7 min
Views2.7K

Долгое время в метод Contains(), который используется в Entity Framework для фильтрации данных по списку значений, не вносили изменения. До выхода Entity Framework 8 коллекция с этим методом внутри оператора запросов where LINQ транслировалась в значения в виде констант внутри оператора IN для SQL. Если количество элементов равно одному, то преобразование происходило в выражение с оператором ‘=’ на стороне MS SQL Server. Аналогично транслируется и метод расширения Where() LINQ.

Использование в EF8 функции OPENJSON устраняет часть проблем с кэшем планов запросов для SQL Server, но не применимо к старым версиям (compatibility level) баз данных. Да и оптимальность генерируемого ею кода в некоторых случаях вызывает сомнения.

В недавно вышедшем Entity Framework 9 добавили больше настроек для возможности транслирования метода Contains() коллекций как с помощью OPENJSON, так и «по-старому» — в виде констант.

Читать далее

Чиним замедление YouTube на уровне роутера

Level of difficultyMedium
Reading time6 min
Views665K

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

Что случилось?

Хорошо описано произошедшее здесь, на Хабре. Если совсем кратко, своими словами - во время установки SSL соединения в открытом виде домен передается к которому мы подключаемся(так называемое SNI). И если это googlevideo.com то начинают твориться "интересные вещи". Можно проверить это локально коммандами из статьи.

$ curl https://speedtest.selectel.ru/100MB -o/dev/null

Читать далее

Как я использую плагины VSCode для обработки Json-файлов в работе системным аналитиком

Level of difficultyEasy
Reading time6 min
Views12K

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

Меня зовут Юлия Васильева, и я системный аналитик в МТС Диджитал. Работаю с B2C-продуктом и анализирую много-много разных Json-файлов. В этой статье я расскажу, как облегчила себе работу с ними благодаря VSCode и почему я в восторге от этого инструмента.

Читать далее

ESP 8266: отправка данных на сайт методом Get запроса

Reading time5 min
Views38K

Привет! Это мой первый пост здесь! Решил его написать, чтобы облегчить путь всем начинающим знакомство с ESP 8266. Много времени потратил чтобы разобраться с этой темой и что-то началось получаться. Изначально я отправлял данные в таблицу Googlesheets (об этом надо написать отдельный пост). Но потом захотелось сделать опорный проект - заготовку для дальнейшего развития. Итогом стала данная статья.

Итак, у нас есть ESP-01.

Read more

STM32 и USB-HID — это просто

Reading time14 min
Views382K
На дворе 2014 год, а для связи микроконтроллеров с ПК самым популярным средством является обычный последовательный порт. С ним легко начать работать, он до примитивности прост в понимании — просто поток байт.
Однако все современные стандарты исключили COM порт из состава ПК и приходится использовать USB-UART переходники, чтобы получить доступ к своему проекту на МК. Не всегда он есть под рукой. Не всегда такой переходник работает стабильно из-за проблем с драйверами. Есть и другие недостатки.
Но каждый раз, когда заходит разговор о том, применять USB или последовательный порт, находится множество поклонников логической простоты UART. И у них есть на то основания. Однако, хорошо ведь иметь альтернативу?

Меня давно просили рассказать как организовать пакетный обмен данными между ПК и МК на примере STM32F103. Я дам готовый рабочий проект и расскажу как его адаптировать для своих нужд. А уж вы сами решите — нужно оно вам или нет.

У нас есть плата с современным недорогим микроконтроллером STM32F103C8 со встроенной аппаратной поддержкой USB, я рассказывал о ней ранее

Заставим ее работать

Range Extender на NRF24L01+PA+LNA: обмен текстовыми сообщениями между устройствами там, где нет сотовой связи

Level of difficultyEasy
Reading time11 min
Views12K
Картинка Pressfoto, Freepik

Эта идея появилась у меня достаточно давно, и наконец-то дошли руки её частично реализовать. А именно: хотелось попробовать сделать средство общения с помощью известного радиопередатчика NRF24L01+PA+LNA.

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

Читать дальше →

Как правильно маркировать рекламу после получения токенов из ОРД?

Level of difficultyMedium
Reading time6 min
Views34K

При исполнении закона о маркировке рекламы необходимо не только полноценно оформлять свою отчетность по доходному договору в ОРД (оператор рекламных данных), но и правильно нанести атрибуты маркировки на рекламные материалы.

Читать далее

Как мы Steam Deck Verified получали

Level of difficultyEasy
Reading time4 min
Views3.6K

Это небольшой рассказ о том, как мы получили заветную плашечку Steam Deck Verified для нашей игры The Unexpected Quest. Причем, никто из нас даже в руках не держал этот ваш Steam Deck.

Читать далее

Outlook как сервер микросервисов

Reading time8 min
Views3.2K

Доброго времени суток. 

Ты ж у нас один программист !!!
Небольшая вводная. Я для друзей, по их запросам, выгружаю данные из MS SQL Server'а. Друзья дают исходные данные, для которых надо сделать выгрузку в файлах .csv. Исходных данных (ИД) может быть от 1 до ... строк. Я загружал данные в sql таблицу с помощью задачи или Task в английской версии в SQL Server Management Studio (SSMS). Исторически сложилось, что все sql файлы со скриптами хранятся на моем ПК. Я файлы открывал в SSMS и запускал на выполнение. Результаты записывал в файл и отправлял сообщение, что обработка выполнена. Друзья забирали файлы с результатами. 

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

Читать далее

Information

Rating
6,095-th
Location
Краснодар, Краснодарский край, Россия
Registered
Activity

Specialization

Backend Developer, Прокрастинатор
Git
SQL
.NET
MSSQL
ASP.NET Web API
.NET Core
ASP.Net
Database