Чат-боты в сфере автоматизированных технологий

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

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

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

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

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

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

Анонсирован роутер TP-Link Archer AX206

TP-Link Archer AX206

Корпорация анонсировала новый роутер Archer AX206, который соответствует стандарту Wi-Fi 6E. Данный стандарт подразумевает использование канала 6ГГц в дополнение к используемым сегодня диапазонам 5 и 2,4 ГГц.
В основе устройства лежит процессор с 4 полноценными вычислительными ядрами (рабочая частота до 2 ГГц). В наличии восемь съемных антенн, которые обеспечивают устойчивый сигнал на значительной площади покрытия. Реализованы технологии Beamforming, OFDMA и 4×4 MU-MIMO.
Роутер соответствует всем спецификациям IEEE 802.11ax. В наличии полноценная поддержка всех предыдущих версий, включая 802.11n и IEEE 802.11ac.
Заявленная производителем скорость передачи в каналах 5 и 6 ГГц составляет 4804 Мбит/сек (на каждый диапазон). Режим 2,4 ГГц способен обеспечить до 1148 Мбит/сек.
В наличии сетевые порты 10Gb WAN/LAN и 10Gb SFP+ (передача данных до 10 Гбит/сек). Также пользователю доступны четыре гигабитных разъема LAN и порт WAN/LAN (до 2,5 Гбит/сек). Дополнительно присутствуют USB 3.0 Type-С и USB 3.0 Type-A (по одному). Размеры маршрутизатора – 288×288×184 мм

В РФ отозвали более 4 тысячи телевизоров LG

Представители российского сегмента корпорации LG Electronics сообщили об отзыве свыше 4 тысяч телевизоров. В Росстандарте подтвердили, что на территории РФ стартовала программа добровольного отзыва партии телевизоров. Ряд моделей, выпущенных в 2016 и 2017 года, имели недостаток – в процессе эксплуатации фиксировались случаи перегрева определенных модулей, что приводило к повреждениям задней крышки или платы блока питания. Такие повреждения нередко ухудшали качество работы устройства.
В компании заверили, что провели ряд экспертиз, доказывающих, что отсутствует риск возгорания даже при явном нагреве. Более того, в России не зафиксированы случаи перегрева у телевизоров OLED из отзываемой партии. Однако производитель принял решение заменить платы питания и в других моделях.
Из официальной публикации следует, что отзыв распространяется на следующие модели:
- OLED65G6, OLED77G6, OLED65E6 (выпуск 2016 года);
- OLED65E7, OLED65C7, OLED65G7 (выпуск 2017 года);
- OLED65W8, OLED77G7 (2018 год);
- OLED77C9, OLED77W9, OLED65W9, OLED77C8, OLED77W8 (2019 год).
Обладатели данных ТВ имеют возможность бесплатной замены основной платы встроенного блока питания. О данной возможности разработчик напоминает при помощи специального системного уведомления, если устройство имеет доступ в сеть.

Dell анонсировала на CES 2021 обновлённые ноутбуки Alienware m17 и m15

Корпорация Dell анонсировала на CES 2021 сразу несколько игровых ПК семейства Alienware. Среди представленных ноутбуков также присутствуют обновленные Alienware m17 и m15, в которых используются графические чипы NVIDIA GeForce тридцатой серии.
В устройствах теперь используется более скоростная ОЗУ DDR4 (частота увеличена с 2666 до 2933 МГц), объем может составлять от 8 до 32 Гбайт. В наличии также SSD накопитель с интерфейсом подключения PCIe (поддерживается емкость до 4 Тбайт). Процессоры остались прежними – используется семейство семейству Intel Comet Lake H. Для охлаждения используется собственная разработка Advanced Alienware Cryo-Tech (4 версия).
Модель m17 комплектуется дисплеем 17,3 дюйма (частота до 360 Гц, Full HD), в модели m15 используется дисплей с частотой до 300 Гц. Для обеих моделей опционально доступны версии экранов с разрешением 4K и частотой 60 Гц. Возможность выбрать экран OLED доступна только для 15,6-дюймовой модели, поскольку панели с диагональю 17,3 пока не выпускаются.
В обеих моделях используется ОС Windows 10 (можно выбрать версию Pro или Home). Цветовых решения всего два – темный (Dark Side of the Moon) и светлый (Lunar Light). Старт продаж запланирован на 26 января, стоимость составит от 2149,99 долларов.

