Русский
Русский
English
Статистика
Реклама

Разработка для office 365

Бесплатный вебинар защита организации

27.04.2021 10:04:26 | Автор: admin
13-14 мая, на английском с субтитрами на русском13-14 мая, на английском с субтитрами на русском

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

Во время этого учебного мероприятия вы узнаете, как:

  • Создавать синхронизацию, защиту и управление идентификационной информацией

  • Использовать безопасность в Microsoft 365

  • Интегрировать планы безопасности облачных приложений и управления устройствами

Подробности и регистрация.

Подробнее..

Вебинар защита конфиденциальной информации и управление рисками, связанными с данными

14.05.2021 10:12:48 | Автор: admin
27-28 мая, на английском с субтитрам на русском27-28 мая, на английском с субтитрам на русском

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

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

На этом мероприятии:

  • Поймите, идентифицируйте и защитите свои самые конфиденциальные данные.

  • Выявляйте инсайдерские риски и нарушения кодекса поведения и принимайте соответствующие меры.

  • Используйте защиту информации и управление.

Подробности и регистрация.

Подробнее..

Инструменты Microsoft для повышения эффективности учебного процесса

25.05.2021 10:11:06 | Автор: admin

Дистанционное игибридное обучение

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

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

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

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

Представляем новые инструменты для вовлечения учеников в учебный процесс в классе

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

  • Интеграция с календарем:новые возможности интеграции с календарем позволяют ученикам видеть расписание уроков и сроки сдачи заданий в календарях Teams и Outlook. Таким образом ученики могут видеть всю важную информацию сразу:где они должны быть и что им нужно изучать.

  • Обновления СУО:чтобы помогать преподавателям экономить время и создавать более целостную среду, Microsoft сотрудничает с ведущими поставщиками систем управления обучением (СУО), такими как Instructure и Blackboard, для углубления и улучшения интеграции СУО и Teams, собраний Teams и OneDrive.

Поддерживаем благополучие учащихся

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

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

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

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

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

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

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

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

Подробнее..

Парадокс гибридной работы

08.06.2021 10:08:20 | Автор: admin
Автор Сатья Наделла, глава MicrosoftАвтор Сатья Наделла, глава Microsoft

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

Страны начинают восстанавливаться после эпидемии, и такие аномалии, касающиеся присутствия на рабочих местах, мы видим в собственных филиалах по всему миру. Например, в Китае 81% наших сотрудников присутствуют на рабочих местах три и более дней в неделю, тогда как в Австралии посещаемость офисов составляет всего 19% от того, что было до пандемии.

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

В этой статье основные моменты.

Люди

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

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

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

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

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

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

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

Места

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

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

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

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

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

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

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

Процессы

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

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

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

Microsoft,сосредоточена на трех направлениях. Во-первых, мы выводим всех сотрудников из корпоративных сетей и опираемся на использование Интернета. Такой подход снижает риск заражения и позволяет сотрудникам работать одинаково из дома и офиса.

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

В-третьих, для обеспечения безопасности устройств управление всеми корпоративными ресурсами будет построено так, чтобы доступ был защищенным и надежным. Независимо от того, где находятся сотрудники дома или в офисе, мы будем требовать, чтобы каждое мобильное устройство, которому необходим доступ к корпоративным ресурсам, было управляемым. Это включает развертывание Microsoft Defender for Endpoint в масштабах всей компании.

**

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

Подробнее об этом можно узнать вблоге, который ведет корпоративный вице-президент по современным методам работы Джаред Спатаро (на английском языке). Полное руководство читайте здесь:microsoft.com/hybridwork.

Подробнее..

Функция количества високосных дней в периоде

25.01.2021 12:19:59 | Автор: admin

Предыстория

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

Описание проблемы

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

Причина 1

Большинство стран живут по Григорианскому календарю, правила високосных лет для которого были определены ещё 1582 году римским папой Григорием XIII:

1. Год, номер которого кратен 400, - високосный;

2. Остальные годы, номер которых кратен 100, - невисокосные (например, годы 1700, 1800, 1900, 2100, 2200,2300)

3. Остальные годы, номер которых кратен 4, - високосные.

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

Причина 2

Пользовательская функция в Excel создаётся на языке VBA (Visual Basic for Applications). Несмотря на то, что интерпретатор данного языка встроен в MS Office, я обнаружил некоторые отличия в работе с датами.

Excel поддерживает две системы дат, так называемые системы 1900 и 1904. По умолчанию используется система 1900. Это означает, что число 1 введённое в ячейку соответствует 01 января 1900 года, 2 2 января и так далее.

В VBA есть функция CDate(expression), которая приводит к типу Date введённое значение. И если этой функции передать число 1, то она вернёт переменную типа Date с датой 31 декабря 1899 года. А вот для числа 60 функция CDate вернёт 28.02.1900, а то же значение введённое в ячейку будет отображать 29.02.1900 (хотя, конечно, 1900 год високосным не является). Далее, начиная с 01 марта 1900 года значения дат выравниваются.

Такое поведение Excel, давно известно компании Microsoft и было принято решение оставить как есть, нужно просто учитывать его. Поэтому и появилось второе ограничение минимальной даты периода 01 марта 1900 года.

Алгоритм решения

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

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

В каждом блоке год будет иметь свой индекс от 1 до 4 (например, 2021 год это 506-й блок, индекс в блоке 1)

Теперь мы можем разделить вычисление на 3 блока:

Високосных^{всего}_{дней} = В^{от начальной даты}_{дней до конца квартета} + В^{в промеж. квартетах}_{дней} + В^{с начала последнего квартера}_{до дня окончания}

В зависимости от года параметров и индексов квартетов формула расчёта количества дней високосного года будет следующей:

Если год начальной и конечной даты равны и год високосный:

В^{от начальной даты}_{до конца квартета}=Дата_{кон} - Дата_{нач}

Если год начальной даты невисокосный, а конечной високосный и индексы квартета начальной даты и конечной равны, то:

В^{от начальной даты}_{до конца квартета} = Дата_{кон} - 31 дек (Год_{дата кон} -1)

Если год начальной даты високосный, а конечной нет, то:

В^{от начальной даты}_{до конца квартета} = 31 дек Года_{дата нач}- Дата_{нач}

Ну и наконец, если год начальной даты невисокосный и конечной тоже, индексы квартетов разные и в текущем индексе квартета есть високосный год, то в 1-м квартете количество дней високосного года лежащего внутри периода будет 366 (так как невисокосные года квартета с 1 по 3, а вторая дата лежит в одном из следующих квартетов).

Выше указанная логика расчёта количества дней високосных лет для первого квартета реализована следующей функцией на VBA:

Функция високосных дней для первого квартета
Private Function first_quartet_leap_year_days(ByVal d_begin As Date, ByVal d_end As Date) As Long    Dim result As Long    result = 0        Dim year_diff As Long    Dim quartet_index_diff As Long        year_diff = year(d_end) - year(d_begin)    quartet_index_diff = quartet_index(year(d_end)) - quartet_index(year(d_begin))        If year_diff = 0 And is_year_leap(d_begin) Then        result = DateDiff("d", d_begin, d_end)        first_quartet_leap_year_days = result        Exit Function    End If        If quartet_index_diff = 0 Then            If is_year_leap(d_begin) Then            result = DateDiff("d", d_begin, CDate(DateSerial(year(d_begin), 12, 31)))            first_quartet_leap_year_days = result            Exit Function                End If                If is_year_leap(d_end) Then            result = DateDiff("d", CDate(DateSerial(year(d_end) - 1, 12, 31)), d_end)            first_quartet_leap_year_days = result            Exit Function        End If            Else            If is_year_leap(d_begin) Then            result = DateDiff("d", d_begin, CDate(DateSerial(year(d_begin), 12, 31)))            first_quartet_leap_year_days = result            Exit Function        Else                    If Not is_quartet_noleap(quartet_index(year(d_begin))) Then                result = 366                first_quartet_leap_year_days = result                Exit Function            End If                    End If            End If    first_quartet_leap_year_days = result    End Function

Если разница индексов квартетов начальной и конечной даты >0, то рассчитывается 3-й блок формулы "Количество високосных дней в последнем квартете".

Здесь формула только одна, где при условии, что год конечной даты високосный:

В^{с начала квартета}_{до даты окончания} = Дата_{кон} - 31 дек (Год_{даты окончания}-1)Функция високосных дней для последнего квартета
Private Function last_quartet_leap_year_days(ByVal d_begin As Date, ByVal d_end As Date) As Long        Dim result As Long    result = 0         Dim quartet_index_diff As Long           quartet_index_diff = quartet_index(year(d_end)) - quartet_index(year(d_begin))        If quartet_index_diff > 0 Then            If is_year_leap(d_end) Then            result = DateDiff("d", CDate(DateSerial(year(d_end) - 1, 12, 31)), d_end)        End If            End If             last_quartet_leap_year_days = result    End Function

Если разница индексов квартетов начальной и конечной даты >1, то рассчитывается 2-й блок формулы "Количество високосных дней в промежуточных квартетах".

В^{в промеж. квартетах}_{дней} = 366*K_{квартетов} - К_{полных 100 летий} + K_{полных 400 летий}

При этом К полных столетий означает разность индексов столетий между датами. Например 1999 индекс столетия 19, а 2001 20, таким образом разность столетий 1.

Аналогично и 400-летий.

Функция для расчёта високосных дней в промежуточных квартетах
Private Function middle_quartets_leap_year_days(ByVal d_begin As Date, ByVal d_end As Date) As Long        Dim quartet_count As Long        quartet_count = middle_quartets_count(d_begin, d_end)        If quartet_count = 0 Then            middle_quartets_leap_year_days = 0        Exit Function            End If        Dim q_begin, q_end As Long        q_begin = quartet_index(year(d_begin))    q_end = quartet_index(year(d_end)) - 1        Dim quot_25, quot_100 As Integer        quot_25 = WorksheetFunction.Quotient(q_end, 25) - WorksheetFunction.Quotient(q_begin, 25)    quot_100 = WorksheetFunction.Quotient(q_end, 100) - WorksheetFunction.Quotient(q_begin, 100)        Dim result As Long        result = (quartet_count - quot_25 + quot_100) * 366        middle_quartets_leap_year_days = result        End Function

Реализация функций

Функция вычисления високосных дней для периода:

Public Function LEAP_DAYS(ByVal val_begin As Long, ByVal val_end As Long, Optional count_first_day = 0, Optional count_last_day = 1) As Long        Dim d_begin, d_end As Date        count_first_day = IIf(count_first_day <> 0, 1, 0)    count_last_day = IIf(count_last_day <> 0, 1, 0)            d_begin = CDate(val_begin)    d_end = CDate(val_end)        Dim check_error As Variant    check_error = check_constrains(d_begin, d_end)        If IsError(check_error) Then        LEAP_DAYS = check_error        Exit Function    End If        Dim result As Long    result = 0        If is_year_leap(d_begin) And count_first_day = 1 Then result = result + 1    If is_year_leap(d_end) And count_last_day = 0 Then result = result - 1        result = result + first_quartet_leap_year_days(d_begin, d_end) _            + middle_quartets_leap_year_days(d_begin, d_end) _            + last_quartet_leap_year_days(d_begin, d_end)        LEAP_DAYS = result    End Function

В приведённом выше коде мы сначала приводим значения параметров count_first_day и count_last_day к значению 1 или 0. Затем мы объявляем переменные типа Date для даты начала и окончания периода и задаём значения. Далее следует проверка параметров на ограничения.

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

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

Заключение

