Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Как реализовать эл. подпись документов на сайте?

Лучший ответ:
Модулей нормальных нет. Есть якобы электронный документооборот от КриптоАРМ, но мне не удалось его заставить нормально работать, плюс лишняя прослойка добавляется поверх КриптоПро. И если КриптоПро стоит у всех кто пользуется ЭЦП, то КриптоАРМ так не распространен и придется клиентам его ставить.

Своими силами реализуется с помощью КриптоПро ЭЦП Browser Plugin, там есть js библиотека cades для взаимодействия с КриптоПро и подписания документов и т.д. Но проблема в том что подписать это пол дела, на сервере надо проверять подпись и верифицировать ее, иначе легко можно подписать не своей подписью или не квалифицированной (квалифицированная = юридически значимая). Для этого нужно на сервер устанавливать КриптоПро SDK и патчить php 7 чтобы добавить в php библиотеку cades, которая как раз и позволит работать с ЭЦП на сервере, проверки подписей и т.д. и т.п. 
Все это есть в документации к КриптоПро тут https://docs.cryptopro.ru/cades/

Худший ответ:
SDK должен выдать центр, удостоверяющий эти самые ЭЦП. А вместе с ним и инструкции по подключению.
Вопрос: Как вы настраиваете рабочее окружение для работы на node.js?

Лучший ответ:
Docker вам поможет

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

Лучший ответ:
Самым корректным способом парсить HTML на PHP будет использование модулей DOM и XPath
https://www.php.net/manual/ru/class.domdocument.php
Либо обёртку над ними на подобии Simple HTML DOM.

Парсить HTML документ регулярками это плохая идея. Регулярки подходят только для совсем простых случаев, типа найти ссылку в документе и тд.

Худший ответ:
Мне кажется - надо написать конечный автомат. Например, при появлении символа < - он переходит в состояние "внутри тэга", их которого он выйдет по символу >. Но внутри символа тэга - бывают строки (вход - по апострофу или кавычке; выход -= по такому же символу).

При определённых условиях - происходит завершение чтения определённого элемента (слова или тега) и переход к следующему.

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

Кстати, у Вас не определено, что делать, если в тексте несколько пробелов.
Вопрос: Можно ли для администрирования Linux обойтись без BASH?

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

а скрипты/утилиты можно писать на чём угодно.

Худший ответ:
Вы путаете язык программирования и интерфейс командной строки.

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

Лучший ответ:
Есть много возможных причин, юный подован, от неправильно настроенного файрволла до буддийского "не судьба".
Чтобы понять, а не угадать в чём причина, нужны дополнительные сведения:
- Информация об ошибке ssh (что даёт).
- Результаты сканирования портов ssh - открыт или нет (после ребута и после Ctrl+Alt+Del).
- айпи-адрес устройства (совпадает ли после ребута и после Ctrl+Alt+Del).
и многое другое. Но, начнём с указанного выше

Худший ответ:
А на сервере (на клауде) в Debi пользователь есть или только root?
Вопрос: Как ограничить отправку смс при регистрации пользователей?

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

Худший ответ:
Как работает отправка СМС - сервер шлёт на смс-шлюз запрос. Значит, нужно, чтобы смс-шлюз принимал запросы только с ip адреса вашего сервера. Если смс-шлюз свой, то не вижу проблем, если не свой, то напишите провайдеру.
массовый запрос на отправку смс на разные номера
Устанавливать сессию, если большего одного запроса с одной сессии, то блокировать отправку с этой сессии.
Если разные сессии, то ставить ограничения по ip на 5-60 минут. Не думаю, что с одного ip в течение часа кто то захочет воспользоваться вашим сервисом.
К тому же я бы приделал ограничение по Гео - rosreestr.subnets.ru/?get=num&num=79154610100
Второй момент - проводить смс регистрацию, после подтверждения email.
Ну, и добавить третью версию капчи от гугл, для надежности.
Вопрос: Можно ли посмотреть какие шрифты используются в макете в figma?