История появления первых персональных компьютеров

1973 год ознаменовался появлением первых рабочих микропроцессорных систем на базе микропроцессора 8008. К концу года специалисты Intel представили микропроцессор с кодом 8080, который скорость работы в 10 раз выше, по сравнению с 8008, а также был способен работать с адресным пространством до 64 Кбайт. Данное событие и послужило толчком для начала массового выпуска персональных компьютеров.
В 1975 году популярный журнал Popular Electronic (январский выпуск) опубликовал фотографию комплекта Altair (малоизвестная компания MITS). Данный набор, стоимостью 395 долларов, можно считать первым полноценным ПК. В комплект входил блок питания, аскетичная лицевая панель с набором индикаторов, процессор 8080, размер собственной памяти составлял скромные 256 байт. При этом сборка производилась владельцем самостоятельно при помощи паяльника.
В основе схемы нового ПК лежала открытая шина S-100 (использовались разъемы), что позволяла сторонним компания выпускать различные периферийные устройства и платы. Новые процессор способствовал появлению нового ПО, включая язык программирования BASIC (разработан специалистами Microsoft) и операционной системы CP/M.
В 1975 году специалисты IBM анонсировали первое устройство, которое можно отнести к категории персональных компьютеров. Модель с индексом 5100 комплектовалась встроенным дисплеем (16 строк текста, 64 символа в каждой), кассетным накопителем, память составляла уже 16 килобайт, имелся полноценный интерпретатор языка BASIC. Однако стоимость отпугивала потенциальных покупателей (почти 9 тысяч долларов), тем более, что немало любителей предлагали аналогичные набор по 500 долларов.
До появления модели 5150 (сейчас известна как IBM PC) были выпущены модели с кодом 5120 и 5110. Несмотря на схожесть названия, предшественники не имели схожих черт с IBM PC, которых был похож на модель System/23 от компании DataMaster (офисный компьютер, выпущенный в 1980 году). Возможная причина сходства – многие инженеры, работающие над IBM PC, ранее состояли в штате компании DataMaster.
В 1976 году малоизвестная компания Apple Computer запустила продажу компьютеров Apple I, стоимость новинки составляла 666,66 долларов. При этом в комплекте отсутствовал блок питания и корпус, основная плата была просто прикручена к небольшому куску обычной фанеры. Устройство не стало массовым – было собрано всего несколько рабочих экземпляров, которые впоследствии продавались коллекционерам. Однако в 1977 году был анонсирован компьютер Apple II, который заслуженно считается прообразом многих последующие моделей ПК.
В 1980 году на рынке ПК преобладали две модели компьютерных систем. Это были системы CP/M (база MITS Altair) и Apple II, которая уже имела огромное количество поклонников и значительный каталог ПО. Данные компьютеры были совместимы, поскольку функционировали на одной ОС (CP/M), а также использовали стандартную шину S 100.
Новый конкурент и обозначил основные факторы дальнейшего успеха ПК: полноценная поддержка программного обеспечения и узлов других компаний, модульная конструкция, стандартизированные слоты расширения, максимально открытая архитектура.

iPhone ломают одним сообщением

