NULL в SQL: Что это такое и почему его знание необходимо каждому разработчику

NULL — это специальное значение, которое используется в SQL для обозначения отсутствия данных. Оно отличается от пустой строки или нулевого значения, так как NULL означает отсутствие какого-либо значения в ячейке таблицы.

История появления NULL в SQL довольно интересна и длинна. В начале 1970-х годов Д. Камерер (D. Chamberlin) и Р. Бойд (R. Boyce) предложили использовать реляционную модель для полной замены иерархических и сетевых моделей данных, которые были актуальны в то время. Полная замена предполагала возможность хранения значений NULL в таблицах структуры базы данных.

Первоначально, NULL был создан как интегральный элемент реляционной модели данных. Это означало, что NULL мог быть использован в качестве значения для любого типа данных (целого числа, строки и т.д.) или даже целой строки (например, таких значений как «неизвестно» или «нет данных»).

Когда была разработана SQL, NULL был реализован как специальное значение или маркер, который указывает на отсутствие значения в столбце. Таким образом, в SQL NULL означает отсутствие значения или неопределенное значение.

Однако, NULL создал некоторые проблемы при работе с данными в SQL. Например, если вы выполняете операцию на столбце, содержащем NULL значение, результат операции также будет NULL. Это означает, что использование NULL может приводить к нежелательным результатам, таким как непредсказуемое поведение.

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

Рассмотрим несколько SQL операций с NULL:

  1. Как назначить значение NULL в SQL?
    Значение NULL можно явно указать при создании таблицы или добавления записей в таблицу. Например, при создании таблицы можно указать, что один из столбцов не обязательно должен иметь значение, используя ключевое слово NULL.

  2. Как проверить NULL в SQL?
    Для того чтобы проверить значение NULL в SQL, используется оператор IS NULL. Этот оператор возвращает true, если значение столбца равно NULL.

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

  4. Ограничение NOT NULL
    Ограничение NOT NULL позволяет определить, что значение в столбце не может быть NULL. Это означает, что при добавлении записи в таблицу обязательно должно быть заполнено значение для данного столбца.

  5. NULL и операторы сравнения
    NULL в SQL может быть причиной неожиданного поведения операторов сравнения при сравнении значений, в которых присутствует NULL. Например, выражение NULL = NULL должно вернуть false, но на практике может вернуть NULL.

  6. ISNULL
    Функция ISNULL возвращает первый аргумент, если он не равен NULL, и второй аргумент, если первый аргумент равен NULL. ISNULL наиболее часто используется для замены значений NULL на конкретные значения.

  7. COALESCE
    Функция COALESCE возвращает первый аргумент, который не равняется NULL. COALESCE может быть полезна, когда вам нужно выбрать первое значение из двух или нескольких, которые могут быть пустыми.

  8. NULLIF
    Функция NULLIF возвращает NULL, если два аргумента равны. Если аргументы не равны, она возвращает первый аргумент. Эта функция может быть полезна для условного выполнения некоторых операций в зависимости от того, равны ли значения.

Почему знание NULL важно для SQL-разработчиков?

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

NULL в базе данных может привести к ошибкам, например:

  1. Сравнение значений. Если в таблице присутствуют значения NULL, то при выполнении операции сравнения, например, WHERE column_name = NULL, результатом будет False. Вместо этого нужно использовать оператор IS NULL.

  2. Вычисления. Если при выполнении арифметических операций включены значения NULL, то результат такой операции тоже будет NULL. Например, 5 + NULL = NULL.

  3. Сортировка. При сортировке значений в столбце, которые содержат NULL, может произойти непредсказуемый результат в зависимости от реализации сортировки в базе.

  4. Внешние ключи. Если в таблице соединения используются внешние ключи, то значение NULL может привести к нарушению связной целостности.

  5. Агрегирующие функции. При использовании агрегирующих функций в запросах, значения NULL могут не быть учтены в результате.

  6. Вывод на экран. Если значение NULL выводится на экран пользователя, это может вызвать возможное недопонимание и ухудшение пользовательского опыта.

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

Пример неудачного использования NULL

Допустим, у нас есть таблица, в которой хранится информация о заказах в интернет-магазине. Среди полей есть поля, отражающие дату создания заказа (orderdate) и дату его доставки (deliverydate).

Однажды в этой таблице обнаружилась ошибка: у нескольких заказов deliverydate было не заполнено, т.е. им было присвоено значение NULL. Разработчики не заметили этого и продолжили работу с данными.

Однако при анализе статистики продаж на одном из графиков заказы отображались в зависимости от даты доставки. Из-за того, что несколько заказов не имели значения в поле deliverydate, они не отображались на графике вовсе, что привело к искажению реальных данных и ошибочным выводам о продажах на определенные даты.

Эта ошибка привела к тому, что команда интернет-магазина долго работала с неточными данными, и необходимо было потратить много времени на исправление ошибки и калибровку аналитических инструментов. Все эти проблемы могли быть исправлены, если бы разработчики были внимательными и не допустили присвоения значения NULL в поле, которое требует обязательного заполнения.

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

Бонус:
Три вопроса с собеседований, где вас проверяют на знание NULL в SQL:
1. Как проверить, есть ли NULL значение в определенном столбце таблицы в SQL?

