<?xml version="1.0" encoding="utf-8" ?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:tt="http://teletype.in/" xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/"><title>@oshlykov</title><author><name>@oshlykov</name></author><id>https://teletype.in/atom/oshlykov</id><link rel="self" type="application/atom+xml" href="https://teletype.in/atom/oshlykov?offset=0"></link><link rel="alternate" type="text/html" href="https://teletype.in/@oshlykov?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=oshlykov"></link><link rel="next" type="application/rss+xml" href="https://teletype.in/atom/oshlykov?offset=10"></link><link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></link><updated>2026-04-16T04:19:54.210Z</updated><entry><id>oshlykov:AUf0pAurBRh</id><link rel="alternate" type="text/html" href="https://teletype.in/@oshlykov/AUf0pAurBRh?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=oshlykov"></link><title>Перенос всех своих файлов на Общие диски Гугла</title><published>2022-03-25T13:08:09.757Z</published><updated>2022-03-28T08:19:17.941Z</updated><summary type="html">Transfer google drive files to shared drive (team drive) — App Google Script
Гугл закрывает Google G Suite и люди переезжают в иные места, а чтобы перенести файлы между доменами или разными пространствами Google Workspace необходимо залить файлы на общий диск.</summary><content type="html">
  &lt;p id=&quot;2P9a&quot;&gt;Transfer google drive files to shared drive (team drive) — App Google Script&lt;br /&gt;Гугл закрывает Google G Suite и люди переезжают в иные места, а чтобы перенести файлы между доменами или разными пространствами Google Workspace необходимо залить файлы на общий диск.&lt;/p&gt;
  &lt;p id=&quot;yKaK&quot;&gt;&lt;/p&gt;
  &lt;pre id=&quot;23Rx&quot;&gt;
DRIVE_FOLDER_ID = &amp;#x27;111aaa&amp;#x27;; // Идентификатор папки на общем диске куда переносим

// Перенос не всех файлов, а общих с другими колегами
// если хоть один пользователь имеет права на редактирование документа, то доступ будет передан иначе будет пропущен
var CHECK_EDITORS = false;
var EDITORS = [  
  &amp;#x27;user1@gmail.com&amp;#x27;,
  &amp;#x27;user22@gmail.com&amp;#x27;,
  &amp;#x27;user333@gmail.com&amp;#x27;,
  &amp;#x27;user4444@gmail.com&amp;#x27;
];