В iPad и iPhone выявлен очередной баг, который позволяет удаленно вывести устройство из строя путем отправки так называемой «текстовой бомбы». Данным термином называют сообщение с определенным набором символов, способное нарушить работу устройства.
На этот раз проблему вызывает сообщение на языке синдхи (распространен на территории Индии и Пакистана). Впервые такие сообщения были зафиксированы в мессенджере Telegram, позднее уязвимость стали использовать пользователи Twitter.
Первоначально опасный текст включал эмодзи итальянского флага, но позднее выяснилось, что проблема возникает и без данного символа – достаточно слов на синдхи. Сразу после получения опасного сообщения устройство снижает скорость работы или полностью зависает.
Уже известно, что проблема актуальна для iPhone на базе последней версией системы (13.4.1), в бета версии 13.4.5 разработчики ее уже устранили.
Новая текстовая бомба не способна нанести серьезный вред атакованному устройству. Худший сценарий – перезагрузка устройства с потерей несохраненных данных.
Главная особенность данного бага – невозможность предотвращения атаки. Защититься можно только путем полного отключения уведомлений от социальных сетей.
Проблемы с определенными символами выявляли и ранее. К примеру, в 2018 году для iOS 11 специалисты обнаружили аналогичную проблему. При использовании в сообщение определенного символа на языке телугу мобильное устройство получателя терял возможность получения новых сообщений. При этом данный символ нарушал работу не только штатного приложения для работы с сообщениями, но и другие мессенджеры, включая Gmail, Facebook Messenger, Outlook и WhatsApp.
Для восстановления работоспособности можно было попросить кого-то отправить сообщение с аналогичным символом, открыть его и, получив доступ к сообщениям, попробовать удалить весь част с проблемным символом.
В 2019 году специалисты Project Zero (подразделение корпорации Google, осуществляет поиск багов) опубликовали результаты изучения уязвимостей iPhone, которые могут быть использованы для атак. Наибольшее количество проблем было выявлено у сервиса iMessage, а также у сервисов отправки электронной почты и сообщений. К примеру, одна из уязвимостей позволяла при помощи специального сообщения вмешаться в работу сервера iMessage, инициируя отправку злоумышленнику переписки определенного пользователя.

Вкладка Dialogs. Компонент TPageSetupDialog

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

   
Компонент TPageSetupDialog создает и обслуживает окно настройки параметров печатаемой страницы (рисунок 1).


Рис.1. Стандартное окно компонента TPageSetupDialog

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

   
Перечислим основные свойства этого компонента.

  • MarginBottom, MarginLeft, MarginRight и MarginTop - соответственно определяют размеры
    нижнего, левого, правого и верхнего поля страницы;
  • MinMarginBottom, MinMarginLeft, MinMarginRight и MinMarginTop - соответственно определяют
    минимальные размеры нижнего, левого, правого и верхнего поля страницы;
  • PageHeihgt и PageWidth - определяют высоту и ширину страницы;
  • Units - служит для выбора единиц измерения размеров полей, задаваемых пользователем (в миллиметрах или в дюймах);
  • Options: TPageSetupDialogOptions - используется для настройки ряда параметров диалогового окна (по умолчанию
    параметр psoDefaultMinMargins имеет значение True, остальные параметры имеют значение False); содержит
    такие параметры, как:

    • psoDefaultMinMargins - запрещает пользователю изменять минимальные поля страницы;
    • psoDefaultDisableMargins - запрещает пользователю изменять поля страницы;
    • psoDefaultDisableOrientation - запрещает пользователю изменять ориентацию страницы;
    • psoDefaultDisablePagePainting - запрещает отображение образца страницы по умолчанию;
    • psoDefaultDisablePaper - запрещает пользователю изменять размеры страницы и источник бумаги;
    • psoDefaultDisablePrinter - делает неактивной кнопку вызова диалога настройки дополнительных параметров принтера;
    • psoMargins - разрешает устанавливать (учитывать) размер полей в свойствах MarginLeft, MarginRight,
      MarginBottom и MarginTop. В противном случае размер полей равен по одному дюйму каждый;
    • psoMinMargins - разрешает устанавливать (учитывать) минимальный размер полей в свойствах MinMarginLeft, MinMarginRight,
      MinMarginBottom и MinMarginTop. В противном случае, минимальный размер полей определяются драйвером принтера;
    • psoShowHelp - вставляет в окно кнопку Справка;
    • psoWarning - предотвращает отображение предупреждения, когда нет принтера по умолчанию;
    • psoNoNetworkButton - скрывает и отключает кнопку Сеть.

   