Ответ: Необходимо использовать оператор «IS NULL» или «IS NOT NULL». Например, чтобы проверить, есть ли NULL значение в столбце «name» таблицы «users», нужно выполнить следующий запрос: SELECT FROM users WHERE name IS NULL;

  1. Как можно заменить NULL значения на определенное значение в SQL?

Ответ: Для замены NULL значений можно использовать оператор «COALESCE». Например, чтобы заменить NULL значения в столбце «price» таблицы «products» на значение 0, нужно выполнить следующий запрос: SELECT COALESCE(price, 0) FROM products;

  1. Как можно проверить, что два столбца имеют одинаковые значения, включая NULL, в SQL?

Ответ: Для этого нужно использовать оператор «IS NOT DISTINCT FROM». Он сравнивает значения двух столбцов, включая NULL значения. Например, чтобы проверить, что значения столбцов «name» и «address» в таблице «users» совпадают, нужно выполнить следующий запрос: SELECT FROM users WHERE name IS NOT DISTINCT FROM address;


ссылка на оригинал статьи https://habr.com/ru/post/725214/

Мифы о корпоративном волонтерстве: готовься к тому, что можешь быть неправ

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

Заблуждение №1. Воспитанникам детских домов обязательно нужно приносить подарки

В памяти возникла история, которая произошла почти десять лет назад. Тогда мы с коллегами из одной дочерней компании ЛАНИТ собрались и поехали в детский дом не с подарками, а с мастер-классом по лепке пельменей.

Конечно, изначальный наш порыв был про подарки — первое, что пришло в голову, когда мы решили сделать что-то хорошее вместе. Это распространенное стремление, граничащее с понятием «клише», мы остановили и обратились за советом к экспертам из некоммерческих организаций. Директор благотворительного фонда «Здесь и сейчас» Татьяна Тульчинская много лет работает с детьми из детских домов. Она вовремя рассказала нам, что детям будут полезнее не подарки, а навыки, которые пригодятся им в жизни и которых у них нет, потому что нет семьи, где, к примеру, лепка пельменей — это привычное дело. (Хм, кстати, а как давно вы лепили пельмени с детьми? Или хотя бы просто для себя?) 

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

Заблуждение №2. Готовиться к добрым делам не обязательно, главное — желание

Ещё одной запоминающейся историей был масштабный, наполненный множеством событий праздник для детей из детских домов, приютов, реабилитационных и медицинских центров. По ЛАНИТ тогда прошел клич — звали желающих помочь в организации мероприятия. Волонтерами записались десятки сотрудников из ЛАНИТ и из компаний-партнеров. 

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

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

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

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

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

  • Мы идем туда, где нужны наши компетенции и умения. 

  • Мы стараемся делать то, что приносит реальную пользу, руководствуясь правилом, которое актуально не только в медицине: «Не навреди».

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

Заблуждение №3. Корпоративное волонтерство – это когда сотрудников сгоняют на какие-то разовые акции 

Слово «доброволец» содержит в себе два корня – «добро» и «воля». Они не случайно слились в единое понятие, которое означает, что человек по собственному желанию приходит кому-то на помощь. Его нельзя заставлять заниматься той деятельностью, которая ему не подходит. У волонтера всегда должен быть выбор, на каком мероприятии помогать и какую функцию выполнять. К тому же корпоративное волонтерство — это не только про помощь тому, кто в ней нуждается. Это еще и про осознанность и саморазвитие каждого участника собравшейся команды добровольцев. Это объединение усилий ради доброго дела, которое по-настоящему сплачивает коллектив.

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

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

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

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

Помощь там нужна всегда – животных много, а штатная численность персонала не позволяет уделить внимание каждому. Представьте, сколько необходимо человек, чтобы выйти хотя бы на одну 15-минутную прогулку в день с каждой из 900 приютских собак? Потому-то эти преданные, доверчивые и нуждающиеся в заботе существа очень ждут волонтеров, искренне радуются людям и всегда надеются стать чьим-то самым лучшим другом.

Мы стараемся их не подводить. Один из наших сотрудников вызвался поработать волонтером-фотографом, чтобы помогать собакам найти новый дом. Другие коллеги стали постоянными участниками выездов. Отчеты об акциях и сборах, опубликованные на внутреннем корпоративном портале, вдохновляют все новых и новых неравнодушных, которые присоединяются к проекту. Такой рост изнутри — самый классный. Подобные команды волонтеров — самые устойчивые и самые активные.

Заблуждение № 4. Волонтерам не нужны советы со стороны – душевный порыв подскажет, как лучше поступить   

Работая над каждым волонтерским проектом, мы погружаемся в разные сферы жизни и внутренне обогащаемся вместе с теми, кому стремимся помочь. Волонтеры постоянно учатся чему-то новому и вот тому пример.

Мы давно дружим с Пушкинским музеем, и в 2017 году сотрудники его инклюзивной команды придумали проект «Пушкинский — воспитанникам детских домов и интернатов». Для него нужен был спонсор и соорганизатор. ЛАНИТ с радостью согласился участвовать в этом замечательном деле. Для проведения выезда детей нужны были волонтеры. Мы рассказали об этом в коллективе компании, и нам ответили несколько десятков сотрудников из разных подразделений группы. 

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

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

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

Заблуждение №5. Проекты для детей лучше делать развлекательными 

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

