Как научиться фильтровать информацию


Как не утонуть в информационном потоке

Оскар Новик (Oskar Nowik)

Предприниматель, публицист. Автор книги «Под контролем: самодисциплина за 5 недель»

Если вы ещё не в курсе, художник Майкл Мандиберг (Michael Mandiberg) решил напечатать всю «Википедию». Хотите представить, как это выглядит? На фото запечатлена часть экспозиции From Aaaaa! to ZZZap!

dennygallery.com

И это только один сайт. Хотя он один из самых крупных в мире, речь только об одном доменном имени.

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

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

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

Нужно игнорировать тысячи статей, записей, курсов и историй о том, как изменить свою жизнь.

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

Как только я погружаюсь в пучину вдохновляющего контента, моё стремление что-то сделать падает до нуля. Я не могу обработать информацию и выделить самое важное, потому что вокруг слишком много мусора.

Минималистичный подход к информации

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

Но это работает, если информационную чистку проводить регулярно и жёстко.

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

Я планирую день и продумываю стратегию исходя из собственных целей. Обычно делаю это вечером, так что после пробуждения всегда знаю, что нужно сделать. Но иногда в конце дня оказывается, что результаты далеки от запланированных.

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

Представьте, что вы идёте по улице в окружении десяти человек, которые следят за каждым вашим шагом, анализируют его и стараются подкинуть что-то интересное. Один приглашает в кино и предлагает выгодный билет на киномарафон, в то время как другой заманивает купоном, дающим скидку 50% в магазине одежды. Третий громко рассуждает о том, что неплохо бы вам сбросить вес, и тут же показывает новейший препарат для похудения и программу тренировок.

В общем, вокруг уже бардак. А тут ещё два страховых агента, которые утверждают, что у них лучшие тарифы: «Вот, посмотри сам!» И остальные спутники тоже просто заливают вас потоком информации, не интересуясь, нужна она вам или нет.

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

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

Внимание нельзя измерить. Мы не можем выполнять больше одной задачи в определённый момент. А количество компаний, соревнующихся за наше внимание, каждый день растёт.

Сет Годин (Seth Godin)

То же относится и к книгам.

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

Превосходно!

Электронные книги позволяют получить за смешную цену огромное количество ценностей. Множество захватывающих произведений можно купить за копейки, а то и вовсе бесплатно.

И тут всё снова усложняется.

Парадокс выбора

Что вы выберете? Если у вас есть буквально неограниченный выбор, сложно мыслить рационально и не позволять количеству предложений сбить себя с толку. И вместо того, чтобы открыть и прочитать полезную книгу, я открою раздел скидок и буду загружать книги, которые нужно будет почитать как-нибудь потом. Можно даже осознавать, насколько это непродуктивно, но остановиться очень и очень сложно.

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

  1. Подписка на большее количество рассылок, чем вы сможете прочитать.
  2. Сохранение подписки на рассылки, которые вы вообще не читаете.
  3. Сохранение интересного контента на потом — на самом деле это «потом» никогда не наступает.
  4. Постоянная проверка новостных лент соцсетей.
  5. Слишком большое количество страниц, пабликов и людей, на чьи новости вы подписаны.
  6. Отсутствие приоритетов (неумение сосредоточиться на главном).

О последнем подробнее говорит Гэри Келлер (Gary Keller), автор книги «Начни с главного». Лучшее, что можно извлечь из этой книги, — вопрос, который я теперь постоянно себе задаю, когда на горизонте маячит информационный хаос.

Что — только одно и самое важное — я могу сделать, чтобы все остальные дела давались легче или вовсе стали не нужны?

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

Например, я хочу узнать как можно больше о фитнесе и правильном питании, а ещё я хочу открыть для себя маркетинговые приёмы, которые будут ненавязчиво привлекать читателей блога. Хочу улучшить писательские навыки, чтобы точнее подбирать слова и обходиться без лишних фраз. И ещё я хочу узнать больше о том, как создать полезный онлайн-курс, который я планирую когда-то в будущем запустить.

И это только малая часть моих планов.

Легко потерять импульс, перескакивая с одной темы на другую, и не продвинуться ни в одной сфере. Поэтому идея выбора главного так важна.

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

Доступ к информации впечатляет, но большие возможности накладывают и большую ответственность. Если не контролировать информационный поток, он накроет значимые вещи и унесёт ваше драгоценное время, а вы даже и не заметите, как это произошло.

Как извлекать пользу из интернета