Перечислим основные события этого компонента.

  • BeforePaint - возникает перед печатью. Используется для инициализации переменных, используемых в других обработчиков.
  • OnDrawFullPage - возникает перед печатью очередной страницы.
  • OnDrawMinMargin - возникает перед изменением минимальных значений полей.
  • OnDrawMargin - возникает перед изменением значений полей.
  • OnDrawGreekText - возникает перед печатью "греческого" текста.
  • OnDrawEnvStamp - возникает перед печатью логотипа (только при печати конвертов).
  • OnDrawRetAddress - возникает перед печатью обратного адреса (только при печати конвертов).

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

   
Мы закончили рассмотрение компонентов вкладки Dialogs.

Вкладка Dialogs. Компонент TReplaceDialog

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

   
Компонент TReplaceDialog создает и обслуживает окно поиска и замены текстового фрагмента (рисунок 1).


Рис.1. Стандартное окно компонента TReplaceDialog

   
Класс TReplaceDialog является прямым потомком класса TFindDialog и наследует от него большую часть свойств.
Дополнительно в компоненте определено свойство ReplaceText: String, в котором содержится текст замены, и событие
OnReplace, которое возникает при щелчке на кнопке Заменить или Заменить все.

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

   
На форме разместим компонент TReplaceDialog, а также кнопку TButton и компонент TMemo, содержащий текст,
в котором будет осуществляться поиск с последующей заменой.


Рис.2. Внешнинй вид проекта

   
Кнопка TButton используется для активизации окна поиска и замены:

procedure TForm1.Button1Click(Sender: TObject);
begin
  p:=1; // Первоначальное значение позиции: поиск сначала текста
  ReplaceDialog1.Execute;
end;

   
Кроме того, здесь определяется глобальная переменная, которая будет содержать значение позиции текста, с которого осуществляется поиск
очередного заменяемого фрагмента. Реализация обработчика события OnFind ничем не отличается от аналогичной реализации
обработчика для компонента TFindDialog:

procedure TForm1.ReplaceDialog1Find(Sender: TObject);
var
  SelPos: Integer;
begin
  // Ищем очередной фрагмент в тексте
  SelPos := Pos(ReplaceDialog1.FindText,
                Copy(Memo1.Lines.Text,p,Length(Memo1.Lines.Text)-p+1));
  if SelPos > 0 then
  begin
    // Фрагмент найден - выделяем его
    Memo1.SelStart := SelPos + p - 2;
    Memo1.SelLength := Length(ReplaceDialog1.FindText);
    // Обязательно передаем фокус, чтобы увидеть изменения!!!
    Memo1.SetFocus;
    p:=p + SelPos; //Вычисляем позицию для нового поиска
  end
    else
      ShowMessage('Текст "' + ReplaceDialog1.FindText + '" не найден!');
end;

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

procedure TForm1.ReplaceDialog1Replace(Sender: TObject);
var
  SelPos: Integer;
begin
  // Проверяем, нажата ли кнопка "Заменить все"
  if frReplaceAll in ReplaceDialog1.Options then
  begin // Нажата - производим замену во всем тексте
    SelPos := Pos(ReplaceDialog1.FindText,Memo1.Lines.Text);
    while SelPos>0 do
    begin
      Memo1.Lines.Text:=
          // Берем текст до начала искомого фрагмента,
          Copy(Memo1.Lines.Text,1,SelPos-1)+
          // прибавляем заменяющий текст и
          ReplaceDialog1.ReplaceText +
          // добавляем текст после искомого фрагмента.
          Copy(Memo1.Lines.Text,
               SelPos + Length(ReplaceDialog1.FindText),
               Length(Memo1.Lines.Text)-SelPos + Length(ReplaceDialog1.FindText));
      SelPos := Pos(ReplaceDialog1.FindText,Memo1.Lines.Text);
    end
  end
  else // Нажата кнопка "Заменить"
    if Memo1.SelText <> '' then  // Если есть выделенный фрагмент - меняем его 
        Memo1.SelText := ReplaceDialog1.ReplaceText;
end;

Текст этого примера можно взять здесь.

   
Внешний вид работающего приложения приведен на рисунке 3.


Рис.3. Замена требуемого фрагмента

   
На следующем шаге мы рассмотрим компонент TPageSetupDialog.

Вкладка Dialogs. Компонент TFindDialog

   
На этом шаге мы рассмотрим компонент, используемый для поиска фрагмента текста.

   
Стандартное диалоговое окно компонента TFindDialog используется для поиска фрагмента текста (рисунок 1).


