<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://www.wikicshse.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0_%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%82%D0%BE%D1%80%D0%B0_%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%2C_%D1%85%D1%80%D0%B0%D0%BD%D0%B8%D0%BC%D1%8B%D1%85_%D0%B2_GoogleDrive_%28%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%29</id>
	<title>Разработка анализатора файлов, хранимых в GoogleDrive (проект) - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://www.wikicshse.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0_%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%82%D0%BE%D1%80%D0%B0_%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%2C_%D1%85%D1%80%D0%B0%D0%BD%D0%B8%D0%BC%D1%8B%D1%85_%D0%B2_GoogleDrive_%28%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%29"/>
	<link rel="alternate" type="text/html" href="https://www.wikicshse.ru/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0_%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%82%D0%BE%D1%80%D0%B0_%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2,_%D1%85%D1%80%D0%B0%D0%BD%D0%B8%D0%BC%D1%8B%D1%85_%D0%B2_GoogleDrive_(%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82)&amp;action=history"/>
	<updated>2026-06-06T16:22:44Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://www.wikicshse.ru/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0_%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%82%D0%BE%D1%80%D0%B0_%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2,_%D1%85%D1%80%D0%B0%D0%BD%D0%B8%D0%BC%D1%8B%D1%85_%D0%B2_GoogleDrive_(%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82)&amp;diff=2397&amp;oldid=prev</id>
		<title>imported&gt;Dkorolev: Migrated current public revision from wiki.cs.hse.ru</title>
		<link rel="alternate" type="text/html" href="https://www.wikicshse.ru/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0_%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%82%D0%BE%D1%80%D0%B0_%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2,_%D1%85%D1%80%D0%B0%D0%BD%D0%B8%D0%BC%D1%8B%D1%85_%D0%B2_GoogleDrive_(%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82)&amp;diff=2397&amp;oldid=prev"/>
		<updated>2017-10-19T19:18:58Z</updated>

		<summary type="html">&lt;p&gt;Migrated current public revision from wiki.cs.hse.ru&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Карточка_проекта&lt;br /&gt;