Таким образом мы получили формулы расчёта количества дней високосных и невисокосных лет в заданном периоде, скорость которой не зависит от количества дней в периоде. Единственный минус это то, что формула способна корректно работать только в рамках одной тысячи лет (2900 - 1900). Думаю, что до 2900 года у нас есть ещё время усовершенствовать такую функцию.

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

Гитхаб

Источники и дополнительные ссылки

  1. Статья из журнала "Главная книга" "Считаем проценты по займу: день первый, день последний"

  2. Excel неправильно предполагает, что 1900 год является високосным годом.

  3. Статья из Википедии "Григорианский календарь"


Подробнее..

2 бесплатных обучающих вебинара по Office 365 в феврале

29.01.2021 10:18:54 | Автор: admin

Привет, Хабр! Сегодня по традиции делимся запланированными на февраль мероприятиями по Office 365. В этот раз их 2, и они по прежнему очень увлекательны, бесплатны и проходят на английском с субтитрами на русском. Заглядывайте под кат и регистрируйтесь. Ждем вас на вебинарах.

1. Microsoft 365 Virtual Training Days: организация удаленной работы с помощью Microsoft Teams

4 и 5 февраля, на английском с субтитрами на русском.

Приглашаем вас посетить мероприятие: Microsoft 365 Virtual Training Days: организация удаленной работы с помощью Microsoft Teams

Чтобы ваши коллеги могли эффективно работать удаленно, им необходима возможность безопасно взаимодействовать в любом месте. На мероприятии Microsoft 365 Virtual Training Days: организация удаленной работы с помощью Microsoft Teams вы узнаете, как обеспечивать удаленных сотрудников инструментами, ресурсами и решениями, которые необходимы им, чтобы оставаться на связи и сохранять продуктивность. Узнайте, как реализовать весь потенциал онлайн-собраний, звонков, видео и чатов Microsoft Teams, а также предоставить коллегам возможность работать с любого устройства и откуда угодно.

Узнайте, как:

  • предоставить сотрудникам возможность встречаться и работать дома;

  • сделать приложения для повышения производительности доступными на любом устройстве;

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

Подробности и регистрация.

2. Построение интеграции и рабочих процессов Microsoft Teams

18 и 19 февраля, на английском с субтитрами на русском.

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

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

Во время этого тренинга, состоящего из двух частей, вы узнаете, как:

  • Создавать современные решения для совместной работы корпоративного уровня с Microsoft Teams

  • Преобразовывать повседневные бизнес-процессы с помощью интеграции платформы Microsoft 365 для Power Platform, SharePoint и Microsoft Office

  • Использовать множество данных в Microsoft Graph для расширения возможностей Microsoft 365 и создания уникальных интеллектуальных приложений.

Подробности и регистрация.

Подробнее..

2 февральских вебинара по созданию бизнес-приложений

04.02.2021 10:09:11 | Автор: admin

Ранее в течение последней недели мы уже рассказывали о февральских мероприятиях по Microsoft 365 и Azure, а теперь пришло время статьи про мероприятия по созданию бизнес-приложений. В феврале их будет 2, оба про основы наших сервисов. Кстати, важный момент: после завершения каждого из этих вебинаров вы сможете бесплатно сдать профильные экзамены и получить сертификации. Присоединяйтесь!

1. Основы Microsoft Power Platform

10 февраля, на английском с субтитрами на русском.

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

Во время этого учебного мероприятия вы узнаете, как:

  • Подготовиться к сертификационному экзамену по основам Microsoft Power Platform

  • Создавать инновационные бизнес-решения и управлять ими с помощью Power Platform

  • Легко подключать все свои данные для анализа эффективности бизнеса с помощью специализированных приложений

  • Автоматизировать рабочие процессы для улучшения повседневных процессов независимо от ваших технических знаний

После завершения этого бесплатного обучения вы сможете бесплатно сдать сертификационный экзамен по основам Microsoft Power Platform.

Подробности и регистрация.

2. Основы Microsoft Dynamics 365

24 и 25 февраля, на английском с субтитрами на русском.

Получите навыки, необходимые для того, чтобы помочь вашей организации продавать, обслуживать и соответствовать ожиданиям клиентов на "Microsoft Dynamics 365 Virtual Training Day: Fundamentals". Во время этого бесплатного мероприятия, состоящего из двух частей, вы узнаете, как Dynamics 365 может помочь повысить эффективность, стимулируя инновации и поддерживая индивидуальный подход как для сотрудников, так и для клиентов. С помощью этих инструментов создание комплексной бизнес-платформы, выходящей за рамки управления взаимоотношениями с клиентами (CRM) и планирования ресурсов предприятия (ERP), никогда не было таким простым. Откройте для себя новые возможности масштабирования, более умные связи и используйте встроенный интеллект для более глубокого понимания каждой функциональной области вашего бизнеса, независимо от того, работаете ли вы удаленно или в офисе.

Во время этого учебного мероприятия вы узнаете, как:

  • Подготовиться к сертификационному экзамену по основам Microsoft Dynamics 365

  • Создать единую комплексную платформу для своего бизнеса, которая работает так же удаленно, как и в офисе

  • Использовать приложения на основе моделей для повышения эффективности масштабирования

  • Поддерживать индивидуальный подход как для сотрудников, так и для клиентов.

После прохождения этого бесплатного обучения вы сможете бесплатно сдать сертификационный экзамен по основам Microsoft Dynamics 365.

Подробности и регистрация.

Подробнее..

Microsoft Viva новая платформа для вовлечения и взаимодействия сотрудников

11.02.2021 10:09:47 | Автор: admin

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

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

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

Microsoft Viva при помощи Teams и Microsoft 365 объединяет инструменты для создания эффективной рабочей среды по четырем показателям: вовлеченность, улучшение эмоционального состояния, обучение и обмен знаниями.

Microsoft Viva состоит из нескольких модулей:

  • Viva Connectionsпредставляет собой персонализированное цифровое рабочее место, позволяющее сотруднику осуществлять внутренние коммуникации и получить доступ к ресурсам компании, таким как сборник внутренних политик, новости и т.д., а также корпоративным сообществам. Все это будет доступно в рамках настраиваемого приложения в Microsoft Teams. Приложение Connections для ПК появится для предварительного публичного тестирования в первой половине 2021 года, а мобильное приложение до конца 2021 года.

  • Viva Insightsпоможет сотрудникам грамотнее планировать свое время, распределяя его на периоды для работы, требующей концентрации, обучения и перерывов, что позволит снизить риск эмоционального выгорания. Менеджеры получат рекомендации для создания здоровой и успешной команды, а руководители инструмент для построения эффективных организационных моделей и отслеживания тенденций. Это позволит не только улучшить сплоченность команд, но и, например, эффективнее планировать офисные пространства для гибридной работы. Клиенты также смогут использовать данные сторонних сервисов, таких как Zoom, Workday и SAP SuccessFactors.

  • VivaLearningделает возможности обучения и профессионального развития более открытыми и доступными в процессе работы. Она объединяет все учебные ресурсы, доступные для компании, в одном месте, включая контент от Microsoft Learn, курсы от сторонних провайдеров, включая Skillsoft, Coursera, Pluralsight и edX, а также собственную библиотеку контента организации.

  • Viva Topicsпредставляет собой инструмент, дающий возможность удобно находить необходимую информацию и связаться с экспертами по всей компании. Решение использует алгоритмы искусственного интеллекта для автоматической организации общекорпоративного контента и экспертизы по категориям, таким как проекты, продукты, процессы и клиенты. Viva Topics автоматически создает карточки с темами, когда сотрудники работают в таких приложениях, как М365 и Teams, в которых объединяется информация о документах, видео и связанных с темой экспертах. Также предусмотрена возможность интеграции информации из различных сторонних сервисов, таких как ServiceNow и Salesforce.

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

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

Полная информация о решении доступна намини-сайте.

Подробнее..

Бесплатные обучающие мероприятия по Microsoft 365 в марте

05.03.2021 10:06:07 | Автор: admin

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

1. Безопасность и защита вашей организации

11-12 марта, на английском с субтитрами на русском

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

Во время этого учебного мероприятия вы узнаете, как:

  • Создавать синхронизацию, защиту и управление идентификационной информацией

  • Использовать безопасность в Microsoft 365

  • Интегрировать планы безопасности облачных приложений и управления устройствами.

Подробности и регистрация.

2. Построение интеграций и рабочих процессов Microsoft Teams

18-19 марта, на английском с субтитрами на русском

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

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

Во время этого тренинга, состоящего из двух частей, вы узнаете, как:

  • Создавать современные решения для совместной работы корпоративного уровня с Microsoft Teams

  • Преобразовывать повседневные бизнес-процессы с помощью интеграции платформы Microsoft 365 для Power Platform, SharePoint и Microsoft Office

  • Использовать множество данных в Microsoft Graph для расширения возможностей Microsoft 365 и создания уникальных интеллектуальных приложений

Подробности и регистрация.

Подробнее..

А я говорю, возьми Excel и позвони

01.04.2021 14:11:52 | Автор: admin

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

Но в современном мире иметь API недостаточно мало кто хочет формировать HTTP-запросы, передавать параметры, думать про правильную авторизацию. Поэтому мы предлагаем SDK для разных языков программирования: Python, PHP, C# и многих других. И кажется, что этого достаточно, чтобы сделать нашу платформу лёгкой в использовании для очень большой аудитории. Или всё-таки недостаточно?

Обратимся к статистике. По разным данным сейчас в мире насчитывается где-то 15-30 миллионов разработчиков цифра несомненно впечатляющая. Но, например, пользователей MS Excel в мире не менее 100 миллионов. Почему же они должны страдать? Ведь, будем честны, почти каждый из тех, кто хоть раз открывал Excel, явно ощущал недостаток возможностей по управлению коммуникационными платформами в этом без сомнения очень гибком программном продукте. Практически каждый день мы получаем на наш email сотни запросов, которые сводятся к очень простой просьбе: Я хочу звонить из Excel!. Однажды у окон нашего офиса даже выстроились люди с такими требованиями (видели фото выше?) Мы просто не могли оставаться в стороне.

Однако звонки это всё-таки слишком революционно, а главное, потребует установки дополнительных ActiveX-компонентов, что, безусловно, противоречит всем существующим и несуществующим политикам информационной безопасности, поэтому давайте начнём с более простой вещи SDK для работы с нашим API. Из средств разработки в Экселе доступен VBA, для него мы и создадим SDK.

Для того, чтобы выполнить API-запрос, необходимо:

  1. Сформировать URL и тело POST-запроса.

  2. Добавить аутентификационные параметры.

  3. Непосредственно выполнить запрос.

  4. Распарсить результат (в нашем случае это JSON).

Формируем URL и тело POST-запроса

Первая часть, казалось бы, самая простая: нужно просто закодировать параметры в URL-кодировку и склеить их. Но в стандартом VBA не предусмотрена URL-кодировка (позже мы поймём, почему). Ничего страшного, на просторах Интернета есть множество разных решений, выберем одно из них.