Любимый нашими волонтерами проект и, пожалуй, самый значительный — ежегодная профориентационная игра для подростков «Билет в ЛАНИТ». В 2018 году мы решили сделать не просто экскурсию по нашему офису для детей сотрудников, а увлекательное путешествие по миру ИТ-профессий. А когда все получилось, и дети были в восторге, мы решили повторить игру и для наших подопечных из детских домов и интернатов. О том, как все это начиналось, мы уже рассказывали на Хабре.

По отзывам волонтеров-ветеранов игры (а нас таких уже несколько десятков человек), самое ценное в ней — взаимная подзарядка позитивной энергией и горящие глаза детей. А еще наша радость и уверенность, что мы делаем очень полезное дело, при этом делаем его с азартом и энтузиазмом.

На одной из игр была одна очень эмоциональная история, способная довести до слез. Волонтеры из нашей дочерней компании Treolan привезли крутой монитор с двумя встроенными камерами. Управлять курсором на таком мониторе можно движением глаз. Было задумано использовать эту технику для компьютерной игры во время мастер-класса для детей. Одним из участников был подросток в инвалидном кресле, и из-за ДЦП ему было сложно справляться с мышкой. А тут он увидел, что может пользоваться компьютером, не заставляя непослушную руку удерживать мышь. Парень попросил закрыть игру, открыл текстовый редактор, электронные таблицы и с восторгом изучал новые возможности. Пожалуй, ради таких моментов мы всё это и затеваем.

Заблуждение №6. Волонтерство – это в основном физический труд

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

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

Так однажды пришло письмо от одного из сотрудников нашей дочерней компании Comptek Никиты. Он написал, что наслышан о волонтерских проектах ЛАНИТ и тоже желал бы в них участвовать. Но он хотел быть полезным там, где нужны его профессиональные навыки и умения. Никита – специалист по Wi-Fi, руководитель большой группы, которая ведет серьезные проекты. Мы долго не могли придумать, где же применить его умения. И наш коллега сочинил себе задачу сам. 

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

Конечно, интеллектуальное волонтерство для ИТ-сферы — это востребованный, и, пожалуй, самый сложный в реализации вид помощи. Но и в этой сфере можно делать удивительные вещи. В 2013 году ЛАНИТ подарил и настроил мультимедийное оборудование для Московского драматического театра Ермоловой. Наши инженеры сотрудничали с режиссерами, уточняя детали использования техники. В результате родился очень популярный спектакль «Портрет Дориана Грея», который многие годы радовал зрителей. Специалисты еще одной дочерней компании, «ЛАНИТ-Интеграция», создали для театра афиши с элементами дополненной реальности. Эти проекты – пример интеллектуального волонтерства не отдельных людей, а компании.

К интеллектуальному волонтерству можно отнести и недавно созданный «Сетевой Академией ЛАНИТ» социальный портал, где мы с помощью специально настроенной системы управления обучением LMS для наших социальных партнеров бесплатно создаем и размещаем образовательный контент. Например, курсы для приемных родителей «Института развития семейного устройства». 

Заблуждение №7. Добрые дела – бездонный колодец, и нужен он только жаждущим

Если постараться подытожить все сказанное, то можно заключить, что прежде всего корпоративное добровольчество нужно нам, волонтерам. Потому что есть такой тип людей, для которых важно делать что-то доброе просто так. Некоторым из нас это помогает оставаться в ресурсе, когда в окружающем мире все как-то тревожно и безрадостно. Для волонтеров у нас в ЛАНИТ всегда есть идеи, кому и как можно помочь, чтобы эта помощь действительно была «зрячей» — разумной и эффективной.

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

Кстати, недавно «Ведомости» опубликовали исследование аналитиков Kept. Они опросили представителей бизнеса и выяснили, что организация волонтерской активности заметно и положительно влияет на значимые показатели: 59% опрошенных считают, что корпоративное волонтерство – хороший инструмент для снижения текучести кадров. 89% опрошенных отметили, что участники добровольческих проектов отличаются более высокой вовлеченностью, а 85% говорят, что такие сотрудники более лояльны к своей работе. И, разумеется, волонтерство полезно для PR: 87% респондентов опроса считают, что корпоративное добровольчество дает компании позитивный PR-эффект.

Бонус дочитавшим. Подсказки для волонтерских команд

Говоря о нашем опыте корпоративного волонтерства, не буду скрывать, что при реализации проектов мы не всегда достигали успехов, но и совершали ошибки. Чтобы их не повторяли другие, мы готовы поделиться выводами. У нас сложился небольшой чек-лист, который может оказаться полезным, если вы задумали построить систему добровольчества внутри своей компании. Безусловно, это не законы, высеченные в камне. Это тезисы, важность и правильность которых мы испытали на себе. 

Итак, они перед вами: 

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

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

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

  4. Добрая воля. Волонтеры – это добровольцы. Мы приглашаем только тех, кто сказал нам: «Я хочу стать волонтером ЛАНИТ». И мы легко и с пониманием принимаем отказ. Всегда найдутся те, кто в тот же самый момент может и хочет помогать.

  5. Инструктаж. Каждый проект организуется при поддержке экспертов соответствующего направления – мы советуемся, проводим обучение волонтеров – личное или в записи. 

  6. Системность. Когда планируем первый шаг, обсуждаем второй и мечтаем о третьем. 

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

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

На этом пока всё. Не верьте мифам, верьте фактам!

Если у вас есть идеи совместных акций – напишите мне. 


ссылка на оригинал статьи https://habr.com/ru/company/lanit/blog/724228/

