Удаление истории посещений, содержимого кэша и файлов cookie из браузера Safari на iPhone, iPad или iPod touch
Узнайте, как удалять историю посещений сайтов, файлы cookie и содержимое кэша в приложении «Настройки».
- Удаление истории посещений, содержимого кэша и файлов cookie
- Очистка файлов cookie и содержимого кэша, но сохранение истории посещений
- Удаление веб-сайта из истории посещений
- Блокирование файлов cookie
- Использование правил блокирования контента
Удаление истории посещений, кэша и файлов cookie
- Перейдите в раздел «Настройки» > Safari.
- Выберите пункт «Очистить историю и данные».
При удалении истории посещений, файлов cookie и данных о просмотренных веб-сайтах из браузера Safari информация для автозаполнения не изменяется.
При отсутствии истории посещений или данных веб-сайтов кнопка удаления этих данных будет недоступна. Эта кнопка также может быть неактивной (серой), если в разделе «Ограничения конфиденциальности и контента» настроек функции «Экранное время» установлены ограничения веб-контента.
Для просмотра сайтов без сохранения их посещения в истории включите режим «Частный доступ».
Очистка файлов cookie и содержимого кэша, но сохранение истории посещений
- Перейдите в раздел «Настройки» > Safari > Дополнения > Данные сайтов.
- Нажмите «Удалить все данные».
При отсутствии данных веб-сайтов кнопка удаления этих данных будет недоступна. Эта кнопка также может быть неактивной (серой), если в разделе «Ограничения конфиденциальности и контента» настроек функции «Экранное время» установлены ограничения веб-контента.
Удаление веб-сайта из истории посещений
- Откройте приложение Safari.
- Нажмите кнопку «Показать закладки»
, а затем нажмите кнопку «История»
. - Нажмите кнопку «Правка», а затем выберите один или несколько сайтов, которые хотите удалить из истории посещений.
- Нажмите кнопку «Удалить».
Блокировка файлов cookie
Файл cookie — это элемент данных, отправляемый веб-сайтом на устройство для того, чтобы узнать его при следующем посещении этого веб-сайта.
Блокировка файлов cookie:

- Перейдите в раздел «Настройки» > Safari > «Дополнительно».
- Включите «Блокировать все файлы cookie».
При блокировке файлов cookie некоторые веб-страницы могут не работать. Вот несколько примеров.
- Нередко может не выполняться вход на веб-сайт, хотя имя пользователя и пароль указаны верно.
- Возможен вывод сообщения о том, что использование файлов cookie обязательно или что в браузере отключены файлы cookie.
- Могут не работать некоторые функции веб-сайта.
Использование правил блокирования контента
Правила блокирования контента выполняются с помощью приложений и расширений сторонних разработчиков, позволяющих браузеру Safari блокировать файлы cookie, изображения, ресурсы, всплывающие окна и другой контент.
Чтобы включить блокирование контента:
- Загрузите приложение для блокирования контента из App Store.
- Выберите «Настройки» > Safari > «Расширения».
- Нажмите указанное в списке приложение для блокирования контента, чтобы активировать его.
Можно использовать сразу несколько приложений для блокирования контента. Если вам требуется помощь, обратитесь к разработчику приложения.
Информация о продуктах, произведенных не компанией Apple, или о независимых веб-сайтах, неподконтрольных и не тестируемых компанией Apple, не носит рекомендательного или одобрительного характера. Компания Apple не несет никакой ответственности за выбор, функциональность и использование веб-сайтов или продукции сторонних производителей. Компания Apple также не несет ответственности за точность или достоверность данных, размещенных на веб-сайтах сторонних производителей. Обратитесь к поставщику за дополнительной информацией.
Что такое Apple Search Ads и как это работает?
Ищете способы развивать свой бизнес и получать больше установок? Тогда поисковая реклама Apple может быть ответом. В статье поясним, как работает Apple Search Ads и как использовать ее для продвижения вашего приложения.
Что такое поисковая реклама от Apple
Apple Search Ads — это официальная рекламная платформа Apple, которая позволяет продвигать приложение в App Store. С помощью Apple Search Ads ваше приложение может отображаться первым в результатах поиска App Store по определенным ключевым словам и выделяться синим цветом. Подсчитано, что у этих объявлений коэффициент конверсии в некоторых случаях достигает 50%!
Используйте Apple Search Ads чтобы:
- получить новых клиентов — более 70% пользователей находят новые приложения через поиск в App Store;
- повысить органический рейтинг приложения и получить более высокие позиции в обычном поиске.
Как работает поисковая реклама Apple?
Поисковая реклама в App Store чем-то напоминает контекстную рекламу Google. Вы платите за вывод вашего приложения в рекламный блок над органическими результатами поисковой выдачи по заданным ключевым словам. При этом работает принцип аукциона — за отображение по одной поисковой фразе может соревноваться несколько приложений, система покажет сначала то, чья ставка будет выше. Например, если вы успешно предложили ставку по ключевому слову «игра пазлы», в следующий раз, когда пользователь будет искать «игра пазлы», ваше приложение будет стоять на первом месте и выделяться синим цветом.
Текстовые и креативные объявления
В кампаниях доступна реклама с двумя форматами отображения:
- Текстовые объявления. В них входит значок, название, подзаголовок, раздел текстового описания приложения, рейтинги и кнопка «Загрузить».
- Креативы. Состоят из таких же элементов и блоков. Отсутствует только текстовое описание. В карточке продукта разделы приложения представлены на скриншотах.
Группы объявлений Apple Search Ads
Apple Search Ads позволяет дополнительно контролировать, кто видит ваше приложение и позволяет оптимизировать маркетинговый бюджет, создавая группы объявлений.
С помощью групп объявлений вы можете создать набор ключевых слов, которые составляют основу вашей кампании, и эффективно создавать различные ставки. Так вы нацеливаетесь на широкий диапазон ключевых слов — от дешевых до дорогих.
Также с помощью групп объявлений вы можете указывать страны и устройства, на которых будет отображаться реклама, можете фильтровать свою аудиторию по возрасту, местоположению, полу, времени. В рамках кампании у вас могут быть десятки групп объявлений под разную аудиторию, страны, устройства с разными бюджетами и креативами.
По сути, рекламная кампания — это место, где вы управляете всем своим рекламным бюджетом и оцениваете эффективность групп объявлений.
В каких странах работает поисковая реклама Apple
Реклама в Apple App Store действительно глобальна и ее можно найти в следующих странах:
Реализуем алгоритм поиска в глубину