|name=Разработка анализатора файлов, хранимых в GoogleDrive&lt;br /&gt;
|mentor=Королев Денис&lt;br /&gt;
|mentor_login={{URLENCODE:Dkorolev|WIKI}}&lt;br /&gt;
|semester=Осень 2017&lt;br /&gt;
|course=2&lt;br /&gt;
|summer=on&lt;br /&gt;
|number_of_students=5-10&lt;br /&gt;
|categorize=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Что это за проект? ===&lt;br /&gt;
В соседнем проекте предлагается разработка файлового менеджера для медиаархивов, расположенных в GoogleDrive (корпоративные и академические аккаунты имеют безлимитные хранилища, что при хорошей скорости доступа позволяет включать их в работу там, где раньше использовались серверы хранения).&lt;br /&gt;
&lt;br /&gt;
Рабочий процесс при работе с медиаархивом на диске Google выглядит следующим образом:&lt;br /&gt;
&lt;br /&gt;
1. Для обмена данными с GoogleDrive используются альтернативные приложения, например, WebDrive, позволяющий подключать облачный аккаунт как логический диск в Windows/Mac.&lt;br /&gt;
&lt;br /&gt;
2. Файлы отображаются в виртуальной файловой системе WebDrive и в веб-интерфейсе GoogleDrive в иерархическом виде, доступны все стандартные действия.&lt;br /&gt;
&lt;br /&gt;
3. Веб-файлменеджер медиаархива показывает ту же структуру файлов, но может формировать другие представления, основываясь на критериях отбора, делать смарт-папки, витрины и давать задания на обработку (например, персонализированную маркировку файлов для отправки клиенту, чтобы было не повадно класть их на видном месте). И здесь возникает первая проблема недостатка метаинформации: про файлы мы в лучшем случае знаем дату их изменения, и то -- не всегда. Если файл загружался через браузер или стандартным приложением Google, то на GoogleDrive запишется дата загрузки. Более детальной информации о многих файлах получить не удастся: если для фотографий доступны данные EXIF (метаданные, которые записывают фотокамеры и фоторедакторы), то про видео известна самая малость: длина, размер кадра, формат. Даже размер файла точно неизвестен. Правда, про все файлы мы можем узнать MD5 -- это пригодится для поиска дубликатов. Недостающие данные можно было бы легко получить на стороне пользователя (про видеофайлы нам всё расскажет FFPROBE, про даты, пути, пользователя и т.д. -- файловая и операционная система через стандартные вызовы. Но у пользователя мы ничего не запускаем (хотя и можем ему предложить утилиту для отправки этой информации, которую потом будем считывать в базу уже с GoogleDrive) и выгружать на свой сервер терабайты ради этого было бы жаль, если не проводить более глубоких исследований файлов. Какие это могут быть исследования?&lt;br /&gt;
&lt;br /&gt;
Если на жестком диске лежат два вроде бы одинаковых файла, то мы можем:&lt;br /&gt;
&lt;br /&gt;
1. Сравнить их контрольные суммы, размеры и названия. Названия мало что значат, размеры тоже могут совпадать, MD5 совпадает редко. Но всё это бесполезно, если речь идет о об исходном файле и его сжатой копии.&lt;br /&gt;
&lt;br /&gt;
2. Здесь придется сравнивать содержимое. Например, вычесть изображения и посмотреть, что осталось в разнице. Если видео -- аналогично вычитать кадры (можно не все, хотя есть риск пропустить разницу). Надо ещё не забыть про звук и звуковые дорожки -- разница может быть в них. Всё это -- ресурсоёмкие операции, требующие наличия доступа к обоим сравниваемым файлам.&lt;br /&gt;
&lt;br /&gt;
3. А если файлы большие, их очень много и расположены на удаленном сервере? В таком случае придётся строить индекс и сравнивать не сами файлы, а описания файлов. Назовём их сигнатурами. Простой вариант -- построить гистаграммы (это 3 набора из 256 значений) для каждого кадра видео. Оригинал это или сжатая копия -- распределение яркостей по цветовым каналам должно быть примерно одинаковым. Можно попробовать более изощрённые методы, и даже в этом результирующие значения можно записать более экономно, чем 256 уровней *3 канала *2 байта * количество кадров. В любом случае, операции с данными раскладываются на два этапа: а) сбор метаданных, включая сигнатуры, какими бы они ни были, б) сравнение сигнатур.&lt;br /&gt;
&lt;br /&gt;
Поскольку разрабатываемый сервис является сторонним и для Google и для пользовательского рабочего места приложением, запущен на виртуальных машинах в облаке, то для выполнения этих задач ему понадобится&lt;br /&gt;
&lt;br /&gt;
* выгрузить последовательно все файлы с указанного пользовательского аккаунта к себе и провести все необходимые операции для анализа.&lt;br /&gt;
* отправить собранные метаданные в базу данных файлового менеджера.&lt;br /&gt;
&lt;br /&gt;
Предстоит определить список операций и характеристик файлов, для которых составляются сигнатуры. Например, поиск дубликатов (включае нечеткие), определение частей целого (сопоставление файлов, содержащих исходную запись и нарезки из неё), поиск материалов по их характеристикам (динамичное видео, темные фотографии, ..... Кстати, здесь могут быть актуальны и запросы &amp;quot;размытые фотографии&amp;quot;, &amp;quot;портреты&amp;quot; и тд).&lt;br /&gt;
&lt;br /&gt;
=== Чему вы научитесь? ===&lt;br /&gt;
В зависимости от роли:&lt;br /&gt;
&lt;br /&gt;
* Анализировать фото, видео, аудио контент с целью составления метаописаний, по которым можно сравнивать эти материалы между собой и с новыми файлами, а также определять определенные их характеристики.&lt;br /&gt;
&lt;br /&gt;
* Работать с GoogleDrive API&lt;br /&gt;
&lt;br /&gt;
* Создавать веб-сервисы с REST API&lt;br /&gt;
&lt;br /&gt;
* Организовывать очередь запросов и распределение задач по воркерам на виртуальных машинах с (это опционально) запуском этих машин по мере надобности (через API провайдера).&lt;br /&gt;
&lt;br /&gt;
=== Какие начальные требования? ===&lt;br /&gt;
В зависимости от роли в проекте:&lt;br /&gt;
&lt;br /&gt;
1. Программирование веб-сервисров: опыт или желание освоить.&lt;br /&gt;
&lt;br /&gt;
2. Анализ изображений. Хотя бы представление о том, как и чем это делается.&lt;br /&gt;
&lt;br /&gt;
3. Linux и bash, чтобы не удивляться при работе с виртуалками.&lt;br /&gt;
&lt;br /&gt;
=== Какие будут использоваться технологии? ===&lt;br /&gt;
* GoogleDrive API, OAuth.&lt;br /&gt;
&lt;br /&gt;
* Анализ изображений, видео, звука. От FFPROBE/ImageMagick до OpenCV и далее -- на сколько хватит фантазии.&lt;br /&gt;
&lt;br /&gt;
* Работа с виртуальными серверами на хостинг-провайдерах (API)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Веб-интерфейс в таком сервисе не является необходимой частью, но может использоваться для демонстрации возможностей. Основное взаимодействие с внешним миром -- REST API.&lt;br /&gt;
&lt;br /&gt;
=== Темы вводных занятий ===&lt;br /&gt;
Не в порядке изложения:&lt;br /&gt;
&lt;br /&gt;
1. Архитектура проекта. API, внешние связи и зависимости.&lt;br /&gt;
&lt;br /&gt;
2. Специфические технологии и используемые инструменты.&lt;br /&gt;
&lt;br /&gt;
3. Доступные ресурсы, организация доступа.&lt;br /&gt;
&lt;br /&gt;
4. Разделение ролей&lt;br /&gt;
&lt;br /&gt;
=== Направления развития ===&lt;br /&gt;
Этот проект довольно узкоспецифический, но по сути анализ медиаматериалов -- это то, чем занимаются поисковые системы, которые в выдаче картинок предлагают в настройках разные опции (в определенной цветовой гамме и тд). Они идут дальше и всерьез применяют распознавание и ML. Нам это тоже не повредит, но это следующий этап после запуска базовых возможностей. Ничто не мешает его начать делать уже сейчас.&lt;br /&gt;
&lt;br /&gt;
Близкий проект на Ярмарке проектов ВШЭ: https://pf.hse.ru/208039048.html&lt;br /&gt;
&lt;br /&gt;
=== Критерии оценки ===&lt;br /&gt;
Про работу и оценки почитайте здесь: https://d.pr/143bq&lt;br /&gt;
&lt;br /&gt;
Постарайтесь отнестись к этому с пониманием. Очень часто бодрое начало длится 3-4 недели и потом наступает тишина. Очень хочется, чтобы проекты доводились до запуска, а вы получали опыт успешной разработки и, возможно, работу в этих проектах уже в другом статусе. Но пока это для вас учебная работа, поэтому будем придерживаться описанных по ссылке правил и критериев. Спасибо!&lt;br /&gt;
&lt;br /&gt;
===Как записаться?===&lt;br /&gt;
&lt;br /&gt;
В общем доступе есть порядка двадцати проектов, относящихся к области видеотехнологий (стриминг, доставка потоков и т.д.). Чтобы всем было проще, эти проекты объединим в четыре группы и при записи на проект выбирайте группу, а конкретный проект и вашу роль в нем мы обсудим уже в рабочем порядке. &lt;br /&gt;
&lt;br /&gt;
http://wiki.cs.hse.ru/images/thumb/f/f0/Projects.PNG/800px-Projects.PNG&lt;br /&gt;
&lt;br /&gt;
=== Ориентировочное расписание занятий ===&lt;br /&gt;
Более точное расписание будет ясно после утверждения графика факультативов, пока ориентируемся на вторник, среду или пятницу во второй половине дня (после 15-16 часов).&lt;br /&gt;
&lt;br /&gt;
На самом деле, для общения (как индивидуального, так и группового) удобно использовать средства видеосвязи -- это не заменяет очных встреч, но отлично дополняет их за счет возможности оперативно решать задачи &amp;quot;здесь и сейчас&amp;quot;, сидя за удобным вам рабочим местом. Практически все темы проектов подразумевают работу в сети.&lt;br /&gt;
&lt;br /&gt;
Денис Королев,&lt;br /&gt;
&lt;br /&gt;
https://www.hse.ru/staff/dkorolev (там есть ссылки на соцсети)&lt;br /&gt;
&lt;br /&gt;
+7 903 610 3290 (месенджеры по вкусу)&lt;br /&gt;
&lt;br /&gt;
d.korolev@gmail.com&lt;/div&gt;</summary>
		<author><name>imported&gt;Dkorolev</name></author>
	</entry>
</feed>