Как правильно отправить пациента в Stand-by и включить обратно

Расскажу, что именно и как мы делаем, когда «вырубаем» вас в операционной.


Странные комки внутри ингалятора Мортона — это натуральная губка, пропитанная диэтиловым эфиром

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

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

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

Чем отличается наркоз от седации

Для начала давайте определимся, что такое наркоз вообще. Состояние человеческого сознания — это не бинарная история в вариантах «включено/выключено». Полностью «выключенный» вариант у живых млекопитающих не бывает.

Между состоянием «пациент в полном сознании» и «пациент в сверхглубоком наркозе, а мы за него дышим» есть огромный спектр различных вариантов. При этом в стоматологии именно классический наркоз, с почти полным подавлением всех отделов ЦНС встречается нечасто. Обычно это нужно только при проведении сложных операций в челюстно-лицевой хирургии. Например, если пациенту собирают лицевой череп после тяжёлой травмы на нитиноловых пластинах. Пациент при этом находится в состоянии глубокого торможения, миорелаксанты принудительно выключают активность поперечно-полосатой мускулатуры, а функция дыхания «протезирована» с помощью ИВЛ. Для такого наркоза используется сразу комплекс препаратов, каждый из которых подавляет что-то своё.

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

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

Несмотря на то, что ноцицептивные центры головного мозга, ответственные за боль, продолжают функционировать, врачу намного проще работать с пациентом в таком состоянии:

  1. Пациент, который до седации был в диком стрессе из-за боязни стоматологических вмешательств, теперь полностью спокоен. У него ровный пульс, у него нет всплесков адреналина и скачков давления.
  2. Без скачков давления и стресса у пациента не льётся ручьём кровь из любой мелкой раны. Например, удаление зуба или малые хирургические вмешательства пройдут с меньшей кровопотерей.
  3. На фоне седации падает необходимая доза анестетика. Грубо говоря, боль — это не просто уровень сигнала с болевых рецепторов, но и ещё уровень чувствительности ноцицептивного центра в ЦНС, который это обрабатывает. Под седацией активность этого центра ниже. Плюс анестетик менее активно вымывается из зоны введения, так как менее выражено усиление кровотока на фоне стресса.
  4. Пациенту легче перенести длительные манипуляции. Даже очень упорный пациент начнёт ворочаться, просить размяться, если ему нужно находиться неподвижно, например, 5 часов подряд.

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

За чем следит анестезиолог?

С пациентом под седацией работает минимум два человека — врач-стоматолог, который выполняет хирургические или другие манипуляции, и врач-анестезиолог, который следит за всеми жизненными показателями больного. Именно он первым среагирует, если какой-то из параметров начнёт уползать за допустимые пределы, и быстро поправит.

Вот ключевые параметры, за которыми он следит:

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

Цвет слизистых и ногтевых пластин.Чаще всего вначале сработает алерт на падение сатурации, если эффективность дыхания упадёт. Но иногда анестезиолог или врач-стоматолог могут заметить, что кровь, капающая из разреза, уже не имеет яркого оттенка капиллярной, а становится более тёмной, ближе к венозной. Это тоже может быть следствием падения сатурации или периферических сосудистых эффектов. Это, кстати, одна из причин, почему тормозится телемедицина в хирургии: через камеру крайне тяжело передать точный оттенок крови, а он много где ещё критичен хирургу.

Давление. Кровеносная система — сложная гидродинамическая система, в которой сосуды — это не просто трубки для жидкости, а активный элемент всей структуры. Очень важно поддерживать его на нужном уровне, чтобы все ткани и мозг в особенности перфузировались (кровоснабжались) на нужном уровне. У вас может быть сколько угодно кислорода в крови, но, если давление упало ниже критического уровня, то все ткани начнут испытывать острое кислородное голодание. Такое недопустимо, и любые отклонения корректируются немедленно.

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

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

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

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

Как мы отправляем пациента в Stand-by


Автоматический дозатор, который вводит препарат с нужной скоростью в катетер

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

  1. Предварительное обследование.
  2. Инструктаж по поводу еды и воды до врачебных процедур.
  3. Подключение к аппаратуре.
  4. Внутривенное введение пропофола и сопутствующих препаратов.
  5. Плавное пробуждение в специальной палате в тёплом одеялке.

Расскажу чуть подробнее.

Подготовка

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

Еда — это тоже очень важный момент. Мы предупреждаем пациента, что ему нельзя есть за 6 часов до начала процедуры и пить за 3 часа до неё. Всё это необходимо для того, чтобы гарантировать пустой желудок в момент седации. Твёрдая пища может задерживаться в желудке довольно долго, в то время как вода и блюда жидкой консистенции почти сразу улетают дальше в двенадцатиперстную кишку. Вся история с едой и питьём довольно критична, так как под действием препарата рефлексы ведут себя не так, как обычно. Иногда наличие содержимого в желудке может привести к активации рвотного рефлекса, что помешает врачу и создаст риски аспирации выброшенного в лёгкие. Если пациент соблюдает сроки выше, то всё будет в порядке.

Перед манипуляцией мы следим, чтобы у пациента была удобная свободная одежда. Когда человек в полном сознании, то он ворочается, чешется и поправляет складки даже во время стоматологического приёма. Это совершенно нормальные и бессознательные реакции. Если же пациента временно «выключили», то сделать он этого не может и через 3–4 часа после окончания вмешательства может обнаружить, что резинка трусов или складка одежды больно передавила участок кожи где-то на боку.

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