В этом туториале описан алгоритм поиска в глубину (depth first search, DFS) с псевдокодом и примерами. Кроме того, расписаны способы реализации поиска в глубину в C, Java, Python и C++.
“Поиск в глубину” или “обход в глубину” — это рекурсивный алгоритм по поиску всех вершин графа или дерева. Обход подразумевает под собой посещение всех вершин графа.
Алгоритм поиска в глубину
Стандартная реализация поиска в глубину помещает каждую вершину (узел, node) графа в одну из двух категорий:
- Пройденные (Visited).
- Не пройденные (Not Visited).
Цель алгоритма состоит в том, чтобы пометить каждую вершину как “Пройденная”, избегая при этом циклов.
Алгоритм поиска в глубину работает следующим образом:
- Начните с того, что поместите любую вершину графа на вершину стека.
- Возьмите верхний элемент стека и добавьте его в список “Пройденных”.
- Создайте список смежных вершин для этой вершины. Добавьте те вершины, которых нет в списке “Пройденных”, в верх стека.
- Необходимо повторять шаги 2 и 3, пока стек не станет пустым.
Пример реализации поиска в глубину
Предлагаю рассмотреть на примере, как работает алгоритм поиска в глубину. Мы будем использовать неориентированный граф с пятью вершинами.

Начнем мы с вершины “0”. В первую очередь алгоритм поиска в глубину поместит ее саму в список “Пройденные” (на изображении “Visited”), а ее смежные вершины — в стек.

Затем мы берем следующий элемент сверху стека, т.е. к вершину “1”, и переходим к ее соседним вершинам. Поскольку вершина “0” уже пройдена, следующая вершина “2”.

Вершина “2” смежна непройденной вершине “4”, следовательно мы добавляем ее наверх стека и проходим ее.


После того, как мы пройдем последний элемент (вершину “3”), в стеке не останется непройденных смежных вершин, и таким образом мы завершили обход графа в глубину.