Вот пять ключевых правил, которые я разработал для себя после разочарований из-за попыток поглотить больше информации, чем я способен.

  1. Начните с главного. Найдите самую важную задачу на неделю, на месяц или на год. Это может быть подготовка к экзаменам, завершение книги или достижение целей тренировок.
  2. Вы что-то упустите. Это неизбежно, так надо. Я заметил, что, чем больше вы отказываетесь от чего-то, тем больше вам удаётся вырасти. И наоборот. Чем меньше вы выбрасываете из жизни, тем больше теряете и тем медленнее продвигаетесь вперёд. Каждый день я прохожу мимо бесчисленных гигабайтов информации. Хочу я или нет, но это неизбежно. Но если я сосредоточен на одной теме, то тот небольшой объём контента, который я выделяю среди потоков знаний, приносит столько пользы, что фраза «Лучше меньше, да лучше» не требует других доказательств.
  3. Определите источники информации. Даже если вы поймёте, что для вас самое важное, всё может пойти наперекосяк из-за попыток собрать информацию из слишком большого количества источников. Например, если вы хотите узнать больше о предпринимательстве, выберите одну книгу о бизнесе, прочитайте и только тогда переходите к следующей. Подписка на пять бизнес-рассылок, покупка кучи бизнес-книг, сохранение в закладках сотни роликов о том, как вести дела, только замедлят вас. Я так уже делал. Закончил разочарованием от соотношения огромного количества потраченного времени и полученной пользы. Ощущение постоянной занятости обманчиво, потому что занятость и эффективность далеко не одно и то же. Вам нужно второе, а не первое.
  4. Планируйте процесс обучения. Там, где нет плана, поселяется хаос. Такова человеческая природа. Потратьте 30 минут на стратегию, и вам не придётся тратить часы на поиск контрольных точек.
  5. Старайтесь держать открытой только одну вкладку в браузере и используйте полезные расширения.

javascript - Как отфильтровать информацию из вывода, состоящего из «X»: «Y»,

Переполнение стека
  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
.

Создание прототипа рекомендательной системы Шаг за шагом, часть 1: Совместная фильтрация на основе элементов KNN | автор: Кевин Ляо

Movie Recommender Systems

Часть 2 из рекомендательных систем можно найти здесь

Большинство интернет-продуктов, которые мы используем сегодня, основаны на рекомендательных системах. Youtube, Netflix, Amazon, Pinterest и длинный список других интернет-продуктов полагаются на рекомендательные системы, чтобы фильтровать миллионы контента и давать персональные рекомендации своим пользователям.Рекомендательные системы хорошо изучены и доказали свою ценность для интернет-компаний и их потребителей. На самом деле, я был шокирован новостью о том, что Netflix в 2009 году наградил команду разработчиков призом в 1 миллион долларов за алгоритм, который повысил точность системы рекомендаций компании на 10%.

Netflix Prize Leader Board

Хотя рекомендательные системы являются секретным источником для этих многомиллиардных предприятий, создание прототипа рекомендательной системы может быть очень дешевым и не требует команды ученых.Вы действительно можете разработать для себя свой собственный персональный рекомендатель. Для этого требуются только некоторые базовые методы машинного обучения и их реализации на Python. В этом посте мы начнем с нуля и рассмотрим процесс создания прототипа минимально жизнеспособного рекомендательного фильма.

Рекомендательные системы можно условно разделить на три категории: системы на основе контента , системы совместной фильтрации и гибридные системы (которые используют комбинацию двух других).

Обзор систем рекомендаций

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

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

Гибридный подход сочетает в себе два предыдущих подхода. Большинство предприятий, вероятно, используют гибридный подход в своих производственных рекомендательных системах.

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

Я люблю смотреть фильмы, поэтому я решил создать рекомендатель фильмов.Будет так здорово увидеть, насколько хорошо рекомендатель знает мои предпочтения в фильмах. Мы рассмотрим наши наборы данных фильмов, выбор моделей машинного обучения, то, как оценивать наши рекомендации, и, наконец, я расскажу о некоторых плюсах и минусах этого подхода.

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

Чтобы создать рекомендатель фильмов, я выбираю MovieLens Datasets. Он содержит 27 753 444 рейтинга и 1 108 997 приложений тегов для 58 098 фильмов. Эти данные были созданы 283 228 пользователями в период с 9 января 1995 г. по 26 сентября 2018 г. Рейтинги выставлены по шкале от 1 до 5.