Лучший ответ:
Скачайте плагин (Logo Figma  ->  Plugins -> Browse plugins in Community). Этот плагин называется Font Fascia, когда вы хотите узнать, какие шрифты используются в самом макете, просто нажимаете на этот плагин (путь такой же) и он вам выдается все шрифты которые используются

Худший ответ:
Простите, немного не в тему - но дизайнер обязан делать UI-карту стилей.
Лучше сразу отказаться от верстки такого макета, или как минимум до того момента пока данная карта не появится. Дабы не бегать и не искать чудо расширения для Figma/Photoshop/Sketch/Adobe AD.
Вопрос: Как вы развиваетесь и откуда черпаете информацию?

Лучший ответ:
Книги.

Худший ответ:
Закладки в Хроме в отдельных папках типа "Уроки php", "Уроки js", и там все - и статьи и примеры кода и страницы из официальных мануалов.
Информации - О К Е А Н, нужно уметь ее фильтровать и поддерживать у самого себя уровень Интереса к изучению нового.
Вопрос: Что нужно для Junior Frontend?

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

Худший ответ:
Поучи основы JavaScript 
Назови сам себе какие есть типы данных в js
Посмотри чем отличается var const let
Равны ли между собой два пустых объекта
Чем отличается null от undefined
Что такое this
Что такое promise
Прочитай про event
Посмотри что такое prototype
Область видимости 

Так же сверстать пару хороших макетов. Ну и само собой куча собесов. Параллельно учи реакт, выучи все хуки. Чем отличается useMemo от useCallback например (ну это уже по реакт вопрос). 

Научись продавать себя, на собесах будь спокоен, покажи что тебе интересно развиваться, если это конечно так
Вопрос: Uncaught SyntaxError: Unexpected end of JSON input?

Лучший ответ:
Согласно коду, если пользователь существует - будет ошибка, и будет JSON с этой ошибкой.
А если такой пользователь НЕ существует - будет пустой вывод, вообще без какого-либо JSON, как у вас на втором скриншоте, так? Ну так сделайте какой-нибудь else:
$errors['success']="Пользователь радостно создан. Аллилуя!";

Худший ответ:
1) sendAjaxForm укажите сразу тип возвращаемого значения json, зачем эти танцы с хтмл который парсится в жсон...
2) Загадка на сообразительность: Если логин есть и пользователя с таким логином нет - что вернет json_encode($errors);?
Вопрос: SQL-запрос(ы) к базе данных?

Лучший ответ:
'id' - строка
`id` - имя колонки/таблицы/базы данных