Public Function URL_Encode(ByRef txt As String) As String    Dim buffer As String, i As Long, c As Long, n As Long    buffer = String$(Len(txt) * 12, "%")     For i = 1 To Len(txt)        c = AscW(Mid$(txt, i, 1)) And 65535         Select Case c            Case 48 To 57, 65 To 90, 97 To 122, 45, 46, 95  ' Unescaped 0-9A-Za-z-._ '                n = n + 1                Mid$(buffer, n) = ChrW(c)            Case Is <= 127            ' Escaped UTF-8 1 bytes U+0000 to U+007F '                n = n + 3                Mid$(buffer, n - 1) = Right$(Hex$(256 + c), 2)            Case Is <= 2047           ' Escaped UTF-8 2 bytes U+0080 to U+07FF '                n = n + 6                Mid$(buffer, n - 4) = Hex$(192 + (c \ 64))                Mid$(buffer, n - 1) = Hex$(128 + (c Mod 64))            Case 55296 To 57343       ' Escaped UTF-8 4 bytes U+010000 to U+10FFFF '                i = i + 1                c = 65536 + (c Mod 1024) * 1024 + (AscW(Mid$(txt, i, 1)) And 1023)                n = n + 12                Mid$(buffer, n - 10) = Hex$(240 + (c \ 262144))                Mid$(buffer, n - 7) = Hex$(128 + ((c \ 4096) Mod 64))                Mid$(buffer, n - 4) = Hex$(128 + ((c \ 64) Mod 64))                Mid$(buffer, n - 1) = Hex$(128 + (c Mod 64))            Case Else                 ' Escaped UTF-8 3 bytes U+0800 to U+FFFF '                n = n + 9                Mid$(buffer, n - 7) = Hex$(224 + (c \ 4096))                Mid$(buffer, n - 4) = Hex$(128 + ((c \ 64) Mod 64))                Mid$(buffer, n - 1) = Hex$(128 + (c Mod 64))        End Select    Next    URL_Encode = Left$(buffer, n)End Function

Следующий нюанс передача даты и времени. В API Voximplant временные метки принимаются в UTC в формате YYYY-MM-DD hh:mm:ss. В Excel же дата и время хранятся без учёта часового пояса (на самом деле, в самой таблице они вообще хранятся как число с плавающей точкой). Поэтому нам придётся принимать дату/время из таблицы тоже UTC. Мы думаем, что все 100+ миллионов пользователей Excel знают, что такое UTC, и это не вызовет у них никаких вопросов.

Кстати, в VBA есть функция форматирования даты, и она даже работает, но весьма необычным образом. Интересующий нас формат даты описывается так: yyyy-mm-dd hh:mm:ss. То есть mm это либо месяц, либо минуты в зависимости от того, за чем оно следует: за hhили за yyyy (это не шутка, это даже в MSDN описано). В общем, если кто-то захочет вывести время без часов, придётся импровизировать.

Переходим к аутентификации

Здесь нас ожидает самое большое разочарование. Мы в Voximplant предлагаем нашим клиентам использовать JWT, что, конечно, весьма мудрёно, если выполнять запросы из консоли или браузера, но при использовании наших SDK это совершенно никак не усложняет жизнь разработчику. В то же время JWT обеспечивает крайне высокий уровень безопасности.

А что же VBA? К сожалению, разумно простого способа сформировать JWT-подпись просто не существует. Причина в том, что в VBA доступен фреймворк .NET версии 4.x, а функция RSA.ImportPkcs8PrivateKey, необходимая для загрузки приватного ключа из PKCS8, появилась только в .NET 5. Да и вообще, все .NET-разработчики используют для таких задач сторонние библиотеки.

Поэтому нам придётся ограничиться авторизацией с помощью статического API-ключа. Ведь, как известно, один из способов обработки риска информационной безопасности - принятие этого риска. Так и поступим. Ведь нам ну очень-очень нужен этот SDK.

Кадр из кинофильма Большой Лебовски (The Big Lebowski (1998), Polygram Filmed Entertainment, Working Title Films)Кадр из кинофильма Большой Лебовски (The Big Lebowski (1998), Polygram Filmed Entertainment, Working Title Films)

Выполняем запрос

Переходим к третьей части к выполнению самого запроса. Встроенных средств работы с HTTP в VBA нет (теперь понятно, почему нет и функции URL-кодирования, а зачем?).

Но, тем не менее, это достаточно тривиальная манипуляция подключаем необходимый фреймворк MSXML 6.0 и Microsoft Scripting Runtime и выполняем запрос, подключая через COM сам MSXML. Просто!

Function makeRequest(name As String, params As Dictionary, accountId As Integer, apiKey As String) As Object    Dim objHTTP As New MSXML2.XMLHTTP60    Dim jsonData As String    Dim parsedJson As Object    Dim postString As String    postString = ""        Dim iterKey As Variant        For Each iterKey In params.Keys        postString = postString & "&" & iterKey & "=" & URL_Encode(params(iterKey))    Next    Url = "https://api.voximplant.com/platform_api/" + name    objHTTP.Open "POST", Url, False    objHTTP.send "account_id=" & accountId & "&api_key=" & apiKey & postString    jsonData = objHTTP.responseText    Set parsedJson = JsonConverter.ParseJson(jsonData)    Set makeRequest = parsedJsonEnd Function

Парсим JSON

Ну и, наконец, JSON. Как и всё остальное, парсер JSON надо искать где-то вовне экосистемы VBA. К счастью, на дворе 2021 год, есть GitHub, и кто-то уже озадачился созданием JSON-парсера для VBA. Мы взяли вот такой.

Он подключается как отдельный модуль и превращает JSON-строку в Dictionary. То, что нужно!

Дальше берём генератор одного из наших SDK (мы взяли питоновский), заменяем шаблоны и заставляем его генерировать код на VBA. В итоге получаем готовый SDK, который можно скачать на нашем GitHub.

SDK представляет собой Class Module, который можно подключить к вашей любимой книге в Excel и делать с его помощью разные странные вещи. В принципе, можно даже звонки запускать, SDK поддерживает все необходимые для этого функции API в). Но это будет не лучшей идеей, учитывая, что не до конца известно, когда Excel решит пересчитать все формулы (именно в этот момент произойдёт вызов функции API).

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

Для этого пишем вот такую функцию:

Function getTotalCallCost(FromDate, ToDate, Username) As Double    Dim totalCost As Double    Dim lastCount As Integer    Dim offset As Integer    Dim res As Dictionary    Dim RecordsPerRequest As Integer    Dim api As New VoximplantAPI    totalCost = 0    lastCount = 1    offset = 0    RecordsPerRequest = 100        'Pass Voximplant account id and API key    api.SetCredentials 100, "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"        Do While lastCount > 0        Set res = api.GetCallHistory(FromDate, ToDate, remote_number:=Username, with_calls:=True, with_records:=True, with_other_resources:=True, offset:=offset, count:=RecordsPerRequest)                Dim session As Variant        Dim item As Variant                For Each session In res("result")            For Each item In session("calls")                totalCost = totalCost + item("cost")            Next            For Each item In session("records")                totalCost = totalCost + item("cost")            Next            For Each item In session("other_resource_usage")                totalCost = totalCost + item("cost")            Next        Next                lastCount = res("count")        offset = offset + RecordsPerRequest    Loop        getTotalCallCost = totalCostEnd Function

И вызываем её следующим образом:

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


Резюме:

При желании можно и для VBA сделать какое-то подобие SDK. При его создании не пострадал ни один разработчик. Ах да, с 1 апреля! :D

Подробнее..

Бесплатные вебинары апреля по созданию бизнес-приложений

08.04.2021 18:23:51 | Автор: admin

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

1. Microsoft Power Platform: Основы

14 апреля14 апреля

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

Во время этого учебного мероприятия вы узнаете, как:

  • Подготовиться к сертификационному экзамену по основам Microsoft Power Platform

  • Создавать инновационные бизнес-решения и управлять ими с помощью Power Platform

  • Легко подключать все свои данные для анализа эффективности бизнеса с помощью специально созданных приложений

  • Автоматизировать рабочие процессы для улучшения повседневных процессов, независимо от ваших технических знаний

После прохождения этого бесплатного обучения вы сможете бесплатно сдать сертификационный экзамен по основам Microsoft Power Platform.

Подробности и регистрация.

2. Microsoft Power Platform: Конструктор Приложений (App Maker)

21 апреля21 апреля

Развивайте свой технический опыт и расширяйте свои методы работы с low-code на виртуальном учебном дне "Microsoft Power Platform: Конструктор приложений (App Maker)". Это бесплатное обучение поможет вам лучше разрабатывать, создавать, внедрять и управлять более разумными бизнес-решениями. Присоединяйтесь к нам, чтобы изучить инновационные стратегии для улучшения ваших базовых методов моделирования данных, дизайна взаимодействия с пользователем, а также анализа процессов и требований. Получите возможность максимально эффективно использовать Power Platform - и сразу же научитесь упрощать, автоматизировать и преобразовывать свои бизнес-процессы.

Во время этого учебного мероприятия вы узнаете, как:

  • Создавать приложение на основе модели в PowerApps

  • Автоматизировать рабочие процессы с помощью Power Automate

  • Использовать AI Builder в Power Automate для улучшения ваших процессов

Подробности и регистрация.

3. Microsoft Dynamics 365: Построение устойчивой цепочки поставок

28 апреля28 апреля

Будьте впереди в сегодняшнем цифровом ландшафте с инструментами и обучением, чтобы быстро адаптироваться к сбоям и обеспечить непрерывность бизнеса. Виртуальный учебный день "Microsoft Dynamics 365: создание устойчивой цепочки поставок" знакомит вас с Dynamics 365 Supply Chain Management, упреждающим управлением активами, Dynamics 365 Commerce и многим другим. Это мероприятие разработано, чтобы помочь вам поддерживать непрерывную видимость и подготовить вашу организацию к тому, что будет в будущем.

Во время этого учебного мероприятия вы узнаете, как:

  • Оптимизировать свои процессы с помощью интеллектуальных цепочек поставок и упреждающего управления активами

  • Улучшить свои розничные операции с Dynamics 365 Commerce

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

Подробности и регистрация.

Подробнее..

21 мероприятия июня по профессиональной работе с Microsoft Teams

28.05.2021 10:14:13 | Автор: admin

В этой ежемесячной подборке я расскажу вам о трех наших мероприятиях, которые помогут вам профессионально настроить работу в Microsoft Teams (как собственную, так и всех в вашей компании). Один из эвентов на английском с субтитрами русском, 2 других полностью на русском. Присоединяйтесь!

1. Организация удаленной работы с помощью Microsoft Teams

3-4 июня, на русском3-4 июня, на русском

Чтобы ваш персонал мог эффективно работать удаленно, необходима возможность безопасно взаимодействовать в любом месте. На мероприятии День виртуального обучения Microsoft 365: организация удаленной работы с помощью Microsoft Teams вы узнаете, как обеспечивать удаленный персонал инструментами, ресурсами и решениями, которые необходимы им, чтобы оставаться на связи и сохранять продуктивность.

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

Во время обучения вы узнаете, как:

  • Предоставьте персоналу возможность встречаться и работать дома

  • Сделайте приложения для повышения производительности доступными на любом устройстве

  • организовать первоклассное удаленное взаимодействие с пользователями

Подробности и регистрация.

2. Microsoft Developers Meetup

16 июня, на русском16 июня, на русском

Приглашаем Вас принять участие в онлайн мероприятии Microsoft Developers Meetup, посвященное технологиям в области процессов разработки и сопровождения ПО.

На мероприятии вы узнаете от лучших экспертов в области разработки о том, какие технологии предлагает GitHub и Microsoft для разработчиков и DevOpsa. Специалисты и архитекторы Microsoft покажут, как размещать в Azure приложения с использованием контейнеров, а также какие возможности имеет предлагает GitHub для обеспечения безопасной и эффективной работы команд.

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

Программа

10:00 - 10:10

Opening

10:10 - 10:30

Microsoft Dev platform roadmap and Build news Microsoft

10:30 - 11:00

AppDev on Azure + Industry case DataArt

11:00 - 11:30