Рис.1. Стандартное окно компонента TFindDialog

   
Свойства компонента TFindDialog перечислены в таблице 1.

Таблица 1. Свойства компонента TFindDialog

Свойство Описание
property FindText: String; Определяет образец поиска
property Left: Integer; Содержит горизонтальную позицию левого верхнего угла места появления окна
property Options: TFindOptions; Определяет настройку диалогового окна (см. ниже)
property Position: TPoint; Содержит горизонтальную и вертикальную позиции левого верхнего угла места появления окна
property Top: Integer; Содержит вертикальную позицию левого верхнего угла места появления окна

   
Для компонента определен следующий тип, использующийся в свойстве Options:

type TFindOption = (frDown, frFindNext, frHideMatchCase,
        frHideWholeWord, frHideUpDown, frMatchCase, 
        frDisableMatchCase, frDisableUpDown, frDisableWholeWord, 
        frReplace, frReplaceAll, frWholeWord, frShowHelp);
TFindOptions = set of TFindOption;

Его значения имеют следующий смысл:

  • frDown - устанавливает поиск вперед по тексту;
  • frFindNext - сообщает программе, что пользователь щелкнул на кнопке Найти далее;
  • frHideMatchCase - снимает флажок С учетом регистра;
  • frHideWholeWord - снимает флажок Только слово целиком;
  • frHideUpDown - скрывает переключатели выбора направления поиска;
  • frMatchCase - устанавливает флажок С учетом регистра;
  • frDisableMatchCase - делает недоступным флажок С учетом регистра;
  • frDisableUpDown - запрещает выбор направления поиска;
  • frDisableWholeWord - делает недоступным флажок Только слово целиком;
  • frReplace - используется в компоненте TReplaceDialog и указывает на необходимость замены найденного фрагмента;
  • frReplaceAll - используется в компоненте TReplaceDialog и указывает на необходимость замены всех вхождений образца поиска;
  • frWholeWord - устанавливает флажок Только слово целиком;
  • frShowHelp - включает в окно кнопку Справка.

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

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

   
На форме разместим компонент TFindDialog, а также кнопку TButton и компонент TMemo, содержащий текст,
в котором будет осуществляться поиск.


Рис.2. Внешнинй вид проекта

   
Кнопка TButton используется для активизации окна поиска:

{$R *.dfm}
var
  p: Integer; // Позиция, с которой начнется очередной поиск

procedure TForm1.Button1Click(Sender: TObject);
begin
  p:=1; // Первоначальное значение позиции: поиск сначала текста
  FindDialog1.Execute;
end;

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

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

procedure TForm1.FindDialog1Find(Sender: TObject);
var
  SelPos: Integer;
begin
  // Ищем очередной фрагмент в тексте
  SelPos := Pos(FindDialog1.FindText,
                Copy(Memo1.Lines.Text,p,Length(Memo1.Lines.Text)-p+1));
  if SelPos > 0 then
  begin
    // Фрагмент найден - выделяем его
    Memo1.SelStart := SelPos + p - 2;
    Memo1.SelLength := Length(FindDialog1.FindText);
    // Обязательно передаем фокус, чтобы увидеть изменения!!!
    Memo1.SetFocus;
    p:=p + SelPos; //Вычисляем позицию для нового поиска
  end
    else
      ShowMessage('Текст "' + FindDialog1.FindText + '" не найден!');
end;

Текст этого примера можно взять здесь.

   
Внешний вид работающего приложения приведен на рисунке 3.


Рис.3. Поиск требуемого фрагмента

   
На следующем шаге мы рассмотрим компонент TReplaceDialog.

Вкладка Dialogs. Компонент TPrinterSetupDialog

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

   
Компонент TPrinterSetupDialog создает диалоговое окно настройки параметров принтера,
вид которого зависит от типа принтера.


Рис.1. Пример диалогового окна TPrinterSetupDialog

   
Это окно взаимодействует с драйвером принтера и не возвращает в программу никакой информации, поэтому его метод
Execute - процедура, а не функция.

   
На следующем шаге мы рассмотрим компонент TFindDialog.