Худший ответ:
Синтаксис MySQL подразумевает использование символа "бэктик" или машинописный обратный апостроф(`) для обозначения имен. Вы же используете одинарные кавычки ('). 
Также рекомендуется добавить PRIMARY KEY AUTO_INCREMENT для поля `id`, и пофиксить определение поля `text`
CREATE TABLE `textlog` (
    `id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
    `chat_id` int(111) NOT NULL,
    `text` text NOT NULL,
    `date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP   
) ENGINE=MyISAM DEFAULT CHARSET=utf8; 

выполнить SQL запрос
Вопрос: Upwork официально запрещает общаться вне их чата?

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

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

Худший ответ:
unsolicited contact 
without an explicit invitation from the other party

Я правильно понимаю, что Формально, судя по тексту — нет, не правильно. Что будет на самом деле мы не знаем.
Вопрос: Как изменить начальный путь из корня проэкта?

Лучший ответ:
указать alias в webpackresolve: {
        alias: {
            '~': path.resolve(__dirname, 'src'),
            '~i': path.resolve(__dirname, 'src/images/img/icons'),
        }
    },
В проекте подключать как:import Img from '~i/sign-out.svg';

Худший ответ:
Предлагаю посмотреть на https://webpack.js.org/configuration/resolve/#reso...
Это поможет обозначить папку src как ту, в которой можно искать модули. Тем самым, можно будет начинать импорт с имени папки/файла, находящихся в src
Вопрос: Какой тип баз данных самый быстрый?

Лучший ответ:
Какой транспорт самый быстрый? Болид F1? А если с десятью тоннами груза? А если на пересечённой местности? А если на воде? Уловили посыл? Скорость тех или иных видов СУБД зависит от условий эксплуатации. В одних условиях быстрее будет одно, в других другое.

Худший ответ:
Можно говорить о скорости чтения и о скорости записи.
Для достижения максимальной скорости в этих двух случаях (в контексте использования НМЖД) существуют два типа БД: строковые и колоночные.
Строковые БД хранят данные таблиц по строкам, т.е. на дорожку пластины диска последовательно пишется сначала 1-е поле записи, затем 2-е, 3-е и т.д. Затем точно также пишется следующая запись. В данном случае достигается максимальная скорость записи. Но при чтении, даже, если вы запрашиваете одно поле таблицы, в память будут считываться с диска все строки целиком, которые затрагивает запрос.
Если же нужна максимальная скорость чтения, то выбираем колоночную БД. Данные колоночной БД хранятся на диске по полям (колонкам) и чтение происходит очень быстро.
Вопрос: Как вывести информацию из терминала?

Лучший ответ:
Если я вас правильно понял... Вобщем под линукс я пользуюсь вот этим...

Худший ответ:
Если я вас правильно понял... Вобщем под линукс я пользуюсь вот этим...
Вопрос: Где найти годный парсер адресов?

Лучший ответ:
воспользуйтесь сервисом dadata.ru?

Худший ответ:
Ищите на гитхабе по фразе ФИАС
https://github.com/zabralex85/fias.parser

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

Лучший ответ:
1. Мошенничество  это плохо. 
2. В реестре эта информация не хранится. 
3. Там хранится временная информация, создаваемая загрузчиком, для мэппинга дисков на DosDevices
4. Информация о диске содержится в разделе NTFS + в разметке диска (вот ее можно зашаманить) 
5. WD лучше не брать

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

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

Худший ответ:
Берёте и пишите console.log(document) смотрите внимательно прототип и гуглите каждый из ключей, пару часов займёт, а довести до автоматизации поможет только практика-практика и ещё раз практика.
Вопрос: Значительна ли разница между отдачей изображений напрямую и отдачей изображений через скрипт?

Лучший ответ:
Я пользуюсь таким способом: гружу картинку в оригинале на хост, при запросе уменьшеной картинки по адресу  site/img/small/filename.jpg в htaccess делаю переадресацию на php скрипт, который делает resize и сохраняет по адресу site/img/small/filename.jpg
При повторных запросах php скрипт уже не выполняется и отдаётся оригинальная картинка

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^img/small/(.+) resize/resize.php?file=$1

Худший ответ:
Возможно стоит посмотреть в сторону 
header("X-Accel-Redirect: /img.jpg");
Вопрос: Как выявить взломали сервер или нет?

Лучший ответ:
Здесь по идее должен быть патч Бармина :) Но не будет, потому как ведь на самом деле воспользуется :)

Худший ответ:
Учитывая такую чехорду, то взламывать никому ничего не пришлось. Ты все сам сделал. Закрой все порты, кроме портов доступа к серверу, потом открой нужные. Все посторонние входящие/исходящие блокируй.
Вопрос: Где можно посмотреть структуру базы данных для реализации RBAC и ABAC?

Лучший ответ:
Ну, вот, недавно делал:


Худший ответ:
ну рбак это же совсем просто :
CREATE TABLE IF NOT EXISTS `roles` (
  `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `description` varchar(255) NOT NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `uniq_name` (`name`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8;

INSERT INTO `roles` (`id`, `name`, `description`) VALUES(1, 'login', 'Login privileges, granted after account confirmation');
INSERT INTO `roles` (`id`, `name`, `description`) VALUES(2, 'admin', 'Administrative user, has access to everything.');

CREATE TABLE IF NOT EXISTS `roles_users` (
  `user_id` int(11) UNSIGNED NOT NULL,
  `role_id` int(11) UNSIGNED NOT NULL,
  PRIMARY KEY  (`user_id`,`role_id`),
  KEY `fk_role_id` (`role_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `users` (
  `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  `email` varchar(255) NOT NULL,
  `username` varchar(255) NOT NULL DEFAULT '',
  `password` varchar(255) NOT NULL,
  `logins` int(11) UNSIGNED NOT NULL DEFAULT 0,
  `last_login` int(11) UNSIGNED,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `uniq_username` (`username`),
  UNIQUE KEY `uniq_email` (`email`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `user_tokens` (
  `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  `user_id` int(11) UNSIGNED NOT NULL,
  `user_agent` varchar(255) NOT NULL,
  `token` varchar(255) NOT NULL,
  `created` int(11) UNSIGNED NOT NULL,
  `expires` int(11) UNSIGNED NOT NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `uniq_token` (`token`),
  KEY `fk_user_id` (`user_id`),
  KEY `expires` (`expires`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8;

ALTER TABLE `roles_users`
  ADD CONSTRAINT `roles_users_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `roles_users_ibfk_2` FOREIGN KEY (`role_id`) REFERENCES `roles` (`id`) ON DELETE CASCADE;

ALTER TABLE `user_tokens`
  ADD CONSTRAINT `user_tokens_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;
Вопрос: Как сменить тему одного приложения в elementary os?

Лучший ответ:
запускай приложение предварительно объявив переменную темы
или прописать в файл *.desktop
примерно так:
Exec=env GTK_THEME=Adwaita:dark geany 
не так давно, где то в сети, попадалась статья,  вот первое подобное, что нагуглилось

Худший ответ:
Посмотрите в настройках приложений, хотя если тему ОС меняет для всех приложений автоматом,то скорее , возможно понадобится вернуть старую тему.
Вопрос: Get запрос к json файлу. Что это?

Лучший ответ:
tasks.json это не статический файл. Это один из видов записи запроса к api, где json может просто указывать запросу, в каком формате надо вернуть данные

Худший ответ:
Файл - это то, что лежит у вас в папке на компьютере. А в адресной строка браузера - адрес.
По адресу Красная Площадь дом 1 может проживать какой-то определенный человек (статический ресурс). А может быть, там офис с большой текучкой кадров, и каждый день по этому адресу вы будете встречать нового человека (динамический ресурс).
Нагуглить нужно было URL, а еще лучше URI. Там нет ничего про "расширение файла". Хотя для удобства понимания в адресе оно может фигурировать. Собственно, в адресе могут быть отражены даже реальные файлы, но ваш случай не такой.
Вопрос: Как рискнуть в этом деле?

Лучший ответ:
но как перебороть упадок дохода, сам психологический факт

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

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

Есть ли смысл
Тут каждый день пачка вопросов "есть ли смысл мне сделать вот это". Кто же вас знает, в 21 год пора решать самому - есть он для вас или нет. 

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

Худший ответ:
начать изучение laravel или react( еще определяюсь )

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

Как выкроить время? Вариантов уйма:

1) Накопите денег и учитесь. Тем более что семьи и кредитов нет. Недостаток денег хорошо мотивирует в учебе.
2) Повысьте кпд своей работы. Автоматизируйте рутину. Сборщики, препроцессоры, библиотеки для фронта. Скрипты. 
3) Повысьте ставку. Часть клиентов отсеется, часть останется. Но при правильном выборе будете зарабатывать столько же при таких же затратах времени.
4) Если процесс отлажен, рассмотрите возможность делегирования задач и контролируйте их выполнение, оставив на себе общение с клиентами. Доход снизится, но будет больше времени, да и возможность брать больше заказов.
Вопрос: Мой хост постоянно пингуют? DDOS? что это?

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

Худший ответ:
Узнайте ответ методом исключения. Это и будет решением.
Попробуйте отключить роутер от интернета. Проблема осталась?
А локальная сеть большая? Много устройств? Есть шанс, что где-то есть другой выход в интернет?
В документации к самой программе есть информация, что это может быть? Может быть, где-то в FAQ или просто в описании того, что есть что в интерфейсе.
Что по MAC-адресам? Какая машина это шлет?
Кто может подделывать пакеты в сети? Отключайте устройства (от сети) по одному.
И так далее. В таких случаях лучше не гадать и не хвастать своими навыками ясновидения, а просто проверить.
Вопрос: Есть много картинок и хочется при ховере показывать цифру, но не хочется писать цифры всем картинкам Возможно сделать проще?

Лучший ответ:
Можно на CSS
snippet

Худший ответ:
если все цифры по порядку - 
1) задайте класс или дата аттрибут для всех картинок на которые надо задать цифры
2) по загрузке документа выбираете все картинки с этим свойством, в чистом жс получите сет, в жквери сразу итерэйбл объект. Для сета используете Array.from(ваш_сет), получите массив, и уже на массиве можете использовать цикл, чтобы задать каждой картинке номер.
3) В цикле вешаете событие onMouseOver на ваши картинки, к событию назначаете функцию которая будет показывать текущий номер картинки.
Вопрос: Как отправить большой файл(аудио или видео) на сервер с android приложения правильно?

Лучший ответ:
Взрослые разработчики используют заголовки. Никто не ограничивает вас в использовании заголовка Content-Range в запросе. 

Прошу прощения, позволю себе использовать синтаксис httpie.

POST "/upload/" 
Content-Type:[MEDIA_TYPE] 
Content-MD5:[BASE64_MD5_FILE] 
Content-Range: bytes [FROM_BYTES]-[TO_BYTES]/[FILE_SIZE] 
file@file.ext

Один эндпойнт. Без бойлерплейта из трех разных запросов. 
bytes 0-? : создаёт файл, рекомендовал бы создавать с именем md5;
bytes ? -? : запись в файл
bytes ? - total_size : запись в файл, проверка контрольной суммы, переименование. 

Размер чанка = ширина канала >> 1

Худший ответ:
Реализуете следующие api
/api/continuousupload - принимает  multipart/form-data
/api/continuousuploadcreate - создает длительную закачку на сервере
/api/continuousuploadinfo - отдает информацию по чанку
На клиенте
1.  /api/continuousuploadcreate - создаете закачку сервер возвращает id
2. бьете файл на чанки пусть по 2 мегабайта отправляете через /api/continuousupload
3. сервер в мета файле записывает позицию указатель и записывает поток байт принятый от /api/continuousupload
4. При обрыве связи сервер отдает точно записанные данные через  /api/continuousuploadinfo клиент  передает чанк начиная с позиции
Соответственно и на сервере и на клиенте нужно вычислять контрольные суммы при передаче.
Вопрос: Как выпарсить все цифры из строки C#?

Лучший ответ:
Проще будет сделать так:
string line = "12sds52124d22";

string result = Regex.Replace(line, @"[^\d]", "");

Худший ответ:
Пойдет ?

var line = "12sds52124d22";
var result = new Regex("[0-9]+").Matches(line);
foreach(var match in result) Console.WriteLine(match);
Вопрос: На какой стороне может быть затык с максимальным количеством tcp соеденений?

Лучший ответ:
Судя по ошибке, упираетесь в лимит открытых дескрипторов. Можно вручную поднять через ulimit. Как установить для вашей ОС на постоянку, зависит от вашей ОС

Худший ответ:
Для скрапинга использую aiohttp
Бежит на одной машине? Линукс?
Вопрос: В чем разница системного аналитика и ИТ-архитектора?

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

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

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

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

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