GitHub news and roadmap Microsoft

11:30 - 12:00

DevOps with GitHub Actions + Industry case Softline

12:00 - 12:30

Secure DevOps and Supply chain + build updates Microsoft

12:30 - 13:00

Secure Development on Azure + Industry case AwaraIT

Подробности и регистрация.

3. Построение интеграции и рабочих процессов Microsoft Teams

17-18 июня, на английском с субтитрами на русском17-18 июня, на английском с субтитрами на русском

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

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

Во время этого тренинга, состоящего из двух частей:

  • Создавайте современные решения для совместной работы корпоративного уровня с Microsoft Teams

  • Преобразуйте повседневные бизнес-процессы с помощью интеграции платформы Microsoft 365 для Power Platform, SharePoint и Microsoft Office

  • Используйте множество данных в Microsoft Graph для расширения возможностей Microsoft 365 и создания уникальных интеллектуальных приложений.

Подробности и регистрация.

Подробнее..

Перевод Microsoft Excel революционный игровой 3D-движок?

25.01.2021 12:19:59 | Автор: admin
image

Введение


В самых передовых компьютерных играх используются различные графические подсистемы так называемые трёхмерные графические движки. Играм и специалистам этой отрасли хорошо известны Source (Half Life 2), Unreal Engine (Unreal Tournament), idTech 4 (Doom 3), CryENGINE2 (Crysis) и Paradox [прим. пер.: оригинал статьи написан в 2008 году].

Настало время узнать имя нового 3D-движка: Microsoft Excel.

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

В этой статье я продемонстрирую арифметические возможности Excel, встроенные подсистемы рендеринга (их целых две!) и революционный подход, который может привести к сдвигу парадигмы. Надеюсь, статья позволит вам узнать, что Excel эффективно и оптимально сочетает в себе практичность, кучу возможностей, многоплатформенность и высокую производительность с уникальными и футуристичными функциями 3D-движка.

В разделах статьи даже представлены демо-программы и фильмы, созданные при помощи 3D-движка Excel.

Предупреждение: только для уверенных в себе специалистов!

Арифметические возможности


Возможно, стоит начать хотя бы с демонстрации арифметических функций Excel. Базовые функции для манипуляций с 3D-объектами (т.е. четыре арифметических правила, тригонометрические функции, алгебра матриц) являются сутью Excel, но их стоит изучить из-за их несравненной компактности и величественного изящества, благодаря которым Excel доминирует в отрасли современных 3D-движков.

Компактность


Немногие игровые движки способны решать всю 3D-арифметику в рамках половины экрана. В верхней части Рисунка 1 находится пространственный сдвиг, поворот вокруг осей X, Y, Z и перспективная проекция. Как мы увидим в демо-приложениях, вычисления видимости, Z-буферизации и отражений занимают на экране почти столько же места.


Рисунок 1: фундамент 3D-движка

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

  1. Параметры перспективной проекции
  2. 3D-координаты точек объектов (относительно их центра)
  3. Матрица сдвига и поворота (подробнее об этом почитать можно, например, здесь)
  4. Параметры поворота
  5. Абсолютные 3D-координаты точек после сдвига и поворота
  6. 2D-координаты точек после вычисления перспективной проекции
  7. Экранные координаты точек
  8. Конечные точки граней объектов
  9. Формула элемента в матрице сдвига и поворота. Здесь чётко видны простота и компактность.

Изящество


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

Рендеринг


Разработчики могут выбрать одну из двух подсистем рендеринга:

  1. Нативную Excel Cell Graphics (ECG)
  2. Office-level Graphics Abstraction Layer (OGAL)

Нативная Excel Cell Graphics


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

Лист = экран движка

Ячейки = пиксели

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

Отбросим неприязнь и рассмотрим особенности ECG:

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


Рисунок 2: стандартный пиксель Excel


Рисунок 3: раскрашенные пиксели с изменённым размером

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


Рисунок 4: размер пикселей можно задавать для каждой строки

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

Большинство пользователей даже не осознаёт что это пиксели, и видит только поля для ввода данных!


Рисунок 5: рендеринг без линий сетки


Рисунок 6: рендеринг с линиями сетки

  • При необходимости можно использовать линии сетки субпиксельного размера. Это очень полезная функция, если строки и столбцы имеют разные размеры. На Рисунках 5 и 6 показаны разные режимы линий сетки.
  • Цвет пикселей можно задавать 24 битами.
  • Разрешение экрана 255x65535, что даёт уникально высокое разрешение в 16,7 мегапикселей, которого не найти в других 3D-движках.
  • Потрясающее соотношение сторон 1:256, которое при помощи функций Скрыть/Показать можно изменить на 4:4, 16:9 или любое другое произвольное соотношение.
  • 255 экранов в приложении, то есть вместе можно использовать не обычные два, а гораздо больше экранных буферов.
  • Встроенная функция зума, позволяющая по желанию увеличивать и уменьшать пиксели.

Можно сказать, что нативная Excel Cell Graphics обгоняет своё время и предоставляет множество уникальных и несравненных возможностей, недостижимых в других 3D-движках: пиксели переменного размера, произвольное изменяемое соотношение сторон, разрешение 16,7 мегапикселя, включаемый субпиксельный размер линий сетки.

На рисунке ниже (Рисунок 7) можно увидеть движок в действии (с отрендеренными линиями сетки). Запустить демо можно, скачав наши файлы примеров движка Excel (при запросе Excel включите макрос), нажав клавиши ALT+F8 и запустив ECG_Demo.


Рисунок 7: движок в действии (с подсистемой рендеринга ECG)

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



Office-level Graphics Abstraction Layer


Если вам не нужны продвинутые функции ECG типа пикселей переменного размера и изменяемого соотношения сторон, то можно выбрать ещё одну подсистему рендеринга Excel Office-level Graphics Abstraction Layer (слой абстракции графики офисного уровня).

OGAL предоставляет дополнительные возможности (отрисовка полигонов, заливка и т.д.), более высокую производительность и совместимость с другими приложениями из пакета MS Office. Эта совместимость может быть чрезвычайно полезной, если 3D-приложение нужно портировать, например, в Word.

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

Эта особенность позволяет запускать OGAL и ECG рядом друг с другом или отображать фоновые вычисления и их результаты на одном экране, что помогает процессу отладки. Скриншот запущенной подсистемы OGAL показан ниже (Рисунок 8).

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


Рисунок 8: движок в действии (с Office-level Graphics Abstraction Layer)

Типичным примером превосходства подсистемы OGAL является наличие полигонов: в то время как существующие 3D-движки работают только с треугольниками, OGAL поддерживает и другие виды многоугольников (четырёхугольники, пятиугольники и т.п.).

Отдельный фоновый буфер не требуется, потому что им занимается OGAL. Цвета можно задавать в обычном 24-битном формате, а подсистема также предоставляет дополнительный альфа-канал для прозрачности. Демонстрационный файл тоже можно найти в наших файлах примеров движка Excel. Видео для тех, кто боится выполнения в реальном времени:


Предупреждение: только для очень уверенных в себе специалистов!

Сдвиг парадигмы


Последовательность естественным образом влияет на существующую парадигму программирования. Её можно встретить повсюду: день за днём тысячи программистов пишут свои алгоритмы строка за строкой, создают исполняемые файлы шаг за шагом (в соответствии с makefile), отлаживают исполняемые файлы команда за командой.

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

Примечание: не стоит недооценивать силу привычек! Скорее всего, сейчас вы пользуйтесь клавиатурной раскладкой QWERTY, которая намеренно сделана наиболее неудобной!

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

Такова сила привычки.

(Дополнительную информацию можно прочитать здесь)

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

  • Нетрадиционный исходный код
  • Непоследовательная отладка
  • Мгновенная обратная связь (без последовательного процесса сборки)

Нетрадиционный исходный код


Традиционно принято, что исходный код (и закодированные им алгоритмы), обрабатываемый современными инструментами разработки, требует последовательного считывания и интерпретации сверху вниз. На рисунке 9 показана последовательная интерпретация сверху вниз.


Рисунок 9: традиционный исходный код с интерпретацией сверху вниз

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

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

Это означает, что алгоритмы можно кодировать горизонтально (см. рисунок 1, где этапы 3D-сдвига интерпретируются слева направо), или снизу вверх, или даже в форме Г-образного хода коня. Excel не принуждает вас использовать традиционный последовательный кодинг, а потому обеспечивает программистам дополнительную степень свободы.

Можно сказать, что Excel открывает совершенно новые измерения для представления алгоритмов. Мы даже не можем увидеть границ этих новых возможностей! Скоро мы сможем не измерять не только длину исходного кода (см. SLOC), но и ширину (чем дополнятся значения SLOC?). Более того, это может открыть путь для n-мерного исходного кода, и мы сможем говорить ещё и о глубине или высоте исходного кода.

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

Ссылки на ячейки позволяют программисту проверить, какие ещё данные влияют на выбранную переменную (например, на рисунке 10 показано, что матрица 3D-сдвига определяется косинусом углов поворота X и Y), а также увидеть, на какие ещё переменные влияют выбранные данные (например, выбранная матрица сдвига влияет на все 3D-значения). При необходимости цепочку заданных в алгоритмах воздействий можно показать в обоих направлениях.


Рисунок 10: Ссылки на ячейки позволяют просматривать зависимости

Непоследовательная отладка


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

Они могут использовать полезные инструменты (контрольные точки, step in/step out, и т.п.) для ускорения процесса и повышения его удобства, но в парадигму программирования встроена последовательность, и она замедляет процесс отладки.

И напротив, функция Autocalc (Автовычисление) в Excel демонстрирует развёрнутое выполнение алгоритмов, а её воздействие на всех этапах на все переменные можно мгновенно увидеть без пошаговой отладки. Эта функция значительно снижает затраты времени и повышает продуктивность программистов.

Мгновенная обратная связь


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

В обычной ситуации программисту приходится

  1. Сохранять изменения
  2. Компилировать сохранённые файлы
  3. Компоновать скомпилированные файлы
  4. Запускать исполняемый файл вводом в командную строку, нажатием на иконку или запуском браузера и вводом URL, и т.п.

и получать результат только после всех этих шагов.

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

Мы настолько привыкли к этому процессу, что даже не ожидаем, что он может быть проще.

Неудивительно, что Excel порывает с этим рабочим процессом и опять-таки использует революционный подход. Благодаря его функции Autocalc редактор, компилятор, компоновщик и среда выполнения интегрированы на столь высоком уровне, что он несравним с остальными инструментами.

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

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

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

Заключение


Объединение компьютерных игр и электронных таблиц в процессе эволюции компьютерных технологий увеличивалось.

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

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

Получится ли сэкономить, отказавшись от Microsoft Office?

16.04.2021 14:07:36 | Автор: admin


Так или иначе, свободное программное обеспечение всегда конкурирует с проприетарным, явно или скрыто. Даже если сами авторы свободных программ не противопоставляют их закрытому софту, конкуренция идет в головах пользователей, которые выбирают платные программы или их бесплатные аналоги. Не один десяток лет с переменным успехом идут горячие баталии между сторонниками открытого и закрытого программного обеспечения: Linux против Windows, Gimp против Photoshop и, конечно же, OpenOffice/Libreoffice против Microsoft Office.

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

Немного истории


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

