<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://wiki.inbicst.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%A1%D1%82%D1%83%D0%B4%D1%81%D0%B0%D0%B9%D1%82</id>
	<title>Студсайт - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.inbicst.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%A1%D1%82%D1%83%D0%B4%D1%81%D0%B0%D0%B9%D1%82"/>
	<link rel="alternate" type="text/html" href="https://wiki.inbicst.ru/index.php?title=%D0%A1%D1%82%D1%83%D0%B4%D1%81%D0%B0%D0%B9%D1%82&amp;action=history"/>
	<updated>2026-11-05T01:42:59Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://wiki.inbicst.ru/index.php?title=%D0%A1%D1%82%D1%83%D0%B4%D1%81%D0%B0%D0%B9%D1%82&amp;diff=58&amp;oldid=prev</id>
		<title>Nepike: Убраны разделы «Что есть на сайте» и «Посмотреть сайт глазами пользователя»</title>
		<link rel="alternate" type="text/html" href="https://wiki.inbicst.ru/index.php?title=%D0%A1%D1%82%D1%83%D0%B4%D1%81%D0%B0%D0%B9%D1%82&amp;diff=58&amp;oldid=prev"/>
		<updated>2026-09-27T21:27:06Z</updated>

		<summary type="html">&lt;p&gt;Убраны разделы «Что есть на сайте» и «Посмотреть сайт глазами пользователя»&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 00:27, 28 сентября 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Строка 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Статус страницы|ответственный=[[Участник:Nepike|Nepike]]|проверено=2026-09-27}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Статус страницы|ответственный=[[Участник:Nepike|Nepike]]|проверено=2026-09-27}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Студсайт&amp;#039;&amp;#039;&amp;#039; — студенческий портал факультета КНТ МФТИ: [https://knt-mipt.ru knt-mipt.ru]. Главный проект, который поддерживает IT-отдел. Исходный код открыт: [https://github.com/Nepike/knt-portal github.com/Nepike/knt-portal].&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Студсайт&amp;#039;&amp;#039;&amp;#039; — студенческий портал факультета КНТ МФТИ: [https://knt-mipt.ru knt-mipt.ru]. Главный проект, который поддерживает IT-отдел. Исходный код открыт: [https://github.com/Nepike/knt-portal github.com/Nepike/knt-portal].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;== Что есть на сайте ==&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Почти весь сайт доступен только после входа. Без аккаунта открываются страница для абитуриентов (&amp;lt;code&amp;gt;/about/&amp;lt;/code&amp;gt;, туда же ведёт главная), контакты (&amp;lt;code&amp;gt;/contacts/&amp;lt;/code&amp;gt;), форма поддержки и страницы входа.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Для студентов:&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &#039;&#039;&#039;Материалы&#039;&#039;&#039; — учебные материалы, которые загружают студенты; проходят модерацию.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &#039;&#039;&#039;Библиотека&#039;&#039;&#039; — каталог книг, тоже с модерацией.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &#039;&#039;&#039;Преподаватели&#039;&#039;&#039; — карточки преподавателей и отзывы студентов.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &#039;&#039;&#039;Лекторий&#039;&#039;&#039; — видеолекции (плейлисты проходят проверку, плеер HLS).&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &#039;&#039;&#039;Чаты&#039;&#039;&#039; — с участниками, реакциями и вложениями, обновляются в реальном времени.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &#039;&#039;&#039;Стена&#039;&#039;&#039; — пиксельный холст в духе r/place, тоже в реальном времени.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &#039;&#039;&#039;Экономика и косметика&#039;&#039;&#039; — внутренняя валюта и то, что на неё покупается: рамки аватара и шапки профиля.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &#039;&#039;&#039;Закладки&#039;&#039;&#039; и &#039;&#039;&#039;комментарии&#039;&#039;&#039; к материалам и лекциям.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Как появляются аккаунты ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Как появляются аккаунты ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l84&quot;&gt;Строка 84:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 71:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{TODO|Завести отдельную ветку для разработки и, возможно, бета-версию сайта, чтобы изменения не попадали на прод сразу}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{TODO|Завести отдельную ветку для разработки и, возможно, бета-версию сайта, чтобы изменения не попадали на прод сразу}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;== Администрирование ==&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Telegram-чаты ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;=&lt;/del&gt;== Telegram-чаты &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;=&lt;/del&gt;==&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Бот сайта пишет в отдельные Telegram-группы: фидбек, техподдержка, в будущем — магазин; со временем могут появиться и другие. Людей в группы добавляет глава отдела.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Бот сайта пишет в отдельные Telegram-группы: фидбек, техподдержка, в будущем — магазин; со временем могут появиться и другие. Людей в группы добавляет глава отдела.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Куда писать, задаётся не в коде, а в админке сайта (&amp;lt;code&amp;gt;/admin/&amp;lt;/code&amp;gt;, раздел «Телеграм-чаты»): название, chat ID и, для групп с темами, ID темы. Chat ID живого чата можно узнать у бота командой &amp;lt;code&amp;gt;/get_chat_id&amp;lt;/code&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Куда писать, задаётся не в коде, а в админке сайта (&amp;lt;code&amp;gt;/admin/&amp;lt;/code&amp;gt;, раздел «Телеграм-чаты»): название, chat ID и, для групп с темами, ID темы. Chat ID живого чата можно узнать у бота командой &amp;lt;code&amp;gt;/get_chat_id&amp;lt;/code&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;=== Посмотреть сайт глазами пользователя ===&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Кнопки «войти как» на сайте намеренно нет. Если нужно увидеть то же, что видит конкретный студент, на сервере есть команда, которая выдаёт готовую сессию:&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;syntaxhighlight lang=&quot;bash&quot;&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;cd /srv/knt&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;docker compose exec web python manage.py session_for student@phystech.edu&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Ключ сессии кладётся в куку браузера — делайте это в приватном окне. Всё, что вы сделаете в этот момент (комментарии, сообщения), будет подписано именем этого пользователя.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Локальный запуск ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Локальный запуск ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki:diff:1.41:old-57:rev-58:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Nepike</name></author>
	</entry>
	<entry>
		<id>https://wiki.inbicst.ru/index.php?title=%D0%A1%D1%82%D1%83%D0%B4%D1%81%D0%B0%D0%B9%D1%82&amp;diff=57&amp;oldid=prev</id>
		<title>Nepike: /* Предыдущие версии */</title>
		<link rel="alternate" type="text/html" href="https://wiki.inbicst.ru/index.php?title=%D0%A1%D1%82%D1%83%D0%B4%D1%81%D0%B0%D0%B9%D1%82&amp;diff=57&amp;oldid=prev"/>
		<updated>2026-09-27T20:50:48Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Предыдущие версии&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 23:50, 27 сентября 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l109&quot;&gt;Строка 109:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 109:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Предыдущие версии ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Предыдущие версии ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Первое поколение этого сайта — [https://github.com/Nepike/knt-portal-legacy knt-portal-legacy]&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;; данные из него переносятся командами &amp;lt;code&amp;gt;import_legacy*&amp;lt;/code&amp;gt;&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Первое поколение этого сайта — [https://github.com/Nepike/knt-portal-legacy knt-portal-legacy].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Доступ ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Доступ ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki:diff:1.41:old-27:rev-57:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Nepike</name></author>
	</entry>
	<entry>
		<id>https://wiki.inbicst.ru/index.php?title=%D0%A1%D1%82%D1%83%D0%B4%D1%81%D0%B0%D0%B9%D1%82&amp;diff=27&amp;oldid=prev</id>
		<title>Nepike: Домены — на отдельной странице; категория по области</title>
		<link rel="alternate" type="text/html" href="https://wiki.inbicst.ru/index.php?title=%D0%A1%D1%82%D1%83%D0%B4%D1%81%D0%B0%D0%B9%D1%82&amp;diff=27&amp;oldid=prev"/>
		<updated>2026-09-27T18:59:30Z</updated>

		<summary type="html">&lt;p&gt;Домены — на отдельной странице; категория по области&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 21:59, 27 сентября 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l31&quot;&gt;Строка 31:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 31:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| files.inbicst.ru || Отдельный домен для скачивания файлов сайта&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| files.inbicst.ru || Отдельный домен для скачивания файлов сайта&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Домены &lt;/del&gt;зарегистрированы &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;на главу отдела — Макса Щучкина ([[Участник:Nepike|Nepike]]) — у регистратора [https://masterhost.ru masterhost.ru], логин &amp;lt;code&amp;gt;c540014&amp;lt;/code&amp;gt; (пароль — у Nepike). &lt;/del&gt;DNS-записи &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;при этом редактируются не там, а в [https://dash.cloudflare.com Cloudflare] — в общем аккаунте отдела «INBICST». Как получить доступ &lt;/del&gt;— см. [[&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Доступы&lt;/del&gt;]].&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Где &lt;/ins&gt;зарегистрированы &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;домены и как настраиваются &lt;/ins&gt;DNS-записи — см. [[&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Домены и DNS&lt;/ins&gt;]].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Как устроен ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Как устроен ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l114&quot;&gt;Строка 114:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 114:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Как получить доступ к репозиторию и серверу — см. [[Доступы]].&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Как получить доступ к репозиторию и серверу — см. [[Доступы]].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Категория:&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;За что отвечает отдел&lt;/del&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Категория:&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Сайт и онлайн-сервисы&lt;/ins&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki:diff:1.41:old-4:rev-27:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Nepike</name></author>
	</entry>
	<entry>
		<id>https://wiki.inbicst.ru/index.php?title=%D0%A1%D1%82%D1%83%D0%B4%D1%81%D0%B0%D0%B9%D1%82&amp;diff=4&amp;oldid=prev</id>
		<title>Nepike: Первая версия (черновик из репозитория knt-wiki)</title>
		<link rel="alternate" type="text/html" href="https://wiki.inbicst.ru/index.php?title=%D0%A1%D1%82%D1%83%D0%B4%D1%81%D0%B0%D0%B9%D1%82&amp;diff=4&amp;oldid=prev"/>
		<updated>2026-09-27T17:36:52Z</updated>

		<summary type="html">&lt;p&gt;Первая версия (черновик из репозитория knt-wiki)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Статус страницы|ответственный=[[Участник:Nepike|Nepike]]|проверено=2026-09-27}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Студсайт&amp;#039;&amp;#039;&amp;#039; — студенческий портал факультета КНТ МФТИ: [https://knt-mipt.ru knt-mipt.ru]. Главный проект, который поддерживает IT-отдел. Исходный код открыт: [https://github.com/Nepike/knt-portal github.com/Nepike/knt-portal].&lt;br /&gt;
&lt;br /&gt;
== Что есть на сайте ==&lt;br /&gt;
Почти весь сайт доступен только после входа. Без аккаунта открываются страница для абитуриентов (&amp;lt;code&amp;gt;/about/&amp;lt;/code&amp;gt;, туда же ведёт главная), контакты (&amp;lt;code&amp;gt;/contacts/&amp;lt;/code&amp;gt;), форма поддержки и страницы входа.&lt;br /&gt;
&lt;br /&gt;
Для студентов:&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Материалы&amp;#039;&amp;#039;&amp;#039; — учебные материалы, которые загружают студенты; проходят модерацию.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Библиотека&amp;#039;&amp;#039;&amp;#039; — каталог книг, тоже с модерацией.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Преподаватели&amp;#039;&amp;#039;&amp;#039; — карточки преподавателей и отзывы студентов.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Лекторий&amp;#039;&amp;#039;&amp;#039; — видеолекции (плейлисты проходят проверку, плеер HLS).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Чаты&amp;#039;&amp;#039;&amp;#039; — с участниками, реакциями и вложениями, обновляются в реальном времени.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Стена&amp;#039;&amp;#039;&amp;#039; — пиксельный холст в духе r/place, тоже в реальном времени.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Экономика и косметика&amp;#039;&amp;#039;&amp;#039; — внутренняя валюта и то, что на неё покупается: рамки аватара и шапки профиля.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Закладки&amp;#039;&amp;#039;&amp;#039; и &amp;#039;&amp;#039;&amp;#039;комментарии&amp;#039;&amp;#039;&amp;#039; к материалам и лекциям.&lt;br /&gt;
&lt;br /&gt;
== Как появляются аккаунты ==&lt;br /&gt;
Регистрация закрытая: аккаунты заводит администратор сайта на странице &amp;lt;code&amp;gt;/registration/&amp;lt;/code&amp;gt; (нужно право на создание пользователей).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;По одному&amp;#039;&amp;#039;&amp;#039; — через форму на этой странице.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Целым курсом&amp;#039;&amp;#039;&amp;#039; — загрузить таблицу &amp;lt;code&amp;gt;.xlsx&amp;lt;/code&amp;gt;: обычно это выгрузка ответов Google-формы. Обязательны столбцы с ФИО, почтой и группой; дата рождения и Telegram — по желанию. Столбцы ищутся по началу слова в заголовке, поэтому «Почта», «Удобная почта» и «e-mail» распознаются одинаково, а лишние столбцы пропускаются. До 500 строк и 5 МБ.&lt;br /&gt;
Каждому новому пользователю приходит письмо со ссылкой для входа. Почты, которые уже есть на сайте, пропускаются — одну и ту же выгрузку можно загружать повторно, когда в форме прибавились ответы.&lt;br /&gt;
&lt;br /&gt;
== Адреса ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Адрес !! Что это&lt;br /&gt;
|-&lt;br /&gt;
| [https://knt-mipt.ru knt-mipt.ru] || Основной адрес сайта&lt;br /&gt;
|-&lt;br /&gt;
| inbicst.ru, fnbic.ru, new.knt-mipt.ru || Старые адреса, перенаправляют на knt-mipt.ru (факультет раньше назывался ИНБИКСТ)&lt;br /&gt;
|-&lt;br /&gt;
| files.inbicst.ru || Отдельный домен для скачивания файлов сайта&lt;br /&gt;
|}&lt;br /&gt;
Домены зарегистрированы на главу отдела — Макса Щучкина ([[Участник:Nepike|Nepike]]) — у регистратора [https://masterhost.ru masterhost.ru], логин &amp;lt;code&amp;gt;c540014&amp;lt;/code&amp;gt; (пароль — у Nepike). DNS-записи при этом редактируются не там, а в [https://dash.cloudflare.com Cloudflare] — в общем аккаунте отдела «INBICST». Как получить доступ — см. [[Доступы]].&lt;br /&gt;
&lt;br /&gt;
== Как устроен ==&lt;br /&gt;
Сайт работает на [[Сервер сайта|сервере сайта]] в виде набора Docker-контейнеров (проект Docker Compose в &amp;lt;code&amp;gt;/srv/knt&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Технологии:&amp;#039;&amp;#039;&amp;#039; Python 3.12, Django 6, PostgreSQL 17, Redis, Celery, Django Channels (WebSockets), HTMX и Tailwind 4, хранилище файлов Cloudflare R2, nginx, GitHub Actions.&lt;br /&gt;
&lt;br /&gt;
=== Контейнеры ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Контейнер !! Что делает&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;web&amp;lt;/code&amp;gt; || Сам сайт: Django под gunicorn с двумя uvicorn-воркерами (ASGI, нужен для WebSockets). При старте применяет миграции и собирает статику. Слушает &amp;lt;code&amp;gt;127.0.0.1:8001&amp;lt;/code&amp;gt;, снаружи к нему ходит только nginx.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;db&amp;lt;/code&amp;gt; || PostgreSQL 17, данные в docker-томе &amp;lt;code&amp;gt;knt_pgdata&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;redis&amp;lt;/code&amp;gt; || Четыре задачи на четырёх базах: 0 — шина WebSockets, 1 — очередь Celery, 2 — результаты задач, 3 — кэш (на нём ограничители частоты запросов). На диск ничего не пишет: при перезапуске терять нечего.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;worker&amp;lt;/code&amp;gt; || Celery: фоновые задачи, которых пользователь не должен ждать, — отправка почты и сообщений в Telegram. Один процесс: задачи редкие, а памяти на сервере мало.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;beat&amp;lt;/code&amp;gt; || «Будильник»: сам ничего не делает, только кладёт задачи по расписанию в очередь. Сейчас это одна задача — ночная уборка брошенных загрузок.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;bot&amp;lt;/code&amp;gt; || Telegram-бот сайта: пишет в рабочие чаты (см. [[#Telegram-чаты|ниже]]).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Как проходит запрос ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
браузер ──HTTPS──&amp;gt; nginx на сервере ──&amp;gt; 127.0.0.1:8001 (web: Django) ──&amp;gt; PostgreSQL, Redis&lt;br /&gt;
                        │&lt;br /&gt;
                        └── файлы: отдаёт сам nginx (с диска или из Cloudflare R2),&lt;br /&gt;
                            Django только разрешает доступ&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
HTTPS-сертификаты — Let&amp;#039;s Encrypt, их выпускает и продлевает certbot на сервере.&lt;br /&gt;
&lt;br /&gt;
=== Файлы и видео ===&lt;br /&gt;
Файлы пользователей хранятся в &amp;#039;&amp;#039;&amp;#039;Cloudflare R2&amp;#039;&amp;#039;&amp;#039; (S3-совместимое хранилище). Большие файлы браузер загружает прямо в R2, минуя сервер, а при скачивании байты отдаёт nginx — Python в передаче файлов не участвует.&lt;br /&gt;
&lt;br /&gt;
Файлы лежат в R2 в том же общем аккаунте Cloudflare «INBICST», что и DNS.&lt;br /&gt;
&lt;br /&gt;
Сервер &amp;#039;&amp;#039;&amp;#039;не перекодирует видео&amp;#039;&amp;#039;&amp;#039;: на нём нет и не будет ffmpeg. Видео для лектория и косметики готовит &amp;#039;&amp;#039;&amp;#039;«пекарня»&amp;#039;&amp;#039;&amp;#039; — скрипт &amp;lt;code&amp;gt;tools/bake.py&amp;lt;/code&amp;gt; на машине с видеокартой (ffmpeg + NVENC). Сейчас это новый [[Факультетский сервер|факультетский сервер]] на М4, где пекарня работает как служба systemd. Она сама забирает задания из очереди сайта, скачивает исходник из R2 и загружает туда готовый результат. Пекарне нужен только исходящий интернет, поэтому при поломке её можно запустить на любом компьютере с видеокартой. Подробно — &amp;lt;code&amp;gt;docs/media-pipeline.md&amp;lt;/code&amp;gt; в репозитории.&lt;br /&gt;
&lt;br /&gt;
=== Почта ===&lt;br /&gt;
Письма (приглашения, восстановление пароля) уходят с адреса &amp;lt;code&amp;gt;info@knt-mipt.ru&amp;lt;/code&amp;gt; через SMTP Google (&amp;lt;code&amp;gt;smtp.gmail.com&amp;lt;/code&amp;gt;, порт 465, SSL). Отправляет их не сам запрос, а воркер Celery через очередь — медленный почтовый сервер не тормозит сайт. Пароль от почты хранится в &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; на сервере.&lt;br /&gt;
&lt;br /&gt;
== Как выкатываются изменения ==&lt;br /&gt;
Push в ветку &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; — это и есть деплой:&lt;br /&gt;
# GitHub Actions (&amp;lt;code&amp;gt;.github/workflows/deploy.yml&amp;lt;/code&amp;gt;) заходит на сервер по SSH.&lt;br /&gt;
# В &amp;lt;code&amp;gt;/srv/knt&amp;lt;/code&amp;gt; выполняет &amp;lt;code&amp;gt;git pull&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;docker compose up -d --build&amp;lt;/code&amp;gt;, затем удаляет старые образы.&lt;br /&gt;
# Контейнер &amp;lt;code&amp;gt;web&amp;lt;/code&amp;gt; при старте сам применяет миграции.&lt;br /&gt;
# В Telegram приходят три сообщения: «деплой запущен» со списком коммитов, «завершён» со временем или «упал» со ссылкой на логи. Чат и тема для них задаются секретами репозитория &amp;lt;code&amp;gt;TG_CHAT_ID&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;TG_TOPIC_ID&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Сейчас код пишет один человек, поэтому изменения сразу пушатся в &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt;.&lt;br /&gt;
{{TODO|Завести отдельную ветку для разработки и, возможно, бета-версию сайта, чтобы изменения не попадали на прод сразу}}&lt;br /&gt;
&lt;br /&gt;
== Администрирование ==&lt;br /&gt;
=== Telegram-чаты ===&lt;br /&gt;
Бот сайта пишет в отдельные Telegram-группы: фидбек, техподдержка, в будущем — магазин; со временем могут появиться и другие. Людей в группы добавляет глава отдела.&lt;br /&gt;
&lt;br /&gt;
Куда писать, задаётся не в коде, а в админке сайта (&amp;lt;code&amp;gt;/admin/&amp;lt;/code&amp;gt;, раздел «Телеграм-чаты»): название, chat ID и, для групп с темами, ID темы. Chat ID живого чата можно узнать у бота командой &amp;lt;code&amp;gt;/get_chat_id&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Посмотреть сайт глазами пользователя ===&lt;br /&gt;
Кнопки «войти как» на сайте намеренно нет. Если нужно увидеть то же, что видит конкретный студент, на сервере есть команда, которая выдаёт готовую сессию:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /srv/knt&lt;br /&gt;
docker compose exec web python manage.py session_for student@phystech.edu&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Ключ сессии кладётся в куку браузера — делайте это в приватном окне. Всё, что вы сделаете в этот момент (комментарии, сообщения), будет подписано именем этого пользователя.&lt;br /&gt;
&lt;br /&gt;
== Локальный запуск ==&lt;br /&gt;
Для разработки достаточно Python, база по умолчанию — SQLite:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
export DJANGO_SETTINGS_MODULE=knt.settings.dev&lt;br /&gt;
pip install -r requirements.txt&lt;br /&gt;
python manage.py migrate&lt;br /&gt;
python manage.py runserver&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Стили генерирует Tailwind, в репозитории их нет — без сборки сайт будет без оформления. Тесты: &amp;lt;code&amp;gt;python manage.py test&amp;lt;/code&amp;gt;. Подробности — в README репозитория.&lt;br /&gt;
&lt;br /&gt;
== Предыдущие версии ==&lt;br /&gt;
Первое поколение этого сайта — [https://github.com/Nepike/knt-portal-legacy knt-portal-legacy]; данные из него переносятся командами &amp;lt;code&amp;gt;import_legacy*&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Доступ ==&lt;br /&gt;
Как получить доступ к репозиторию и серверу — см. [[Доступы]].&lt;br /&gt;
&lt;br /&gt;
[[Категория:За что отвечает отдел]]&lt;/div&gt;</summary>
		<author><name>Nepike</name></author>
	</entry>
</feed>