Мы будем использовать только два файла из наборов данных MovieLens: rating.csv, и фильмов. csv . Данные рейтингов предоставляют рейтинги фильмов, выставленные пользователями. В каждой строке по три поля: ['userId', 'movieId', 'rating'] .Каждую строку можно рассматривать как запись взаимодействия пользователя с фильмом. Данные о фильмах содержат название фильма и жанры для каждого 'movieId' в данных рейтингов.

 import os 
import pandas as pd # настроить путь к файлу
data_path = os.path.join (os.environ ['DATA_PATH'], 'MovieLens')
movies_filename = 'movies.csv'
rating_filename = 'rating.csv '# читать данные
df_movies = pd.read_csv (
os.path.join (data_path, movies_filename),
usecols = [' movieId ',' title '],
dtype = {' movieId ':' int32 ',' title ':' str '})

df_ratings = pd.read_csv (
os.path.join (data_path, rating_filename),
usecols = ['userId', 'movieId', 'rating'],
dtype = {'userId': 'int32', 'movieId': 'int32') , 'rating': 'float32'})

Давайте кратко рассмотрим два набора данных: Movies and Ratings

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

Рейтинговая частота - это распределение «длинный хвост». Лишь небольшая часть пунктов оценивается часто. Такие предметы называют популярными. Подавляющее большинство предметов оцениваются редко.

Если мы увеличим масштаб или построим график в логарифмической шкале, то сможем обнаружить, что только около 13 500 из 58 098 фильмов получили оценки более чем 100 пользователей, а большинство остальных гораздо менее известны при небольшом или нулевом взаимодействии с пользователем. Эти разреженные оценки менее предсказуемы для большинства пользователей и очень чувствительны к конкретному человеку, который любит малоизвестный фильм, что делает шаблон очень шумным.

Большинство моделей дают рекомендации на основе пользовательских рейтингов. Чтобы убрать зашумленные шаблоны и избежать «ошибки памяти» из-за больших наборов данных, мы отфильтруем наш фрейм данных рейтингов только по популярным фильмам. После фильтрации в данных рейтингов остается 13 500 фильмов, которых достаточно для рекомендательной модели.

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

Для реализации совместной фильтрации на основе элементов, KNN является идеальной моделью, а также очень хорошей базой для разработки рекомендательной системы. Но что такое KNN? KNN - это непараметрический, ленивый метод обучения . Он использует базу данных, в которой точки данных разделены на несколько кластеров, чтобы сделать вывод для новых образцов.

KNN не делает никаких предположений о базовом распределении данных, но полагается на сходство функций элемента . Когда KNN делает вывод о фильме, KNN вычисляет «расстояние» между целевым фильмом и каждым другим фильмом в своей базе данных, затем ранжирует свои расстояния и возвращает K лучших фильмов о ближайших соседях в качестве рекомендаций наиболее похожих фильмов.

Иллюстрация того, как KNN классифицирует новую выборку.

Подождите, но как нам передать фрейм данных рейтингов в модель KNN? Во-первых, нам нужно преобразовать фрейм данных рейтингов в правильный формат, который может быть использован моделью KNN.Мы хотим, чтобы данные были в массиве m x n , где m - количество фильмов, а n - количество пользователей. Чтобы изменить фрейм данных оценок, мы изменим фрейм данных на широкий формат с фильмами в виде строк и пользователями в виде столбцов. Затем мы заполним недостающие наблюдения 0 с, поскольку мы собираемся выполнять операции линейной алгебры (вычислять расстояния между векторами). Давайте назовем этот новый фрейм данных "фрейм данных функций фильма".

Наш фрейм данных функций фильма представляет собой чрезвычайно разреженную матрицу с формой 13,500 x 113,291 . Мы определенно не хотим передавать все данные в основном с 0 с в типе данных float32 в KNN. Для более эффективных вычислений и меньшего объема памяти нам необходимо преобразовать значения фрейма данных в scipy разреженную матрицу .

 из scipy.sparse import csr_matrix # pivot рейтинги в функции фильма 
df_movie_features = df_ratings.pivot (
index = 'movieId',
columns = 'userId',
values ​​= 'rating'
) .fillna (0) # преобразовать dataframe функций фильма в scipy sparse matrix
mat_movie_features = csr_matrix (df_movie_features.values)

Теперь наши обучающие данные имеют очень высокую размерность. Производительность KNN пострадает от проклятия размерности , если он использует «евклидово расстояние» в своей целевой функции. Евклидово расстояние бесполезно для больших измерений, потому что все векторы почти равноудалены вектору поискового запроса (особенности целевого фильма).Вместо этого мы будем использовать сходство по косинусу для поиска ближайшего соседа. Существует также еще один популярный подход к обработке поиска ближайшего соседа в многомерных данных, хеширование с учетом местоположения , о котором мы не будем рассказывать в этой статье.