OpenOffice имеет древнего предшественника StarOffice. Он был выпущен в 1985 году компанией Star Division, основанной немецким подростком Марко Беррисом, когда ему было всего 16 лет. Стив Джобс и Билл Гейтс были гораздо старше, когда они основали свои империи! Естественно, силы были неравны, потому что в 1990 году Microsoft была уже крупной и успешной компанией. Сразу после выпуска Windows 3.0 одна только недельная прибыль составила больше 100 000 долларов. Глобально конкурировать с гигантом Билла Гейтса было нереально, но в 1997 году на своей родине продукт Марко завоевал четверть рынка офисного программного обеспечения за счет меньшей цены (Word и Excel тогда стоили примерно по 50 долларов).

Забавный факт: до того, как офисный пакет Microsoft Word стал доминирующим на рынке, в конце 80-х и начале 90-х самым популярным был WordPerfect, и цена на него была около 150 долларов. Конкуренция положительно сказывается на ценах, пока какая-нибудь компания не добивается монополии.

На волне успеха, в 1998 году, Марк делает офисный пакет бесплатным для личных целей, а через год продает свою компанию Sun Microsystems, которая в свою очередь делает StarOffice бесплатным, но уже и для коммерческого использования. В 2000 году был открыт исходный код офисного пакета, и началась история проекта OpenOffice.org. В 2010 году Sun Microsystems была поглощена Oracle, а немного позднее из-за разногласий в политике управления проект разделился на OpenOffice, который берет под крыло фонд Apache, и LibreOffice, развиваемый The Document Foundation. Различия в этих пакетах не настолько велики, как между ними обоими и Microsoft, поэтому дальше речь пойдет преимущественно про OpenOffice.

Microsoft всегда славилась агрессивной политикой продвижения своих продуктов. Огромное количество денег позволяло сильно демпинговать на рынке программного обеспечения и разорять конкурентов. Кроме того, софтверный гигант никогда не стеснялся грязной игры, их торговые представители щедро раздавали взятки и откаты чиновникам, которые принимали решения о внедрении программных продуктов в частных компаниях и государственных организациях. Ответственные лица закупали программные продукты у Microsoft со скидками до 30%, а государству продавали уже по полной цене, прикарманивая разницу. Ходят слухи, что в МТС в 2012 году не просто так стали рекламировать Windows Phone вместо iPhone. В 2013 году разразился скандал: Microsoft взятками продвигала свое программное обеспечение в России, Пакистане, Китае и странах Восточной Европы. До суда дело снова не дошло, но шум был поднят изрядный. Подавляющее большинство подобных нарушений не получается довести до суда, потому что богатая компания успевает обрубить хвосты и подчистить за собой грязь, но в 2019 году ей пришлось выплатить 25 миллионов долларов за досудебное урегулирование дела о коррупции.

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

Проблемы совместимости, постепенная эволюция


Исходя из сказанного выше, становится понятно, что, если программный пакет позиционируется как конкурент Microsoft Office, ему, волей-неволей, придется обеспечивать совместимость с документами Microsoft, иначе им никто не будет пользоваться. Но в пакете Microsoft Office используется проприетарные форматы файлов. Вплоть до 2008 года, когда под давлением ISO Microsoft была вынуждена открыть форматы своих файлов на условиях FRAND, сторонние офисные программы были вынуждены обеспечивать совместимость с файлами Microsoft Office с помощью реверс инжиниринга. Естественно, это не могло обеспечить полной совместимости и сильно мешало распространению альтернатив. Более того, в опубликованных спецификациях есть много белых пятен, из-за чего даже сейчас все еще нет полной совместимости между Microsoft Office, Libreoffice и OpenOffice.

Кроме того, форматы файлов Microsoft Office очень долго несли на себе бремя обратной совместимости со старыми версиями, которые были чрезвычайно сложными. Открытая документация только на один формат Excel 97-2003 содержит несколько сотен страниц! Из-за этого казалось, что файлы намеренно запутаны и созданы сумасшедшими программистами. Но это не совсем так. Форматы файлов настолько сложны для того, чтобы можно было обеспечить быструю работу с ними на очень старых и медленных компьютерах, даже при большом объеме данных. Ранние версии Microsoft Office были рассчитаны на работу машин с процессорами Intel 386 и всего 1 Мб оперативной памяти, а большие документы приходилось редактировать уже тогда. Потому документ был чем-то вроде контейнера с внутренней файловой системой, очень похожей на Microsoft-DOS, с таблицей разделов, секторами и файлами, содержащими отдельные части документа. Это было необходимо для обеспечения быстрой работы с данными. Например, в пакете версии 95-97 была команда Fast save, которая позволяя делать инкрементальные сохранения, не перезаписывая весь документ, а добавляя изменения в конец файла.

Еще одна причина сложности формата поддержка составных документов, которая позволяет встраивать в один документ часть из другого документа как объекта OLE, например, таблицу из Excel в документ Word, которая будет обновляться, когда изменится файл таблицы.

В работе над пакетом Microsoft Office, чтобы он имел все современные возможности входящих в него программ, были потрачены тысячи человеко-часов компанией, которая имела достаточно средств, чтобы нанимать высококвалифицированных инженеров. Увы, но команды, разрабатывающие OpenOffice и Libreoffice, намного меньше. При том, что нельзя реализовать только 20% самого популярного функционала и надеяться, что 80% пользователей будут довольны вашей программой. Хороший пример Google Docs, при работе с которым иногда очень не хватает возможностей Microsoft Word, не реализованных в облачном редакторе. Потому перед разработчиками конкурентов Microsoft Office стоит практически непосильная задача, с которой они почти справляются. В течении многих лет постепенно были решены многие проблемы совместимости, но перечислим те, которые еще остались и могут представлять проблемы (в основном, на примере OpenOffice):

  • Очень долгое время была проблема с графиками и диаграммами, созданными в программе Excel. Если файл Excel открывался в Calc, то часть графиков слетала, а если добавить графики программой Calc, то наоборот они слетали при открытии файла в Экселе. Эта проблема не решена полностью до сих пор. Например: круговая диаграмма и диаграмма пирог из Excel (Calc преобразует в 2D-столбцы), невозможность повернуть ось, в частности, чтобы Y внизу была положительной, отсутствие бухгалтерского формата с символом валюты у левого края ячейки.
  • Если в компании практикуется совместное редактирование документов, которые лежат на общем сервере, то перейти на OpenOffice будет сложно или невозможно. Документ, открытый по сети одним пользователем, будет доступен другим только для чтения, а кнопка Редактировать документ, скорее всего, создаст локальную копию.
  • В Calc можно обеспечить совместное редактирование, хоть и с некоторыми ограничениями (нельзя удалять и добавлять строки и столбцы). Для решения этой проблемы во Writer надо создать специальный файл типа Составной документ, который придется экспортировать, чтобы потом его мог открыть пользователь Microsoft Office.
  • Работа со связанными документами в OpenOffice и Microsoft Office реализована по разному, и потому файлы Microsoft Office, открытые в OpenOffice, потеряют все связи. В Microsoft Office можно вставить документ из другого файла с сохранением связи между ними. При открытии такого документа в OpenOffice связь будет потеряна. Например, диаграмма или таблица из Excel, вставленная в текстовый документ, останется, но если отредактировать документ с таблицей, в текстовом файле изменения уже не отобразятся.
  • До сих пор не решена проблема с паролями в документах электронных таблиц. Calc сбрасывает пароль, заданный в файле Excel и наоборот.
  • Ограниченное количество словарей для проверки грамматики и орфографии, навскидку, нет финского языка. Нельзя сказать, что он очень распространенный, но Microsoft Office предоставляет гораздо большее разнообразие в этом вопросе.
  • Не реализован корректный импорт формата RTF. Он все менее популярен и его поддержка прекратилась аж в 2008 году, но если в компании имеются такие документы, работать с ними будет сложно.
  • В пакете OpenOffice до сих пор не работают макросы, написанные на VBA для Microsoft Office.
  • Слабая интеграция с облаками. В OpenOffice вообще нет возможности прозрачно работать с документами в облаке, в Libreoffice есть опция Сохранить в облако, можно настроить несколько сервисов, но обеспечить совместную работу с облачным документом, как это реализовано в Office 365 или Google Docs, эти программные пакеты не позволяют.
  • Корпоративные пользователи будут недовольны тем, что отсутствует интеграция с Outlook.
  • Из небольших и странных несовместимостей: OpenOffice не поддерживает буквицы, а Impress (программа для создания презентаций), не понимает сложные градиенты и анимации PowerPoint, их надо упрощать перед тем, как открыть презентацию OpenOffice. Кроме того, отсутствуют некоторые инструменты чисто отечественной специфики, такие, как автоматическое создание отчетности для налоговой службы и пенсионного фонда. Имеется плохая совместимость с программой 1С. До сих пор есть шероховатости при импорте и экспорте математических формул, а некоторые файлы Microsoft Office слишком долго открываются. Отдельные виды теней и стрелок не поддерживаются в OpenOffice и могут слетать при открытии документа.

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

Все это создает сложности при миграции с Microsoft Office на открытый и бесплатный софт, несколько примеров ниже это подтверждают.

Самые крупные попытки миграции


В далеком 2003 году власти Мюнхена решили начать проект LiMux. Так назывался дистрибутив на основе Ubuntu с небольшими модификациями для установки на компьютеры муниципальных чиновников. В 2004 году Microsoft прекратила поддержку Windows NT, и надо было решать, как быть: переходить на открытое и бесплатное программное обеспечение или на новую систему от Microsoft и обновлять остальные программы. В 2004 году власти объявили о намерении перейти на открытое программное обеспечение. Фактический он начался в 2005 году и был почти полностью завершен в 2012-2013 годах.

Недолго музыка играла. В 2014 году было сказано, что переход на Linux был катастрофой, и все компьютеры будут обратно переведены на Windows и Microsoft Office. Проблем было несколько.

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

Во-вторых, возникали сложности по конвертации старых документов в новый формат, и особенно сложно было обмениваться документами с другими министерствами и организациями, потому что проблем совместимости тогда было гораздо больше, чем перечислено выше. В департаментах использовалось больше 20 тысяч шаблонов документов Microsoft Office и почти 1000 макросов, которые потребовали серьезных усилий на переделку.

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

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

Любителям теорий заговора понравится обоснование перехода обратно на Windows. В 2014 году мэром Мюнхена стал Дитер Рейтер, открыто симпатизирующий Microsoft, а в 2016 году исследование эффективности работы муниципальных служб было заказано компании Accenture, которая сотрудничает с Microsoft. Учитывая, что последняя не раз была поймана на взятках, подозрения имеют под собой все основания.

Другая неудачная попытка соскочить с иглы Windows тоже была предпринята в Германии. В 2004 году МИД объявил, что собирается отказаться от продукции Microsoft в пользу открытого ПО. В 2008 году они бодро отрапортовали, что все идет хорошо, экономится много денег, а проблемы совсем незначительные, и через год все закончится. Но в 2011 году Министерство заявило, что отказывается от открытого ПО и возвращается на Windows. Причины были предсказуемы: возникало слишком много проблем в обмене документами с другими ведомствами.

В 2005 году Министерство юстиции Бельгии заявило, что собирается переходить на открытое ПО, а в 2008 половина компьютеров уже работала на SUSE Linux и OpenOffice вместо Microsoft. Основная сложность снова очевидна: проблемы в обмене документами, плюс ко всему не было открытого аналога, который умеет работать с файлами Microsoft Access. Судя по всему, у них это получилось лучше, чем у немцев, потому что другие министерства и администрации городов тоже постепенно переходят на Linux и новостей об громком отказе пока нет, а проблему с Microsoft Access решили переходом на PostgreSQL.

Итоги


Какие выводы можно сделать из всей этой информации? Выгодно ли переходить на открытое ПО и сколько можно сэкономить?