Выключаем


Внутривенный катетер, куда подаются препараты с линий автоматического дозирования

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

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

Пропофол интересен тем, что работает, что называется «на кончике иглы». По сути, вы можете видеть, как препарат уходит в венозный катетер и через пару ударов сердца пациент начинает выключаться. Препарат настолько быстро и эффективно проникает через гематоэнцефалический барьер, что среднее время до полной утраты сознания составляет порядка 90 секунд после введения. Обратный процесс происходит столь же быстро. После прекращения непрерывной подачи пропофола через венозный катетер его действие прекращается в течение нескольких минут. Период полувыведения составляет 2–8 минут, а через несколько часов он полностью метаболизируется в неактивные формы.

Как точно дозировать подачу

Благодаря тому, что автоматический дозатор постоянно вводит вещество в кровеносное русло, у нас не может быть ситуации, когда пациент внезапно очнулся, впечатлился от количества людей и оборудования вокруг, а затем снова отключился после новой инъекции. Дозатор, который правильнее назвать инфузоматом или перфузором — это, по сути, предельно надёжная и сертифицированная система для давления на поршень с помощью прецизионного шагового двигателя. Сами моторы там обычно стоят вполне классические, на 1,8 ° за шаг. Использование 0,9 ° обычно просто не оправдано, так как даже с первым вариантом погрешность будет существенно ниже, чем при ручном дозировании руками и шприцом. Имеющейся погрешности достаточно, чтобы точно вводить препарат единицами миллилитров в час.

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

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

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

Также в процессе операции врач-стоматолог может сообщить, что пациент сопротивляется при введении роторасширителя. Тогда мы увеличиваем дозировки, заставляя пациента сильнее расслабиться. Стоматолог находится в состоянии постоянного контакта с анестезиологом и озвучивает свои действия. Если он, например, сообщает, что сейчас будет производить удаление зуба, то анестезиолог может дополнительно разово ввести 20–30 мг пропофола, чтобы подавить ЦНС пациента чуть сильнее и не спровоцировать рост давления и частоты сердечных сокращений на болезненную процедуру.

Зачем мы делаем массаж


Лимфоузел и система клапанов, обеспечивающих односторонний ток жидкости

Если операция длится 5–6 часов, то мы обязательно шевелим пациента. Меняем положение ног, при необходимости выполняем лёгкий массаж. Дело в том, что человеческий организм по своей структуре немного похож на губку, пропитанную межклеточной жидкостью. Клетки постоянно «мусорят» вокруг себя, выбрасывая отходы, продукты метаболизма накапливаются в межклеточном матриксе.

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

Пациент всё время дышит сам

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

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

Наркозно-дыхательный аппарат в стоматологической практике используется только для проведения ингаляционной анестезии у наших маленьких пациентов. Объясню почему. Ни одному маленькому пациенту в 2–3 года, например, вы не поставите внутривенный катетер, он вам просто этого не даст сделать. Поэтому для малышей мы используем вариант с предварительным погружением в медикаментозный сон с помощью севорана. Мы устанавливаем ларингеальную масочку, а затем подсоединяем пациента через дыхательный контур к аппарату ИВЛ. И уже наркозно-дыхательный аппарат через испаритель подаёт в лёгкие ребёнка заданную концентрацию севорана.

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

В природе севоран представляет собой бесцветную жидкость с не очень приятным запахом. В аппарате ИВЛ есть такой прибор, называется он испаритель. Туда врач-анестезиолог заливает жидкость, и испаритель преобразует жидкость в пар, в газ. И уже по дыхательному контуру через ларингеальную маску севоран в виде газа подаётся в лёгкие ребёнка. И таким образом поддерживается анестезия на протяжении всего лечебного периода. У севорана очень низкая растворимость в крови. И это позволяет ребёнку очень быстро уснуть и очень быстро проснуться. Как правило, малыш засыпает максимум в течение 10 минут и в течение 10–15 минут просыпается после прекращения подачи.

В стандартной концентрации, как и с внутривенным пропофолом, не угнетается дыхательный центр, и ребёнок дышит в оптимальном для себя ритме. Тем не менее, так как он всё равно интубирован и мы контролируем параметры его дыхания, врач-анестезиолог может принять решение и перевести наркозный аппарат во вспомогательный режим. Например, он видит, что нормальный дыхательный объём должен быть в пределах 250 мл, но упал до 100. Гипоксия неприемлема, поэтому надо что-то делать.

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

  1. Подавлять самостоятельное дыхание полностью и работать автоматически и автономно, ориентируясь на показатели кардиомонитора и сатурации.
  2. Работать во вспомогательном режиме, когда аппарат отслеживает начало и конец естественного вдоха пациента и помогает ему, нагнетая дополнительное давление синхронно с естественным ритмом.

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

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

В итоге:

  1. Взрослые дышат самостоятельно, и интубация им не требуется почти никогда. Если будет нужно — установим надгортанный воздуховод и тоже переведём на вспомогательный режим. Медикаментозная седация за счёт внутривенного введения пропофола.
  2. Дети тоже дышат самостоятельно, но изредка им помогает аппарат, сохраняя их естественный ритм. Медикаментозная седация за счёт паров севорана через лёгкие.

Пробуждение