После того, как мы предварительно обработали данные и преобразовали фрейм данных оценок в scipy разреженную матрицу функций фильма, нам нужно настроить нашу модель KNN с соответствующими гиперпараметрами:

 из sklearn.neighbors import NearestNeighborsmodel_knn = NearestNeighbors (metric = 'cosine' , algorithm = 'brute', n_neighbors = 20, n_jobs = -1) 

Наконец, мы можем дать несколько рекомендаций по фильму для себя.Давайте реализуем метод make_recommendations в нашем рекомендателе KNN.

фрагмент нашего последнего шага в реализации рекомендателя KNN

Этот фрагмент демонстрирует наш метод make_recommendations в реализации нашего рекомендателя. Пожалуйста, найдите подробный исходный код рекомендательного приложения в моем GitHub Repo .

Если вы перейдете на страницу с исходным кодом, вы увидите, что я собрал систему рекомендаций KNN в скрипте в виде небольшого приложения на Python.Я параметризовал свое рекомендательное приложение и предоставил пользователям для экспериментов две опции: movie_name и top_n . Теперь я хочу попросить своего рекомендателя предложить 10 самых похожих фильмов на «Железного человека». Таким образом, мы можем запустить ниже bash commend внутри терминала (linux / mac): (инструкции команд можно найти здесь )

 python src / knn_recommender.py --movie_name "Iron Man" --top_n 10 
.

Полное пошаговое упражнение / Habr


Введение и резюме

В предыдущем сообщении в блоге мы вместе с одним бизнес-партнером начали разрабатывать наше приложение, отображающее таблицу. Мы узнали, что такое протокол OData, как читать XML-манифест OData, как привязать данные к таблице и как настроить макет столбцов в зависимости от разрешения экрана.


Что будет рассмотрено в этом упражнении

Во второй части этой серии сообщений в блоге мы узнаем, как взаимодействовать с данными в наших таблицах и списках.Мы научимся грамотно фильтровать и сортировать данные.


  • Создать модель JSONModel для обработки локальных данных
  • Установите размер по умолчанию для нашей модели JSONModel
  • FilterBar: элемент управления пользовательского интерфейса, который отображает фильтры в удобной для пользователя форме для заполнения значений для запроса
  • Использование фрагментов XML для создания диалогового окна параметров просмотра для обработки сортировки и группировки данных
  • Фильтрация и сортировка данных
  • Добавьте в нашу таблицу информационную панель для отображения полезной информации

Давайте код


FilterBar

Первое, что мы хотим сделать, это позволить пользователям фильтровать список бизнес-партнеров, отображаемый в нашей таблице.В большинстве случаев у нас есть действительно большие данные (наш набор бизнес-партнеров состоит из 13880 записей), настроенных для отображения, и пользователь хочет просто отфильтровать все эти записи на основе некоторой полезной информации.


Практическое правило: не отображайте ввод фильтра для частей информации, которые не отображаются в вашей таблице / списке.

Для этого вам необходимо добавить FilterBar над таблицей. Этот элемент управления пользовательского интерфейса доступен только в SAPUI5, но не в OpenUI5.

FilterBar позволяет группировать фильтры в упорядоченном виде.Этот элемент управления пользовательского интерфейса всегда используется с Variant Manager, который я не буду рассматривать в этот раз.

Добавьте четыре разных фильтра:


  • ID: вход, который будет фильтровать атрибут BusinessPartnerID
  • Имя: ввод, который будет фильтровать атрибут CompanyName
  • Street: ввод, который будет
  • Страна: выберите (список кодов стран JSON) для фильтрации атрибута Адрес / Страна

После того, как вы добавите эти входные данные в FilterBar, вам нужно будет выполнить привязку к событиям «search» и «clear».Первый сработает, когда пользователь начнет поиск, второй, когда вам нужно будет очистить все фильтры и начать пустой поиск.

Фильтры должны исключать друг друга. Если пользователь добавил «SAP» в название компании и «IT» в код страны, ваша таблица должна отфильтровать такой запрос, как


. Дайте мне всех бизнес-партнеров с именем , содержащим «SAP» и страной. код соответствует «DE»

JSONModel

Мы уже говорили, что в SAPUI5 у вас есть разные типы моделей:


  • ODataModel v2: реализация модели на основе протокола OData (версия 2).Он используется, когда вам нужно взаимодействовать со службой OData.
  • JSONModel: реализация модели для данных JSON. В основном используется для обработки локальных / временных данных.