Если говорить о большой компании, где документооборот десятилетиями идет на Microsoft Office, написано множество легаси-кода в макросах, изощренные таблицы с разнообразными диаграммами, а документы разных форматов содержат связи друг на друга, используя OLE, вся отчетность построена на множестве готовых шаблонов, а инфраструктура на Active Directory, переходить на свободное ПО почти невозможно, на грани смерти подобно. Усилия по переучиванию сотрудников, переписыванию шаблонов и макросов, созданию и поддержке новой инфраструктуры несоизмеримы с выгодой отказа от платного ПО.

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

Если работа компании плотно завязана на специфичный софт типа 1С, то им по любому придется оставить несколько машин работающих на Windows с Microsoft Office, чтобы избежать проблем интеграции с этой чудо-системой. Фирмам, чья специфика подразумевает совместную работу с документами, OpenOffice тоже может создать слишком большие сложности, чтобы оправдать переход от платных конкурентов.

Зато молодая и небольшая компания, не создающая изощренных документов, чья работа не связана с интенсивным обменом документами с другими организациями, легко может отказаться от платного ПО и пользоваться одним из открытых Офисов, даже если они останутся на Windows.
Что касается обычных пользователей, то тут проблем вообще нет. Редко кому при обычном домашнем использовании требуются такие возможности, как связанные документы, совместное редактирование и изощренные макросы. А интерфейс, аналогичный старому Офису, с нормальным выпадающим меню, как у всех программ, куда удобнее, чем нелепые панели, которые были введены каким-то врагом дизайна, и предназначены для использования чужаками или хищниками.

***
И что же выбрать, на мой взгляд?

Google Docs!

Шутки шутками, но облачная модель работы с документами существенно привлекательнее, чем традиционная оффлайновая работа. Речь идет не только о Google Docs, но и о Office 365, Dropbox и множестве других сервисов облачной работы с документами. В них из коробки имеется коллективная работа над документами, там просто разграничивать права, делиться ими с другими пользователями или организациями достаточно послать ссылку, не скачивая или пересылая файлы. Сохранность документа не зависит от капризов софта или неполадок железа. Встроенная версионность куда удобнее, чем Undo/Redo, история которых теряется при закрытии локального документа. Работа с документом или его просмотр доступны практически с любого устройства, где есть браузер, от десктопа до смартфона. Эта статья, как и все остальные, написана в Google Docs. И пусть мне иногда не хватает возможностей полноценного Офиса, это компенсируют другие удобства. А в случае чего, подписка на облачные сервисы стоит на порядок дешевле, чем когда-то приходилось тратить на однократную покупку лицензионного софта.
И на этом поле открытое ПО пока проигрывает большим компаниям и платным решениям.



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

Зарегистрируйтесь по ссылке выше или кликнув на баннер и получите 10% скидку на первый месяц аренды сервера любой конфигурации!

Подробнее..

Перевод 4 технических решения, которые делают API сервис успешным

03.06.2021 12:19:11 | Автор: admin
Есть API, которые в целом как-то работают, но имеют проблемы с безопасностью, документацией или валидацией данных. Автор статьи объясняет, почему в современных реалиях это недопустимо, и даёт рекомендации по исправлению недостатков.



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

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

А если от публичного API напрямую зависит доход компании, то ставки по-настоящему высоки. Эта мысль подробнее раскрыта в книге Непрерывное развитие API. Правильные решения в изменчивом технологическом ландшафте (Мехди Меджуи, Ронни Митра и др):


а мы пойдём дальше...

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

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

  • Безопасность
  • Документация
  • Валидация
  • Тестирование

Безопасность


Наверное, не стоит объяснять, почему безопасность оказалась на первом месте. Я выделил четыре наиболее важных задачи по обеспечению безопасности:

  1. Использование HTTPS с SSL-сертификатами
  2. Совместное использование ресурсов из разных источников (CORS)
  3. Аутентификация и JSON Web Tokens
  4. Авторизация и привилегии доступа


* Здесь и далее сузим контекст до REST и JSON API.

1. Использование HTTPS с SSL-сертификатами


Сейчас HTTPS с использованием SSL-сертификатов является де факто стандартом безопасности. Для генерации сертификатов лично я использую Let's Encrypt бесплатный, центр автоматизированный сертификации от некоммерческой организации Internet Security Research Group (ISRG).

Эти сертификаты гарантируют, что данные, идущие от вашего API к пользователю, будут зашифрованы.

2. Совместное использование ресурсов из разных источников (CORS)


Чтобы обеспечить безопасность запросов к другим источникам, браузеры используют механизм под названием CORS. Аббревиатура CORS расшифровывается как Cross-Origin Resource Sharing технология совместного использования ресурсов разных источников. Несмотря на то, что браузеры (в силу правила одинакового источника) не позволяют получать доступ к ресурсам из разных источников, CORS позволяет обойти эти ограничения и при этом быть уверенным, что доступ к ресурсам будет безопасным.

Пользовательские агенты (к примеру, браузеры) на основе значений дополнительных заголовков для CORS в HTTP-запросе могут выполнять запросы к другим источникам, которые без CORS были бы заблокированы.



Приведём пример:

HTML страница, обслуживаемая сервером с http://domain-a.com, запрашивает src по адресу http://domain-b.com/image.jpg .

Многие страницы загружают ресурсы вроде CSS-стилей, изображений и скриптов с разных доменов, соответствующих разным CDN (сетям доставки контента).

Сегодня достаточно популярна реализация CORS для Node.js.

3. Аутентификация и JSON Web Tokens (JWT)


Существует несколько подходов к аутентификации пользователя API, но один из лучших это использование JWT. Эти токены подписываются с использованием различных криптографических алгоритмов.

JSON Web Token это открытый стандарт для создания токенов доступа, основанный на формате JSON. Как правило, используется для передачи данных для аутентификации в клиент-серверных приложениях.

Для создания токена необходимо определить заголовок (header) с общей информацией по токену, полезные данные (payload), такие как id пользователя, его роль и так далее, а также подписи (signature). Простыми словами, JWT это лишь строка в следующем формате header.payload.signature.

Когда клиент входит в систему, служба управления идентификацией предоставляет клиенту JWT. Затем клиент может использовать этот токен для выполнения запросов к API. У API есть доступ к публичному ключу или секрету, который он использует для проверки токена.

Для проверки можно использовать, например, библиотеку jsonwebtoken. Приводим ниже код на JavaScript:

import jwt from 'jsonwebtoken'

export default function (req, res, next) {

// req.headers.authorization Bearer token

const token = extractToken(req)

jwt.verify(token, SECRET, { algorithms: ['HS256'] }, (err, decoded) => {

if (err) { next(err) }

req.session = decoded

next()

})

}

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

4. Авторизация и привилегии доступа


Аутентификация важна, но так же важна и авторизация: имеет ли клиент, прошедший аутентификацию и получивший JWT, привилегию выполнить тот или иной запрос?

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

Скоуп это текстовый блок (обычно разделённый пробелами), который описывает привилегии доступа конечной точки API. Там описаны Ресурсы и Действия, которые к ним можно применять. Такая формализация хорошо работает для REST / JSON API, поскольку они очень похожи по структуре.

RESOURCE: ACTION (например, ARTICLE: WRITE или ARTICLE: READ, где ARTICLE это ресурс, а READ и WRITE действия).

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

Спать спокойно


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

Документация


Что может быть хуже отсутствия документации? Устаревшая документация!

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

Документация по API должна включать три базовых раздела:

  1. Вводная часть (README)
  2. Техническое описание (Спецификации)
  3. Примеры использования (Getting started и другие подобные подразделы)

1. README


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

Об этом пишут в файле README. Этот файл обычно тоже размещают в репозитории, он даёт разработчикам отправную точку для работы с вашим проектом.

README должен содержать:

  1. Описание API
  2. Ссылки на технические справочники и руководства
  3. Руководство по настройке для разработчика
  4. Руководство для тестировщика
  5. Руководство по развёртыванию
  6. Управление зависимостями
  7. Руководство для контрибьюторов
  8. Нормы поведения
  9. Лицензия
  10. Благодарность

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

2. Спецификации


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

Создать собственную документацию для API можно на основе OpenAPI.

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

3. Примеры использования


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

Отличный способ познакомить пользователей с вашим API создать подраздел Getting started (Начало работы). Это поможет разобраться с типовыми сценариями использования и на их примере оценить преимущества вашего API.

Три кита


Документация ключевой компонент любого API. Создавая документацию, помните о трёх китах успешного документирования API README, спецификации и примеры использования. И будет вам (и вашим пользователям) счастье!

Валидация данных


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

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

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

Вы можете реализовать валидацию руками, но для этой цели также можно использовать и такие библиотеки, как Lodash или Ramda. Они отлично подходят для небольших объектов данных. Такие библиотеки, как Joi, Yup или Zod, работают ещё лучше, поскольку они позволяют описать общую схему валидации, сэкономив время и усилия. Если вам нужно что-то не зависящее от конкретного языка программирования, посмотрите на JSON Schema.

Лучше перебдеть


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

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

Тестирование


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

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

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

Для интеграционного тестирования я использую Tape, Test-server и Fetch-mock. Эти библиотеки позволяют запускать изолированные тесты для конечных точек API, проходя путь от запроса до ответа.

Игра в имитацию


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

Не останавливайтесь на достигнутом


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



Облачные серверы от Маклауд быстрые и безопасные.

Зарегистрируйтесь по ссылке выше или кликнув на баннер и получите 10% скидку на первый месяц аренды сервера любой конфигурации!

Подробнее..

Бесплатные вебинары апреля по Microsoft 365

12.04.2021 10:16:29 | Автор: admin

Привет, Хабр! Сегодня по традиции делимся ссылками и подробностями о наших ивентах по Microsoft 365 в апреле. В этот раз их 2, оба на английском, но с субтитрами на русском. Заглядывайте под кат.

1. Построение интеграции и рабочих процессов Microsoft Teams

15-16 апреля15-16 апреля

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

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

Во время этого тренинга, состоящего из двух частей, вы узнаете, как:

  • Создавать современные решения для совместной работы корпоративного уровня с Microsoft Teams

  • Преобразовывать повседневные бизнес-процессы с помощью интеграции платформы Microsoft 365 для Power Platform, SharePoint и Microsoft Office

  • Использовать множество данных в Microsoft Graph для расширения возможностей Microsoft 365 и создания уникальных интеллектуальных приложений

Подробности и регистрация.

2. Защита конфиденциальной информации и управление рисками, связанными с данными

22-23 апреля22-23 апреля

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

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

Узнайте, как:

  • Фиксировать, идентифицировать и защищать свои самые конфиденциальные данные

  • Выявлять инсайдерские риски и нарушения кодекса поведения и принимать соответствующие меры

  • Использовать защиту информации и управление

Подробности и регистрация.

Подробнее..

Microsoft Dynamics 365 вебинар по основам

21.01.2021 10:23:56 | Автор: admin

Среда, 27 января 2021 г., 12:00-15:45 (GMT +03:00)
Четверг, 28 января 2021 г., 12:00-15:35 (GMT +03:00)

Получите навыки, необходимые для того, чтобы помочь вашей организации продавать, обслуживать и оправдывать ожидания клиентов завтрашнего дня на Microsoft Dynamics 365 Virtual Training Day: Fundamentals. Во время этого бесплатного мероприятия, состоящего из двух частей, вы узнаете, как Dynamics 365 может помочь повысить эффективность, которая стимулирует инновации и поддерживает индивидуальный подход как для сотрудников, так и для клиентов.

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