Пропофол — препарат короткого действия. Нам не требуется вводить какие-то дополнительные вещества для того, чтобы «включить» пациента обратно. Всё время, пока шла операция, анестезиолог следил за насыщением крови кислородом, адекватностью кровоснабжения головного мозга и организма в целом. То есть никаких повреждений или негативных последствий сама седация не причиняет. После прекращения подачи пропофола он быстро метаболизируется, и в течение 10–20 минут пациент приходит в сознание.

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

Резюме

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

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

Ещё посты:

P.S. Если вы дойдёте до наших клиник, то говорите, что вы с Хабра, будет скидка 5%.


ссылка на оригинал статьи https://habr.com/ru/company/belayaraduga/blog/724626/

6 перспективных российских стартапов за февраль 2023 года

«Приложение для тех, кто хочет вести активный образ жизни, а не просиживать штаны за компом», «Сервис генерации картинок на русском языке, заточенный под бизнес», «Онлайн-сервис для тех, кто задолбался подписывать договоры со своими клиентами на бумаге» и еще несколько интересных проектов в февральском дайджесте.

Привет. Я Дима Беговатов — стартап‑обозреватель. Каждый месяц я публикую несколько обзоров интересных российских стартапов. Пишу только личное мнение, взгляд с позитивной стороны: для негатива есть другие медиа.

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

Поехали!

Graffit

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

Принцип работы приложения:

  1. Скармливаете приложению ссылку на нужный выпуск подкаста в Apple Podcasts или аудиокнигу на ЛитРес, а также из других книжных каталогов.

  2. Начинаете слушать аудио-файл прямо в приложении.

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

  4. Продолжаете слушать, пока алгоритмы переводят речь в текст и сохраняют новый кусочек мудрости в вашу «Базу знаний».

  5. Доступно только на iOS.

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

Премиум в приложении стоит от 279 р в месяц и снимает ограничения на добавление аудио-заметок.

Попробовать iOS-приложение скачать из AppStore
Пообщаться с основателем @palovis

OkiDoki

Cокращает затраты времени и денег на создание типовых документов и их удаленное подписание простой электронной подписью. Без КЭП, ЭЦП и в полном соответствии с законами РФ.

Особенности продукта:

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

  • Автоматическое добавление в договор нужных юридических пунктов для соответствия законам.

  • Самостоятельная загрузка и редактирование договора для создания «умного шаблона».

  • Подписание договора клиентом происходит через СМС.

  • Подписанные договоры хранятся в базе сервиса.

  • Сервис бесплатен при подписании первых 10 договоров, но при превышении этой квоты надо будет отдавать от 15 до 25 рублей за исходящий договор.

Посмотреть возможности и создать свой цифровой договорdoki.online
Пообщаться с основателем
@superpupermegaman

Gerwin AI

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

Особенности продукта:

  • Поддержка русского языка: запросы длиной до 150 символов.

  • Жесткая настройка стилей картинок на основе запроса.

  • Выбор формата формат: квадрат/горизонтальный/вертикальный.

  • Генерируется 4 варианта изображений по одному запросу.

  • И изначальная генерация и масштабирование стоит по 1200 символов – это «валюта» внутри Gerwin, которая досталась новому разделу от изначальной бизнес-модели текстового генератора.

  • Есть ограничения по производимому контенту.

  • 32 картинки обойдутся примерно в 200 рублей, то есть по 6 рублей за штуку (если у вас PRO-подписка, которая дает 40% скидки).

Сгенерировать картинки самостоятельно app.gerwin.io/images
Пообщаться с основателем
@radio_roma

Deductive Lake House

Low-code data платформа – спасает бизнес от ошибок в управлении данными, повышает их качество и снижает расходы на хранение и работу с ними.  

Особенности продукта:

  • На данный момент у продукта есть модуль «Каталог данных», который они продают в виде Enterprise-решения. Он позволяет собрать и совместить данные из разных источников в едином каталоге, сформировать единый бизнес-словарь, «узнать» местонахождение тех или иных данных.

  • В разработке до мая 2023 года: Управление потоками данных, Анализатор данных. Причем весь набор команда собирается запустить в облаке в виде SaaS-решения в 2024 году вместе с Оптимизатором моделей и Предиктором данных.

  • CEO выводил компании на американский рынок, CDO помогал оптимизировать дата-архитектуру Московской биржи и ряда банков России из топ-10, часть сооснователей занималась международным развитием крупнейших ИТ-компаний России.

Оставить запрос на демо  dlh.satorilab.ru
Пообщаться с основателем
@imaginaryzoo

Radist.Online

Виджет для Битрикс24 и amoCRM, который спасает бизнесы от мала до велика от потери клиентов в мессенджерах.

Особенности продукта:

  • Все контакты, переписка, вложения и работа по клиенту будут отражены в CRM: ничего не потеряется, а менеджер будет вовремя получать уведомления.

  • Сообщение от клиента в мессенджер компании автоматически создаст сделку в CRM-системе с контактными данными.

  • Ссылку на оплату можно прислать клиенту прямо прямо в мессенджер, не заходя в Личный кабинет банка, а из все той же CRM-системы. и даже вывести ее в виде QR-кода СБП, что сэкономит вам деньги на эквайринге – ведь все еще действует постановление о возмещении банковских комиссий.

  • 2000 компаний-пользователей, среди которых Теле2, Модульбанк и Первый ОФД.

  • Если у вас пока нет CRM, то Радист Онлайн предлагает свою упрощенную версию RadistWeb для облегчения работы «в одном окне».

  • Радист Онлайн – модульный продукт, в нем можно подключить только те функции, что вам нужны.

    • Интеграция мессенджеров (WhatsApp, WhatsApp Business API, Telegram) и CRM-систем обойдется — от 2400 р./месяц.

    • Интеграция интернет-эквайринга и CRM (Тинькофф, Сбер, Модульбанк, Paykeeper, bePaid) — от 800 р./месяц.