Псевдокод поиска в глубину (рекурсивная реализация)
Ниже представлен псевдокод для алгоритма поиска в глубину. Обратите внимание, что в функции init() необходимо запускать функцию DFS на каждой вершине. Это связано с тем, что граф может иметь две разные несвязанные части, поэтому для того, чтобы убедиться, что мы покрываем каждую вершину, мы должны запускать алгоритм поиска в глубину на каждой вершине.
DFS(G, u) u.visited = true for each v ∈ G.Adj[u] if v.visited == false DFS(G,v) init()
Реализация поиска в глубину на Python, Java и C/C++
Ниже приведены примеры реально кода алгоритма поиска в глубину. Код был упрощен, чтобы мы могли сфокусироваться на самом алгоритме, а не на других деталях.
# Алгоритм поиска в глубину на Python # Алгоритм def dfs(graph, start, visited=None): if visited is None: visited = set() visited.add(start) print(start) for next in graph[start] - visited: dfs(graph, next, visited) return visited graph = dfs(graph, '0')
// Алгоритм поиска в глубину на Java import java.util.*; class Graph < private LinkedListadjLists[]; private boolean visited[]; // Создание графа Graph(int vertices) < adjLists = new LinkedList[vertices]; visited = new boolean[vertices]; for (int i = 0; i < vertices; i++) adjLists[i] = new LinkedList(); > // Добавление ребер void addEdge(int src, int dest) < adjLists[src].add(dest); >// Алгоритм void DFS(int vertex) < visited[vertex] = true; System.out.print(vertex + " "); Iteratorite = adjLists[vertex].listIterator(); while (ite.hasNext()) < int adj = ite.next(); if (!visited[adj]) DFS(adj); >> public static void main(String args[]) < Graph g = new Graph(4); g.addEdge(0, 1); g.addEdge(0, 2); g.addEdge(1, 2); g.addEdge(2, 3); System.out.println("Following is Depth First Traversal"); g.DFS(2); >>
// Алгоритм поиска в глубину на C #include #include struct node < int vertex; struct node* next; >; struct node* createNode(int v); struct Graph < int numVertices; int* visited; // Нам нужен int** для хранения двумерного массива. // Аналогично, нам нужна структура node** для хранения массива связанных списков. struct node** adjLists; >; // Алгоритм void DFS(struct Graph* graph, int vertex) < struct node* adjList = graph->adjLists[vertex]; struct node* temp = adjList; graph->visited[vertex] = 1; printf("Visited %d \n", vertex); while (temp != NULL) < int connectedVertex = temp->vertex; if (graph->visited[connectedVertex] == 0) < DFS(graph, connectedVertex); >temp = temp->next; > > // Создание вершины struct node* createNode(int v) < struct node* newNode = malloc(sizeof(struct node)); newNode->vertex = v; newNode->next = NULL; return newNode; > // Создание графа struct Graph* createGraph(int vertices) < struct Graph* graph = malloc(sizeof(struct Graph)); graph->numVertices = vertices; graph->adjLists = malloc(vertices * sizeof(struct node*)); graph->visited = malloc(vertices * sizeof(int)); int i; for (i = 0; i < vertices; i++) < graph->adjLists[i] = NULL; graph->visited[i] = 0; > return graph; > // Добавление ребра void addEdge(struct Graph* graph, int src, int dest) < // Проводим ребро от начальной вершины ребра графа к конечной вершине ребра графа struct node* newNode = createNode(dest); newNode->next = graph->adjLists[src]; graph->adjLists[src] = newNode; // Проводим ребро из конечной вершины ребра графа в начальную вершину ребра графа newNode = createNode(src); newNode->next = graph->adjLists[dest]; graph->adjLists[dest] = newNode; > // Выводим граф void printGraph(struct Graph* graph) < int v; for (v = 0; v < graph->numVertices; v++) < struct node* temp = graph->adjLists[v]; printf("\n Adjacency list of vertex %d\n ", v); while (temp) < printf("%d ->", temp->vertex); temp = temp->next; > printf("\n"); > > int main()
// Алгоритм прохода в глубину в C++ #include #include using namespace std; class Graph < int numVertices; list*adjLists; bool *visited; public: Graph(int V); void addEdge(int src, int dest); void DFS(int vertex); >; // Инициализация графа Graph::Graph(int vertices) < numVertices = vertices; adjLists = new list[vertices]; visited = new bool[vertices]; > // Добавление ребер void Graph::addEdge(int src, int dest) < adjLists[src].push_front(dest); >// Алгоритм void Graph::DFS(int vertex) < visited[vertex] = true; listadjList = adjLists[vertex]; cout << vertex << " "; list::iterator i; for (i = adjList.begin(); i != adjList.end(); ++i) if (!visited[*i]) DFS(*i); > int main()
Сложность алгоритма поиска в глубину
Временная сложность алгоритма поиска в глубину представлена в виде O(V + E), где V — количество вершин, а E — количество ребер.
Пространственная сложность алгоритма равна O(V).
Применения алгоритма
- Для поиска пути.
- Для проверки двудольности графа.
- Для поиска сильно связанных компонентов графа.
- Для обнаружения циклов в графе.
Приглашаем всех желающих на открытый урок в OTUS «Теория графов. Термины и определения. Основные алгоритмы», регистрация доступна по ссылке.
Сочетания клавиш в приложениях
Сочетания клавиш — это клавиши или комбинации клавиш, с помощью которых можно выполнять задачи, обычно требующие применения мыши.
Ниже приведены распространенные сочетания клавиш во многих приложениях Майкрософт, которые поставляются с Windows 10 и Windows 11. К ним относятся сочетания клавиш для следующих приложений:
Во многих из этих приложений сочетания клавиш также отображаются в подсказке при удерживании указателя мыши над кнопкой. В других приложениях доступные сочетания клавиш видны при нажатии клавиш ALT или F10. Если буква подчеркнута в меню, одновременно нажмите клавишу ALTи подчеркнутую клавишу вместо непосредственного выбора этого элемента меню. Например, чтобы создать новое изображение в приложении Paint, нажмите клавиши CTRL+N.
Примечание: На сенсорной клавиатуре нужно нажать клавишу CTRL, чтобы увидеть некоторые сочетания клавиш.
Сочетания клавиш для приложения «Калькулятор»
Переключение в обычный режим