Во время этого учебного мероприятия вы узнаете, как:

  • Подготовиться к сертификационному экзамену по основам Microsoft Dynamics 365.

  • Создать единую комплексную платформу для своего бизнеса, которая работает так же удаленно, как и в офисе.

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

  • Поддерживать индивидуальный подход как для сотрудников, так и для клиентов.

После прохождения этого бесплатного обучения вы сможете бесплатно сдать сертификационный экзамен по основам Microsoft Dynamics 365.

Подробности и регистрация.

Подробнее..

Microsoft Message Center в Telegram через PowerShell и Azure Automation

09.03.2021 20:23:18 | Автор: admin

И плюс, и минус любой SaaS системы в том, что она управляется не нами, и мы никак (в большинстве случаев) не можем повлиять на цикл обновлений основного функционала и добавление новых фич. Однако эти обновления могут носить собой как информативный характер и не нести никаких серьезных изменений в функционал, так и могут и быть критическими для инфраструктуры, что в свою очередь несет собой дополнительные риски для бизнеса, а стало быть, и для нашего спокойствия, как для IT инженеров все это дело поддерживающих. О том, как получать все необходимые сообщения об обновлениях в Microsoft 365 не устанавливая для этого никаких дополнительных приложений будет эта статья. Из всего что нам понадобится, это зарегестированное приложение для доступа в API в Azure Active Directory, Azure Automation, PowerShell и бот в Телеграм.

Задача:

Написать скрипт, который будет раз в час стучаться в API M365, проверять там наличие новых сообщений и присылать их нам в Teams канал или в Telegram.

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

  1. Microsoft 365 Roadmap

  2. Microsoft 365 Message Center

Чтобы получить информацию из первого варианта, никаких дополнительных учетных записей не требуется, т.к. инфа в открытом виде и имеется RSS feed, что подтолкнуло к написаю простенького скрипта для мониторинга RSS фида и направления его в Telegram канал. Найти этот канал вы можете по этой ссылке.

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

Для простоты разработки, был выбран PowerShell, т. к. он нативно поддерживается Azure Automation чуть ли не с самого начала. Чтобы получить доступ к информации внутри тенанта не вводя логин и пароль, нужно зарегистрировать приложение в Azure Active Directory и дать приложению соответствующие права.

1. Заходим на сайт Azure и в строке поиска вводим Active Directory

AAD в AzureAAD в Azure

2. В левом боковом меню в разделе Manage выбираем App registrations

3. Здесь нажимаем на кнопку New Registration и попадаем в меню создания нового приложений внутри Azure Active Directory

4. В поле Name необходимо ввести уникальное имя для приложений внутри тенанта, остальные же поля можно оставить как есть.

5. Нажимаем Register и попадаем в созданное приложение. Здесь присутствуют данные, которые понадобятся нам в дальнейшем, а именно:

  • Application ID

  • Directory ID

Их желательно заранее куда ни будь сохранить.

6. Для авторизации посредством приложения, нужно сгенерировать Client Secret, без которого токен не получить. Для этого в левом боковом меню выбираем Certificates & Secrets и нажимаем на New Client Secret. Как понятно из названия здесь так же присутствует возможность авторизации посредством сертификата, но в данном примере будет использоваться именно Client Secret.

7. В появившемся окне нужно добавить Description к создаваемому секрету и указать его срок жизни.

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

9. Далее необходимо предоставить приложению права читать Message Center. Для этого переходим в меню API Permissions

10. Здесь присутствуют стандартные права в Graph API User.Read, которые отвечают за доступ к информации об аккаунте авторизовавшегося юзера.

Давайте на этом пункте остановится чуточку подробнее.

В M365 есть два основных вида прав, это Delegated Permissions, которые могут быть использованы только при авторизации в приложении пользователем, и Application Permissions которые можно использовать без авторизации человеком. Это очень полезно, когда необходимо что-то автоматизировать, а у вас в тенанте настроен обязательный MFA для всех учетных записей, однако Delegated Permissions требуют подтверждение Global администратора. User.Read права доступные по умолчанию как раз первого типа, потому их можно сразу же удалить. Щелкаем на права и нажимаем Remove permission.

Теперь же нужно добавить права для чтения Message Center. Нажимаем Add Permission > Скролим вниз и находим Office 365 Management API

11. Выбираем Application Permissions > ServiceHealth.Read и нажимаем Add Permissions

12. Далее если есть роль Global Admin, нажимаем кнопку Grant admin consent, либо просим одобрить права того, у кого эта роль имеется

13. После получения подтверждения, напротив прав должна появится надпись Granted for <tenant name>

На этом история с регистрацией приложения закончена и можно перейти к скрипту.

Первое что необходимо написать, это функцию для авторизации в M365 API, назовем ее Get-APIToken. Функция должна принимать в себя три значения:

  • Application ID

  • Tenant ID (directory ID)

  • App Secret (Client Secret)

Первые два параметра отображались выше в пункте 5 при создании приложения

Функция представляет собой Rest запрос с определенными параметрами на URL вида:

https://login.microsoftonline.com/ + $TenantID + /oauth2/v2.0/token

В итоге функция будет выглядеть следующим образом

Function Get-ApiToken {    [CmdletBinding()]    param (        [Parameter(Mandatory=$True)]        [String]        $AppId, $AppSecret, $TenantID    )    $AuthUrl = "https://login.microsoftonline.com/$TenantID/oauth2/v2.0/token"    $Scope = "https://manage.office.com/.default"    $Body = @{        client_id = $AppId        client_secret = $AppSecret        scope = $Scope        grant_type = 'client_credentials'    }    $PostSplat = @{        ContentType = 'application/x-www-form-urlencoded'        Method = 'POST'        Body = $Body        Uri = $AuthUrl    }    try {        Invoke-RestMethod @PostSplat -ErrorAction Stop    }    catch {        Write-Warning "$(Get-Date): Exception was caught: $($_.Exception.Message)"     }}

Теперь можно получить Token и проверить что все прошлые действия были выполнены правильно.

try {    $Token = Get-ApiToken -AppId $ClientId -AppSecret $ClientSecret -TenantID $TenantId -ErrorAction Stop    Write-Output "$(Get-Date): Token successfully issued"}catch {    Write-Error "$(Get-Date): Can't get the token!"    break}

В результате значение токена должно напоминать следующее содержание:

Для того, чтобы получить сообщения из Message Center понадобится две функции, Get-MCMessages и Get-ApiRequestResult

Начнем с функции Get-ApiRequestResult.

Она будет принимать URL запроса, метод и токен.

Из токена формируется header запроса и все это оформляется в Splat.

Function Get-ApiRequestResult {    [CmdletBinding()]    param (        [Parameter(Mandatory=$True)]        [String]        $Url, $Method, $Token    )     $Header = @{        Authorization = "$($Token.token_type) $($Token.access_token)"    }    $PostSplat = @{        ContentType = 'application/json'        Method = $Method        Header = $Header        Uri = $Url    }    try {        Invoke-RestMethod @PostSplat -ErrorAction Stop    }    catch {        $Ex = $_.Exception        $ErrorResponse = $ex.Response.GetResponseStream()        $Reader = New-Object System.IO.StreamReader($errorResponse)        $Reader.BaseStream.Position = 0        $Reader.DiscardBufferedData()        $ResponseBody = $Reader.ReadToEnd();        Write-Output "$(Get-Date): Response content:`n$responseBody" -f Red        throw Write-Error "$(Get-Date): Request to $Uri failed with HTTP Status $($ex.Response.StatusCode) $($ex.Response.StatusDescription)"    }}

Далее необходимо написать функцию для получения сообщений из Message Center.

Для этого нужно сделать Get запрос на адрес https://manage.office.com/api/ServiceComms/Messages

Function Get-MCMessages {    [CmdletBinding()]    param (        [Parameter(Mandatory=$True)]        $APIUrl, $TenantId    )    $ApiVersion = "v1.0"    $MS_resource = "ServiceComms/Messages?&`$filter=MessageType%20eq%20'MessageCenter'"    $Uri = "$APIUrl/$ApiVersion/$($TenantId)/$MS_resource"        $Method = "GET"    try {        Get-ApiRequestResult -Url $Uri -Token $Token -Method $Method -ErrorAction Stop        Write-Output "$(Get-Date): New messages successfully collected"    }    catch {        $Ex = $_.Exception        $ErrorResponse = $ex.Response.GetResponseStream()        $Reader = New-Object System.IO.StreamReader($errorResponse)        $Reader.BaseStream.Position = 0        $Reader.DiscardBufferedData()        $ResponseBody = $Reader.ReadToEnd();        Write-Output "$(Get-Date): Response content:`n$responseBody" -f Red        throw Write-Error "$(Get-Date): Request to $Uri failed with HTTP Status $($ex.Response.StatusCode) $($ex.Response.StatusDescription)"    }}

Небольшое отступление

Зачем сам запрос делится на две функции? Все дело в том, что принцип запросов к различным API M365 выглядит по большей части одинаково, отличаются только ссылки куда следует запрос, а также ресурсы, которые идут после основной ссылки. Для того чтобы переиспользовать последние две функции, необходимо только заменить значения в переменной $MS_Resource и $URL в функции Get-MCMessages. Так например можно получить информацию о мобильниках заэнроленных в Intune, изменив имя функции на Get-IntuneManagedDevices, значение переменной MS_Resource на "deviceManagement/managedDevices", и URL на https://graph.microsoft.com, что существенно сэкономит время на будущих скриптах. Ну и соответственно у приложения должны быть права на чтение информации об устройствах

Данные из запроса приходят списком сообщений следующего вида:

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

Максимальная частота отработки Runbook в Azure Automation 1 раз в час, за этот период мы и будем проверять новые сообщения каждый час. Таким образом, нужны две временные метки: время, когда скрипт будет запущен и час назад от этого времени. Получаем переменные:

$CurrentTime = Get-Date$СontrolTime = ($CurrentTime).AddMinutes(-60)

Получаем список всех сообщений воспользовавшись написанной функцией Get-MCMessages.

$Messages=Get-MCmessages-APIUrl$APIUrl-TenantId$TenantId

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

$NewMessages=$Messages.value|Where-Object{$(Get-date$($_.LastUpdatedTime))-ge$controlTime}

Необходимо проверить есть ли вообще за последний час новые сообщения

$NewMessagesCount = $NewMessages.id.countif ($NewMessagesCount -gt 0) {    Write-Output "$(Get-Date): There are $NewMessagesCount new messages"}else {    Write-Output "$(Get-Date): There is no new messages"    break}

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

if($NewMessagesCount-gt0){foreach($NewMessagein$NewMessages){}}

Собираем нужные переменные. Для этого понадобится извлечь следующие данные для каждого нового сообщения

$MessagePreview=$NewMessage.Messages.MessageText$MessageID=$NewMessage.id$MessageTitle=$NewMessage.Title$MessageType=$NewMessage.actiontype$PublishedTime=Get-date$($NewMessage.Messages.publishedTime)$UpdatedTime=Get-Date$($NewMessage.LastUpdatedTime)

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

Для этого внутри функции создаем два одномерных массива и один двумерный. Таким образом у нас есть три категории тегов:

  • Простые тэги - имеющие закрывающий тэг и которые как правило не бывают с дополнительными параметрами внутри. С ними можно использовать регулярные выражения

  • Сложные тэги - не имеющие закрывающий тэг, но которые при этом могут вызвать ошибку форматирования.

  • Тэги и просто символы - которые нужно заменить на что-то иное.

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