Подключить Radist.Online к своей CRM radist.online
Пообщаться с основателем 
@radyus

Victa

Беговое приложение и шагомер с механиками прокачки персонажа и поиском артефактов на местности в стиле Pokemon Go.

Особенности продукта:

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

  • Victa подсоединяется к Apple Health, откуда берет данные о вашей активности: шаги и калории. Дистанцию, время, скорость, набранную высоту и темп ребята вычисляют на своей стороне.

  • Над дизайном и анимацией работали спецы, делающие мультики для 2х2.

  • Язык приложения – Английский.

  • Приложение бесплатное, пока только на iOS.

Скачать Victa из AppStore  Скачать
Пообщаться с основателем
 alexander@victa.ai


Подборка прошлого месяца

Посмотреть стартапы ноября можно в текстовом виде на Хабре.


Если вам понравилась подборка или вы хотите узнать подробнее о проектах из списка, буду благодарен за подписку на мой телеграм канал VC hunt, где я привожу больше полезной информации о стартапах и рынке РФ. Также, можете послушать мой подкаст о стартапах в России и мире.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Какие из проектов вам понравились?
22.22% Graffit 4
44.44% OkiDoki 8
16.67% Gerwin AI 3
11.11% Deductive Lake House 2
5.56% Radist.Online 1
44.44% Victa 8
Проголосовали 18 пользователей. Воздержались 3 пользователя.

ссылка на оригинал статьи https://habr.com/ru/post/721542/

Java для начинающих: решаем задачу умножения матриц

Для тех, кто только начинает учиться программировать на языке Java, часто бывает непросто найти задачу по плечу — и чтобы научиться чему-то новому, и чтобы не застрять где-то посередине задачи, разбираясь с подводными камнями.

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

Сергей Чеботарев

Наставник на курсе «Java-разработчик»

Алгоритм умножения матриц

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

1  2  3  4  5  6 7  8  9  10 11 12 13 14 15 16 17 18 

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

Во-первых, не всякие 2 матрицы можно перемножить. Для этого количество столбцов (=длине строки) первой матрицы должно совпадать с количеством строк (=длине столбца) второй матрицы. А правило, по которому их умножают, следующее:

При умножении матрицы A, размером m строк на n столбцов, и B, размером n строк на k столбцов, получаем матрицу M, размером m строк на k столбцов.

Сокращённо:

A^{m х  n} * B^{n х k} = M^{m х k}

При этом ячейки матрицы-результата будут вычисляться вот так (1-й индекс — номер строки, 2-й — номер столбца):

M_{p,q} = \sum_{i=1}^{n} A_{p,i} * B_{i,q}

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

1 2 3 4  * 9 8 4 5 6 7 8    7 6 3            5 4 2            3 2 1 

Так как у нас 2 строки в первой матрице и 3 столбца во второй, то такие будут и размеры матрицы-результата M:

Посчитаем ячейку

M_{1,1}= 1*9 + 2*7 + 3*5 + 4*3 = 50

1 2 3 4
5 6 7 8

*

9 8 4
7 6 3
5 4 2
3 2 1

Результат записываем в матрицу:

50

Далее, ячейка

M_{1,2}= 1*8 + 2*6 + 3*4 + 4*2 = 40

1 2 3 4
5 6 7 8

*

9 8 4
7 6 3
5 4 2
3 2 1

Матрица становится вот такой:

50

40

И так далее, получим:

50

40

20

146

120

60

Рассмотрев данный несложный алгоритм, идём дальше.

Требования к программе

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

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

Как легче всего пользователю вводить числовые матрицы?

Мне представляется, что легче всего вводить их так, как мы их видим в тексте: между числами пробелы, каждая строка матрицы отделяется нажатием Enter.

Надо также учитывать, что пользователь может вводить разное количество пробелов между числами для того, чтобы матрицы выглядели красиво. Аналогично наша программа, выдавая результат, должна выравнивать числа так, чтобы числа из одного столбца были одно над другим, независимо от того, сколько цифр в числе.

Реализуем требования

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

Первым делом реализуем то, как пользователь будет вводить матрицы. Для этого нам понадобится класс java.util.Scanner. Сначала введём количество строк, затем количество столбцов, а потом уже сами числа матрицы:

    static int[][] inputMatrix(final Scanner scanner) {         System.out.println("Введите количество строк матрицы:");         final var rows = scanner.nextInt();         System.out.println("Введите количество столбцов матрицы:");         final var cols = scanner.nextInt();         final var matrixA = new int[rows][cols];         System.out.println("Введите матрицу:");         for (var i = 0; i < rows; i++) {             for (var j = 0; j < cols; j++) {                 matrixA[i][j] = scanner.nextInt();             }         }         return matrixA;     } 

Как видите, я оформил ввод матрицы как отдельный метод. Так как нам придётся ввести две матрицы, мы будем вызывать его 2 раза. Обратите внимание, что большинство требований по вводу реализованы с помощью использования класса Scanner из стандартной библиотеки Java, а не стандартного потока ввода. У него множество преимуществ, например, он учитывает, что пользователь может вводить разное количество пробелов между числами, и игнорирует их. Мы будем предполагать, что пользователь не ошибается при вводе данных (как минимум, не вводит слова вместо чисел).

Далее, нам понадобится функция, которая делает собственно умножение двух матриц. Реализуем это умножение через несколько вложенных циклов. Предварительно нам нужно будет проверить, можно ли перемножать данные нам матрицы:

    static int[][] multiply(final int[][] matrixA, final int[][] matrixB) {         if (matrixA[0].length != matrixB.length) {             System.err.println("Эти матрицы нельзя перемножить");             return null;         }         final var matrixM = new int[matrixA.length][matrixB[0].length];         for (var i = 0; i < matrixM.length; i++) {             for (var j = 0; j < matrixM[0].length; j++) {                 matrixM[i][j] = 0;                 for (var k = 0; k < matrixA[0].length; k++) {                     matrixM[i][j] += matrixA[i][k] * matrixB[k][j];                 }             }         }         return matrixM;     } 

Здесь, очевидно, проверка размерности матриц достаточно упрощена. Мы проверяем размеры не всех строк, а только первой. Это сделано сознательно; если хочется, здесь можно расширить проверку.

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

    private static int max_len(final int[][] m) {         // Сначала вычислим максимальное число матрицы:         var max = m[0][0];         for (var i = 0; i < m.length; i++) {             for (var j = 0; j < m[0].length; j++) {                 if (m[i][j] > max) {                     max = m[i][j];                 }             }         } // С помощью логарифма вычислим количество цифр в числе. Кто с ходу скажет, как это сделать проще?         return Double.valueOf(Math.log10(max)).intValue() + 1;     } 

С помощью форматирования текста, зная максимальную длину числа, мы теперь можем красиво вывести матрицу на экран:

final var len = max_len(matrixM);         final var format = "%" + len + "." + len + "s ";         for (var i = 0; i < matrixM.length; i++) {             for (var j = 0; j < matrixM[0].length; j++) {                 System.out.printf(format, matrixM[i][j]);             }             System.out.println();         } 

Реализовав все требования, собираем программу воедино:

package ru.ya.prak; import java.util.Scanner; public class Matrixes { public static void main(final String[] args) {     final var scanner = new Scanner(System.in);     System.out.println(&quot;1я матрица:&quot;);     final var matrixA = inputMatrix(scanner);     System.out.println(&quot;2я матрица:&quot;);     final var matrixB = inputMatrix(scanner);     final var matrixM = multiply(matrixA, matrixB);     if (matrixM == null) {         return;     } System.out.println(&quot;Матрица-результат:&quot;);     final var len = max_len(matrixM);     final var format = &quot;%&quot; + len + &quot;.&quot; + len + &quot;s &quot;;     for (var i = 0; i &lt; matrixM.length; i++) {         for (var j = 0; j &lt; matrixM[0].length; j++) {             System.out.printf(format, matrixM[i][j]);         }         System.out.println();     } }  private static int max_len(final int[][] m) {     var max = m[0][0];     for (var i = 0; i &lt; m.length; i++) {         for (var j = 0; j &lt; m[0].length; j++) {             if (m[i][j] &gt; max) {                 max = m[i][j];             }         }     }     return Double.valueOf(Math.log10(max)).intValue() + 1; }  private static int[][] multiply(final int[][] matrixA, final int[][] matrixB) {     if (matrixA[0].length != matrixB.length) {         System.err.println(&quot;Эти матрицы нельзя перемножить&quot;);         return null;     }     final var matrixM = new int[matrixA.length][matrixB[0].length];     for (var i = 0; i &lt; matrixM.length; i++) {         for (var j = 0; j &lt; matrixM[0].length; j++) {             matrixM[i][j] = 0;             for (var k = 0; k &lt; matrixA[0].length; k++) {                 matrixM[i][j] += matrixA[i][k] * matrixB[k][j];             }         }     }     return matrixM; }  static int[][] inputMatrix(final Scanner scanner) {     System.out.println(&quot;Введите количество строк матрицы:&quot;);     final var rows = scanner.nextInt();     System.out.println(&quot;Введите количество столбцов матрицы:&quot;);     final var cols = scanner.nextInt();     final var matrixA = new int[rows][cols];     System.out.println(&quot;Введите матрицу:&quot;);     for (var i = 0; i &lt; rows; i++) {         for (var j = 0; j &lt; cols; j++) {             matrixA[i][j] = scanner.nextInt();         }     }     return matrixA; }  } 

Запустим нашу программу и попробуем пересчитать наш пример из описания алгоритма:

1я матрица: Введите количество строк матрицы: 2 Введите количество столбцов матрицы: 4 Введите матрицу: 1 2 3 4 5 6 7 8 2я матрица: Введите количество строк матрицы: 4 Введите количество столбцов матрицы: 3 Введите матрицу:  9 8 4 7 6 3 5   4   2 3 2 1 Матрица-результат:  50  40  20  146 120  60  

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

Если считаете, что нужно что-то улучшить, то можете реализовать эти улучшения, а я готов обсудить их в комментариях 🙂


ссылка на оригинал статьи https://habr.com/ru/company/yandex_praktikum/blog/723510/