// находит файлы для переноса, делает нужные проверки и запускает перенос
function move() {
  
  var files = DriveApp.searchFiles(&amp;#x27;&amp;quot;me&amp;quot; in owners&amp;#x27;);
  while (files.hasNext()) {
    var file = files.next();

    // console.info(&amp;quot;Old path: &amp;quot;, getFullPath(file));

    var fileEditors = file.getEditors().map(function(x) { return x.getEmail().toLowerCase(); });
    if (!CHECK_EDITORS || fileEditors.some(function(e){return EDITORS.indexOf(e) != -1;}) ) {
      newPath = fileMoveWithPath(file, DRIVE_FOLDER_ID);
      if (newPath)
        console.info(&amp;quot;New path: &amp;quot;, getFullPath(newPath));
    }
  }
}

// Перенос файла с предварительным
function fileMoveWithPath(file, root) {
  var folders = [],
      parent = file.getParents();

  // Проходим по иерархии папок текущего файла до корня
  while (parent.hasNext()) {
    parent = parent.next();
    folders.push(parent);
    parent = parent.getParents();
  }

  if (folders.length &amp;gt; 0)
    targetPath = makeNewPath(folders, DriveApp.getFolderById(root));
  else
    targetPath = DriveApp.getFolderById(root);

  if (targetPath) {
    try {
      targetFile = file.moveTo(targetPath);
    } catch (e) {
      console.error(&amp;quot;Error path: &amp;quot;, getFullPath(file));
      return;
    }
    return targetFile;
  };
  return;
}

// рекурсивно создает полный путь из массива. Работает справа налево. Возвращает конечную папку.
function makeNewPath(folders, newroot) {
  var f = folders.pop();
  var query = &amp;quot;&amp;#x27;&amp;quot; + newroot.getId() + &amp;quot;&amp;#x27; in parents and title = &amp;#x27;&amp;quot; + f.getName() + &amp;quot;&amp;#x27; and mimeType=&amp;#x27;application/vnd.google-apps.folder&amp;#x27; &amp;quot;
  var targetFolder = DriveApp.searchFolders(query);
  if (targetFolder.hasNext()) 
    targetFolder = targetFolder.next()
  else
    targetFolder = newroot.createFolder(f.getName());

  if (folders.length &amp;gt; 0) 
    return makeNewPath(folders, targetFolder)
  else
    return targetFolder;
}

// Возвращает строку полного пути к файлу или папке
function getFullPath(file) {
  var folders = [],
      parent = file.getParents();
  while (parent.hasNext()) {
    parent = parent.next();
    folders.push(parent.getName());
    parent = parent.getParents();
  }
  if (folders.length) {
    return
     &amp;#x27;&amp;gt; /&amp;#x27; + folders.reverse().join(&amp;quot;/&amp;quot;) + &amp;#x27;/&amp;#x27; + file.getName();
  }
  return &amp;#x27;&amp;gt; /&amp;#x27; + file.getName();
}&lt;/pre&gt;

</content></entry><entry><id>oshlykov:RZflm4yi7IV</id><link rel="alternate" type="text/html" href="https://teletype.in/@oshlykov/RZflm4yi7IV?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=oshlykov"></link><title>Майнкрафта: список доменов для фаирвола [SkyDNS Keenectit Whitelist firewall MCPE ]</title><published>2021-12-27T06:53:14.879Z</published><updated>2021-12-27T06:53:14.879Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img1.teletype.in/files/80/ff/80ff8282-0dc8-4a55-9ed0-b425c7693e52.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img1.teletype.in/files/85/d9/85d9c669-bab1-479b-9648-f3737f3105f3.png&quot;&gt;Составил список, так как нигде не нашел. Тут явно какие-то лишние домены и чуть смешано с Жава версией. Основная проблема с MCPE была с авторизацией в XBOX, она не хотела проходить.</summary><content type="html">
  &lt;p id=&quot;RFxp&quot;&gt;Составил список, так как нигде не нашел. Тут явно какие-то лишние домены и чуть смешано с Жава версией. Основная проблема с MCPE была с авторизацией в XBOX, она не хотела проходить.&lt;/p&gt;
  &lt;p id=&quot;7eIy&quot;&gt;SkyDNS настраивается примерно так:&lt;/p&gt;
  &lt;figure id=&quot;jyai&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/85/d9/85d9c669-bab1-479b-9648-f3737f3105f3.png&quot; width=&quot;624&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;h11Q&quot;&gt;Домены нужно добавить в белый лист в сервисе skyDNS и роутерах Keenectit или в тех сервисах, которыми вы ограничиваете запросы.&lt;/p&gt;
  &lt;figure id=&quot;E0H3&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/d2/6f/d26f5928-84f5-4c79-bc03-6c3022eea880.png&quot; width=&quot;908&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Wgi5&quot;&gt;&lt;strong&gt;Список доменов:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;dnv0&quot;&gt;appcenter.ms&lt;br /&gt;atlauncher.com&lt;br /&gt;azureedge.net&lt;br /&gt;cubecraft.net&lt;br /&gt;generationsesports.com&lt;br /&gt;hivebedrock.network&lt;br /&gt;inpvp.net&lt;br /&gt;lbsg.net&lt;br /&gt;live.com&lt;br /&gt;microsoft.com&lt;br /&gt;minecraft-services.net&lt;br /&gt;minecraft.net&lt;br /&gt;minecraft.org&lt;br /&gt;minecrafteduservices.com&lt;br /&gt;minecraftservices.com&lt;br /&gt;mineplex.com&lt;br /&gt;minesrv.ru&lt;br /&gt;mojang.com&lt;br /&gt;msauth.net&lt;br /&gt;msftncsi.com&lt;br /&gt;msgamestudios.com&lt;br /&gt;msidentity.com&lt;br /&gt;passport.net&lt;br /&gt;pixelparadise.gg&lt;br /&gt;playfabapi.com&lt;br /&gt;s3.amazonaws.com&lt;br /&gt;&lt;strong&gt;t-msedge.net&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;xbox.com&lt;/strong&gt;&lt;br /&gt;xboxab.com&lt;br /&gt;&lt;strong&gt;xboxlive.com&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt;

</content></entry><entry><id>oshlykov:NgigWJNEYMx</id><link rel="alternate" type="text/html" href="https://teletype.in/@oshlykov/NgigWJNEYMx?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=oshlykov"></link><title>Новая волна портрет молодости Антуан де Бек 2015 [PDF EPUB FB2]</title><published>2021-10-12T06:19:31.507Z</published><updated>2021-10-12T06:20:03.435Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img1.teletype.in/files/ce/d5/ced53c96-d739-4ecd-840e-8b3f68a37906.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img1.teletype.in/files/83/95/8395f6c7-8bc1-4fff-ab2a-290c471fd1b7.png&quot;&gt;Содержание</summary><content type="html">
  &lt;figure id=&quot;0Nj9&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/83/95/8395f6c7-8bc1-4fff-ab2a-290c471fd1b7.png&quot; width=&quot;1570&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;bcN7&quot;&gt;&lt;strong&gt;Содержание&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;j1L2&quot;&gt;Предисловие&lt;br /&gt;Бардо&lt;br /&gt;Синефилы&lt;br /&gt;Брижит и младотурки &lt;br /&gt;Недуг молодых&lt;br /&gt;Взрослые ведут расследование &lt;br /&gt;«Газета новой волны»&lt;br /&gt;Будет ли новая волна литературной?&lt;br /&gt;Первые малые волны на экране &lt;br /&gt;Кинематограф и молодежь &lt;br /&gt;Фестиваль блудных сынов &lt;br /&gt;Двадцать фильмов Новой волны &lt;br /&gt;Набросок группового портрета &lt;br /&gt;Революция в кинематографе &lt;br /&gt;Мифология молодости &lt;br /&gt;Отцовское наказание &lt;br /&gt;Последние конвульсии &lt;br /&gt;Неловкость перед лицом истории &lt;br /&gt;Смерть&lt;br /&gt;Остался миф &lt;br /&gt;Библиография&lt;/p&gt;
  &lt;p id=&quot;wCkB&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;bIIi&quot;&gt;Отсканировал, читайте.&lt;/p&gt;
  &lt;p id=&quot;uZIB&quot;&gt;PDF: &lt;a href=&quot;https://disk.yandex.ru/i/JHfCzd2z6qxXDw&quot; target=&quot;_blank&quot;&gt;https://disk.yandex.ru/i/JHfCzd2z6qxXDw&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;cY3s&quot;&gt;EPUB: &lt;a href=&quot;https://disk.yandex.ru/i/4nqnbDOGnkFA6w&quot; target=&quot;_blank&quot;&gt;https://disk.yandex.ru/i/4nqnbDOGnkFA6w&lt;/a&gt;&lt;/p&gt;

</content></entry></feed>