Для нашего упражнения я предлагаю вам создать одну модель JSONModel для хранения данных фильтра, а другую - для хранения кодов стран. Когда вы создали локальный файл JSON внутри папки модели, вы можете легко импортировать его из _manifest.json_, который будет обрабатывать всю логику для предварительной загрузки информации при запуске вашего приложения.


Фильтр

новый sap.ui.model.Filter (vFilterInfo, vOperator ?, vValue1 ?, vValue2?)

Фильтр - мощный инструмент, он позволяет вам смешивать различные фильтры для создания сложного запроса OData, который затем будет переведен на SQL на стороне сервера.


  1. Первый параметр - это имя столбца, по которому вы хотите выполнить фильтрацию. Вы также можете указать столбец в развернутом свойстве, например «Адрес / улица»
  2. .
  3. Второй параметр - это операция, которую вы хотите применить к своему фильтру.Вы можете найти все возможные операции в документации FilterOperatord.
  4. Третий и четвертый параметры - это значения запроса, введенные пользователем и по которым вы хотите выполнить фильтрацию.

Второй конструктор фильтра позволяет смешивать фильтры для создания групп фильтров И и ИЛИ.

новый sap.ui.model.Filter (aFilters, bAnd)

После того, как вы создали последний фильтр, вы можете применить его к привязке таблицы.


Сортировка и группировка

Пользователь всегда хочет также сортировать / группировать записи на основе определенного столбца, и они работают более или менее как фильтр.

новый sap.ui.model.Sorter (sPath, bDescending ?, vGroup ?, fnComparator?)


  1. Первый параметр (как для фильтра) - это атрибут OData, который вы хотите отсортировать по
  2. Второй параметр (логический) сортирует данные по убыванию или возрастанию
  3. Третий параметр может быть как логическим (если вы хотите перегруппировать данные), так и функцией (я объясню это чуть позже).
  4. Последний параметр является необязательным и позволяет выполнять локальную (не в OData) настраиваемую сортировку на основе результата функции

Параметр vGroup важен, поскольку позволяет указать собственный способ повторной группировки элементов.Вам просто нужно реализовать пользовательскую функцию, которая возвращает объект JavaScript с ключом и значением текста внутри.


  • Ключ будет использоваться SAPUI5, чтобы понять, содержится ли уже запись в группе с тем же значением ключа
  • Текст используется SAPUI5 для создания пользовательского интерфейса для отображения имени группы

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

Попробуйте просто сгруппировать атрибут CreatedAt без настраиваемой функции и посмотрите, что произойдет;)


Сортировка и группировка: UI / UX

Лучший способ позволить пользователю сортировать и группировать данные в вашей таблице / списке заключается в использовании ViewSettingsDialog.

Его довольно легко определить и настроить, и он дает вам много возможностей управления. ViewSettingsDialog встроен во фрагмент и отображается как диалоговое окно / всплывающее окно.

Обычно, когда вы хотите отобразить подобное диалоговое окно, вам просто нужно создать определение фрагмента в файле (например, ViewSettingDialog.fragment.xml) и загрузить его, когда пользователь нажимает кнопку над таблицей.

Когда мы говорим о фрагментах, мы должны уделять много внимания двум вещам:


  • Повторное использование ресурсов
  • Зависимость от жизненного цикла

Оба они позволяют не тратить зря ресурсы и не создавать утечек памяти (и вы действительно не хотите с ними иметь дело!)

Итак:


  1. Создайте новый sap.ui.xmlfragment только при необходимости (когда переменная, содержащая ссылку, не является нулем или уничтожена), в противном случае просто повторно используйте ее и откройте диалоговое окно
  2. Не забудьте уничтожить диалоговое окно, когда это необходимо, например, когда диалоговое окно закрывается, если вы используете одну и ту же переменную для разных фрагментов или в событии выхода контроллера.

Info Toolbar

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

В нашем случае, когда пользователь выполняет поиск, мы собираемся отобразить последнюю временную метку поиска и общее количество отфильтрованных записей.


Заключение, а что дальше в части 3?

Если вы хотите проверить окончательный результат, вы можете напрямую перейти к ветви step_2 нашего проекта GitHub.

В следующей части упражнения мы познакомим вас с концепцией макета SplitApp и Master-Detail, чтобы вам лучше начать читать новую документацию;)

.

python - Как отфильтровать список

Переполнение стека
  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
  5. Реклама
.

Смотрите также