Function Remove-HtmlTags {    param (        $Text    )    $SimpleTags = @(        'p',        'i',        'span',        'div',        'ul',        'ol',        'h1',        'h2',        'h3',        'div'    )    $TagsToRemove = (        "\<\/?font[^>]*\>",        '\<br\s?\/?\>',        '\&rarr',        'style=""',        ' target\=\"_blank\"'    )    $TagsToReplace = @(        @('\[','<b>'),        @('\]','</b>'),        @('\<A','<a'),        @('\<\/A\>','</a>'),        @('\<img[^>]*\>','[There was an image]'),        @('&nbsp;',' '),        @('\<li\>',' -'),        @('\<\/li\>',"`n")    )    foreach($Tag in $SimpleTags){        $Pattern = "\<\/?$tag\>"        $Text = $Text -replace $Pattern    }    foreach($Tag in $TagsToRemove){        $Text = $Text -replace $Tag    }    foreach($Tag in $TagsToReplace){        $Text = $Text -replace $Tag    }        foreach($Tag in $SimpleTags){        $Pattern = "\<\/?$Tag\>"        $Text = $Text -replace $Pattern    }    $Text    }

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

Скрипт в том виде что вы его видите стал таким не сразу, и претерпел за время определенные изменения. Например, было замечено, что Microsoft особо не заморачивается со стандартизацией и форматированием контента своих сообщений, по этой причине доверять отступам и переносам строки в тексте было бы крайне опрометчиво. Это вынудило меня разбить полученный текст сначала по разрывам строк используя закрывающий тэг </p>, а далее обрабатывать его уже как массив, после же все это объединить в одну переменную, но уже с вынужденным переносом строк без html тэгов. Так же нужно удалить лишние пробелы в тексте.

$MessageTextWithHtmlString=$MessagePreview-split('\<\/p\>')$FormattedMesssageText=$(Remove-HtmlTags$MessageTextWithHtmlString)-creplace'(?m)^\s*\r?\n',''

Далее нужно собрать шапку сообщения. Для этого выделяем жирным Title и добавляем немного служебной информации о сообщении.

$PublishingInfo="Published:$PublishedTime`nUpdated:$UpdatedTime"$TgmMessage="$BoldMessageTitle`n$MessageDescription`n$PublishingInfo`n$FormattedMesssageText"

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

$MessageActionRequiredByDate=$NewMessage.ActionRequiredByDate$MessageAdditionalInformation=$NewMessage.ExternalLink$MessageBlogLink=$NewMessage.BlogLinkif($MessageActionRequiredByDate){$TgmMessage+="`nActionrequiredbydate:$MessageActionRequiredByDate"}elseif($MessageAdditionalInformation){$TgmMessage+="`n$MessageAdditionalInformation'>Additionalinfo"}elseif($MessageBlogLink){$TgmMessage+="`n$MessageBlogLink'>Blog"}

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

Функция должна принять ChatID, Token, ParsingType, на случай если функцию нужно будет где-то использовать еще, ну и сам текст сообщения.

functionSend-TelegramMessage{[CmdletBinding()]param([Parameter(Mandatory=$true)][string]$MessageText,$TokenTelegram,$ChatID[Parameter(Mandatory=$true)][ValidateSet("html","markdown")][string]$ParsingType)$URL_set="http://personeltest.ru/aways/api.telegram.org/bot$TokenTelegram/sendMessage"$Body=@{text=$MessageTextparse_mode=$ParsingTypechat_id=$chatID}$MessageJson=$body|ConvertTo-Jsontry{Invoke-RestMethod$URL_set-MethodPost-ContentType'application/json;charset=utf-8'-Body$MessageJson-ErrorActionStopWrite-Output"$(Get-Date):Messagehasbeensent"}catch{Write-Error"$(Get-Date):Can'tsentmessage"Write-Output"$(Get-Date):StatusCode:"$_.Exception.Response.StatusCode.value__Write-Output"$(Get-Date):StatusDescription:"$_.Exception.Response.StatusDescriptionthrow}    }

И, собственно, сама отправка сообщения:

Send-TelegramMessage-MessageText$TgmMessage-TokenTelegram$TokenTelegram-ChatID$chatID-ParsingType'html'

В итоге мы получаем сообщения вида:

Что касается такой служебной информации как токены, чат ID, секреты и прочее, то все это можно и нужно хранить в месте специально для этого предназначенном. В Azure Automation это Secure Assets. Более подробную информацию можно получить по ссылке.

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

Ссылка на канал с запущенным ботом

P.S. буду рад контрибьюторам и предложениям по улучшению бота.

Подробнее..

Личный кабинет адаптации сотрудника на Microsoft Power Platform и Microsoft Teams

21.02.2021 02:04:48 | Автор: admin
Всем привет! В одной из прошлых статей я рассказывал, как мы автоматизировали один процесс адаптации сотрудников в компании с использованием платформы Microsoft 365, возможностей Microsoft Power Platform и технологии чат ботов. Сегодня я расскажу о реализации приложения личного кабинета для системы адаптации персонала на базе Microsoft Power Apps и Power Automate. Посмотрим как можно организовать подобное приложение и какие возможности получится в него заложить в рамках общей системы адаптации персонала.

Итак, как мы помним из прошлой статьи, у нас с Вами есть сайт SharePoint Online со списками и библиотеками, для системы адаптации, форма на PowerApps, поток обработки данных на Power Automate и отчеты Power BI. Самое время добавить личный кабинет, в котором сотрудник и/или руководитель видели бы свои задачи на период адаптации и могли их выполнить, осуществив определенные действия.



Создание PowerApps приложения личного кабинета адаптации


Начинаем работу и в первую очередь переходим на страницу редактора Microsoft PowerApps и создаем новое приложение.



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



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



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

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

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



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



На этом экране руководитель может увидеть свои задачи на период испытательного срока по выбранному сотруднику, а также выполнить различные операции. В рамках данной системы заложено два действия Загрузить файл (для чек-листа и задач на испытательный срок соответственно) и Отметить мероприятие выполненным. Каждое из действий вызывает свой вариант диалогового окна, например кнопка Загрузить файл вызывает вот такое окно:



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



Второй вариант операции это Отметить выполненным и диалог выглядит следующим образом:



Что происходит при нажатии на кнопку Подтвердить? Всё очень просто осуществляется запуск Power Automate потока с пробросом ключевых параметров.



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



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



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



С помощью меню навигации можно моментально переключаться между экраном новичка и экраном руководителя.



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



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



В зависимости от того является наш пользователь сотрудником, руководителем или два-в-одном мы сразу же при запуске приложения перенаправляем пользователя на нужный экран минуя экран авторизации внутри приложения. Приложение готово. Осталось встроить его в Microsoft Teams.



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

Microsoft Viva Connections. Развертывание платформы для внутренних коммуникаций

16.04.2021 16:20:16 | Автор: admin
Всем привет! Сегодня будет знакомство с новым сервисом из линейки сервисов Microsoft 365, под названием Microsoft Viva. А если быть точнее, то с целой линейкой сервисов. Посмотрим, что это такое, а один из них даже попробуем установить. Думаю, что будет интересно.



Что такое Microsoft Viva?


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

  • Viva Connections сочетание спектра возможностей корпоративного портала SharePoint Online в приложении Teams с множеством дополнительных сервисов. Viva Connections предоставляет единую персонализированную ленту, в которой сотрудники могут изучать новости и участвовать в беседе. При этом можно работать как в интерфейсе Microsoft Teams, так и в отдельном мобильном приложении.
  • Viva Insights отчеты и советы по персональной и организационной продуктивности, основанные, в первую очередь, на сервисе MyAnalytics, а также на аналитических материалах сторонних платформ.
  • Viva Topics использование искусственного интеллекта для анализа данных, хранящихся в SharePoint Online, и создания различных информационных страниц по разнообразным темам.
  • Viva Learning корпоративная обучающая платформа, которая предоставляет сотрудникам в Microsoft Teams собственный и сторонний обучающий контент.

В сегодняшней небольшой статье речь у нас с Вами пойдет о Viva Connections. Попробуем развернуть данный сервис и разобраться что он из себя представляет.

Как установить Microsoft Viva Connections


В первую очередь необходимо установить SharePoint Online Home Site. Для этого необходимо создать новый информационный сайт SharePoint Online в центре администрирования или воспользоваться одним из шаблонов Microsoft LookBook.







После того как сайт будет создан, необходимо сделать его домашним сайтом для Вашей организации. Для этого скачиваем и устанавливаем последний SharePoint Online Management Shell, подключаемся к админке SharePoint Online и выполняем привязку домашнего сайта.



Примеры командлетов:

Install-Module -Name Microsoft.Online.SharePoint.PowerShell -forceConnect-SPOService -Url https://doctrix-admin.sharepoint.com -Credential a.braun@i-sys.ruSet-SPOHomeSite -HomeSiteUrl https://doctrix.sharepoint.com/sites/sharepoint-home-site 


Далее, скачиваем скрипт для установки Microsoft Viva Connections https://www.microsoft.com/en-us/download/confirmation.aspx?id=102888, открываем в PowerShell и запускаем установку. Скрипт после запуска потребует указать адрес сайта, который будет подцеплен к приложению Viva Connections в Microsoft Teams. Указываем наш адрес сайта. Вводим учетные данные администратора, вводим имя будущего приложения, а также указываем все необходимые данные, такие как краткое и полное описание приложения, прикладываем ссылки на иконки и так далее.



После выполнения скрипта создается zip файл приложения Viva. В моем случае, почему то, на рабочем столе. Хватаем этот zip файл и импортируем в приложения Teams.



Результат получается следующим.



Дополнительно, в центре администрирования Microsoft Teams в разделе Setup Policies можно указать это приложение как автоматически устанавливаемое и закрепленное в левой панели для всех сотрудников организации.



Одной из ключевых фишек Viva Connections является управляемая глобальная навигация, доступная уже сейчас, а также мобильное приложение для Android и iOS устройств, которое должно выйти в ближайшее время.





Основная задача Microsoft Viva Connections создать единую точку входа в корпоративный портал организации, посредством микса доступных возможностей Microsoft 365. И универсальное приложение для Teams и мобильных устройств может обеспечить эту точку входа. Далее, с приложения-портала пользователи могут уже переходить на сайты своих подразделений, общедоступные сервисы компании, недавние документы и различные другие области.

В итоге Microsoft Viva Connections это набор компонентов Microsoft 365, которые предоставляют пользователям доступ к возможностям порталов SharePoint Online со всеми имеющимися преимуществами. Просмотр новостей, видео, недавних сайтов и документов, переход к страницам баз знаний и многое другое. При этом сайт SharePoint Online можно настроить таким образом, чтобы он покрывал все необходимые требования вашей организации к порталу. PowerShell скрипт позволяет быстро создать такое приложение, импортировать в Teams и закрепить у каждого пользователя в панели действий на клиенте. Viva Connections доступен всем клиентам в рамках существующей лицензии Microsoft 365.

Viva Connections позволяет:

  • Собирать новости и беседы из SharePoint Online и Yammer.
  • Настраивать панели мониторинга с помощью Power Apps, SPFx и прочих решений.
  • Закреплять файлы и видео из Microsoft OneDrive и Microsoft Stream.
  • Использовать информацию из календарей и погодных сервисов.
  • Отображать документы из библиотек и списков SharePoint Online.




Данный сервис Microsoft Viva Connections представляет собой небольшую часть экосистемы Microsoft Viva, в которую входит множество сервисов по организации коммуникаций и обмена данными между пользователями в компании. И в следующих статьях мы обязательно посмотрим остальные сервисы. Спасибо за внимание!
Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru