devstarter / ii Goto Github PK
View Code? Open in Web Editor NEWИнтерактивная Ииссиидиология
Интерактивная Ииссиидиология
Нужно создать содержание по подобию
Нужно реализовать всё что касается серверной части, то есть спроектировать интерфейс обмена данными. Данные для формирования содержания хранятся в org.ayfaar.app.model.Category. Содержание ссылки выше сформировано этим классом org.ayfaar.app.synchronization.mediawiki.CategorySync (может служить примером)
Нужно написать java клас, который бы запускался по крону с сервера и проверял работает ли http://ii.ayfaar.org. Если нет то выполнял бы команду rhc app restart
Нужно иметь возможность переименовать термин через API
Например "сллоогрентность" и "сллоогрентный" имеют разные формы (падежные) но по сути один и тотже термин
Следуя инструкции https://github.com/devstarter/ii/wiki/Git и видео https://www.youtube.com/watch?v=HRQ1r-nKG-w, создайте в тестовой папке этой задачи (src/test/resources/issues/issue4) любой текстовый файл и отправьте мне пулл запрос (pull request).
В текстах пунктов иногда встречаются служебные символы означающие ссылки на сноски, например http://ii.ayfaar.org/#11.13017 ††††††††††. Нужно их все убрать, то есть почистить базу данных с помощью java. Задача подобна #2 и #3.
Этапы выполнения:
Тесты https://github.com/devstarter/ii/tree/issue11/src/test/java/issues/issue11
Так как при формировании содержания выполняются достаточно много запросов в БД, предлагаю сохранять результат в отдельную таблицу БД в виде текста (JSON).
Можно попробовать объединить с #71
org.hibernate.usertype.UserType
https://developer.jboss.org/wiki/UserTypeforpersistinganEnumwithaVARCHARcolumn
Всё Пространство в каждой из своих бесчисленных «резонационных зон» структурировано множеством разнокачественных стоячих волн, которые, как бы накладываясь друг на друга и тем самым либо подавляясь, либо модулируясь, образуют в каждом из частотных Уровней возможного Восприятия абсолютно всю качественную динамику видимой и субъективно переживаемой нами «картинки» окружающей нас в каждый момент действительности.
Превратить в
Всё
<term id="Пространство">Пространство</term>
в каждой из своих бесчисленных «<term id="Резонационная зона">резонационных зон</term>
» структурировано множеством разнокачественных стоячих волн, которые, как бы накладываясь друг на друга и тем самым либо подавляясь, либо модулируясь, образуют в каждом из частотных Уровней возможного Восприятия абсолютно всю качественную динамику видимой и субъективно переживаемой нами «картинки» окружающей нас в каждый момент действительности.
Пример из http://ii.ayfaar.org/#10.10176. За основу взять org.ayfaar.app.synchronization.mediawiki.TermSync#markTerms. Тест: TermsMarkerIntegrationTest
В рамках работы над новым поиском NewSearchController, нужно реализовать интерфейс SearchCache, так чтобы эта реализацию удовлетворяла тестам SearchCacheUnitTest
Подготовить интеграционные тесты для поиска. Предлагаю преобразовать результат метода SearchController.searchInContent из List<ModelMap>
в List<ContentSearchResult>
или что-то аналогичное, и тестировать уже ContentSearchResult, чтобы зафиксировать сигнатуру результата поиска для тестирования.
Поиск на сайте для вдохновения на тесты :) http://ii.ayfaar.org/#?время
Сейчас для параграфа не возвращаются дочерние объекты. На пример
А нужно вернуть список абзацев как для запроса главы:
Изменния делать в org.ayfaar.app.utils.contents.ContentsHelper, перед началом изменений реккомендую написать тесты в org.ayfaar.app.utils.contents.ContentsHelperTest и показать их мне, чтоб я подтвердил, что задача понята верно :)
http://ii.ayfaar.org/new/#/term/%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%B8 тут вот нужно сразу термин время показывать
Нужна страничка для содержания (например).
Страница категории должна быть вида http://ii.ayfaar.org/new/#/cat/{название-категории} (также как сейчас термины, например http://ii.ayfaar.org/new/term/ра.
Данные для странички запрашивать по адресу http://ii.ayfaar.org/api/category?name={название-категории} (например) (плагин для хрома для отображения json)
Для разработки, в файле src\main\webapp\new\js\app.js
var apiUrl = "/api/";
заменить на var apiUrl = "http://ii.ayfaar.org/api/";
Для получения данных используй $api
(пример в src\main\webapp\new\js\controllers\term.js
$api.get("v2/suggestions/"+$scope.name)
) в твоём случает это будет $api.get('category/'+$stateParams.name)
Для отрисовки повторяющихся элементов используй ngReapat (там есть пример)
Понимаю, что по началу сложно, это нормально, ты не отчаивайся задавай вопросы, всё решаемо :)
Нужны такие опции очистки кеша (org.ayfaar.app.controllers.search.cache.DBCache):
uri
Иногда в текстах пунктов встречаются вопросы, например http://ii.ayfaar.org/#15.17819. Сам вопрос нужно перенести в следующий пункт, так как в нём следует ответ.
Изменения нужно сделать на уровне базы данных единожды.
При старте приложения проверять на наличие ошибок в структуре базы данных терминов и тп.
Например код, аббривиатура и синонми не должны быть основными терминами.
Ошибки собирать в отчёт и отправлять уведомлением #89
Или сделать урл по которому буду возвращены все подобные ситуации
Ветка format
тест org.ayfaar.app.format.FormatItemsTest
Нужно переделать аутокомплит для нового UI (задача #1). В этой задаче нужно сделать серверную сторону. Текущий вариант http://ii.ayfaar.org/api/term/autocomplete?filter%5Bfilters%5D%5B0%5D%5Bvalue%5D=%D0%B2, SearchController.
Нужно переделать так, что-бы url был http://ii.ayfaar.org/api/v2/search/suggestions?q=%D0%B2
И возвращал:
[
"Значение 1",
"Значение 2",
"И так далее..."
]
Поиск подходящих вариантов должен производится по принципу сначала совпадения в начале фразы, затем в начале слова в середине фразы, затем где угодно в середине фразы.
Максимум резултатов - 7.
Иногда в текстах пунктов появляются названия разделов, например http://ii.ayfaar.org/#1.0253. Нужно все их убрать, по аналогии с Главами из задачи #2
Теперь все формы слова можно брать из TermsMap
В результате работы SuggestionsController сначала должны быть самые короткие слова (фразы).
В живую проблему можно посмотреть на сайте проекта http://ii.ayfaar.org. Набрав в поиске например "вр" самое короткое слово "Время" появляется предпоследним:
Задача состоит в том, чтобы исправить метод SuggestionsController#suggestions(..) чтобы тест SuggestionsController#testOrder() выполнялся успешно. Для этого НЕ нужен томкет и база данных.
При отображении одного пункта (абзаца) например, нужно также показать параграф / главу / раздел / том из содержания, которым он относится.
Метод, где возвращается пункт: org.ayfaar.app.controllers.ItemController#get. Класс для работы с содержанием: org.ayfaar.app.utils.contents.ContentsHelper
Нужно переделать аутокомплит чтобы не зависеть от библиотеки кендо (она достаточно объёмная, не хочется всю тянуть только ради аутокомплита)
Первый вариант аутокомплита можно увидеть по ссылке http://ii.ayfaar.org/new/#/home, но он далёк от совершенства. За эталон предлагаю взять аутокомплит на этой странице http://ii.ayfaar.org/#main
Требования:
Сам список желательно стилизовать (длина, подстветка выделения) по аналогии с http://ii.ayfaar.org
Изменения производить в ветке issue1 https://github.com/devstarter/ii/tree/issue1/src/main/webapp/new
Добавить возможность прикреплять рисунки (схемы) встречающиеся в текстах
Так как в базу данных иногда вносятся изменения то и кеш нужно обновлять.
Обновления запускать каждые сутки в 3 часа ночи и по вызову через url.
Нужно написать альтернативный кеш имплеминтирующий org.ayfaar.app.controllers.search.SearchCache и расширить его возможности для хранения привязки результата поиска к термину, в том случае если поиск был связан с термином. Это делается для того, чтобы при добавлении синонимов к термину автоматически обновлять результат поиска, так как старый результат не учитывает новой связи...
Также из-за того, что поиск выполняется относительно долго, а при перезапуске приложения весь кеш в памяти стирается.
Кеш в памяти нужно оставить для ускорения работы, тоесть проверяем есть ли кеш в памяти затем есть ли кеш в базе данных, если нигде нет - выполняем поиск и сохраняем в ОБА кеша.
Бывает попадаются такие записи в таблице UID, которые больше нигде не фигурируют кроме как в Link. Когда система пытается создать объект связки (Link) с такими uid, то возникает ошибка системы.
То есть нужно пройтись по всем UID и найти те которые нигде больше не упоминаются или упоминаются только в Link и удалить их.
Идея состоит в том, чтобы оптимизировать процесс получения информации о термине.
Основные принципы: минимум информации загружать в память из базы данных и только по требованию.
Предлагаю такой алгоритм:
TermProvider содержит в себе:
Нужны следующие методы:
При поиске по Декогерентность
Цитата
Другими словами, декогерентность означает, что в каждый конкретный миг вы способны сделать лишь тот – единственный!
Обрывается в не верном месте, так как далее по тексту следует продолжение мысли. Весь текст пункта:
Другими словами, декогерентность означает, что в каждый конкретный миг вы способны сделать лишь тот – единственный! – выбор, который уже «изначально» определён теми узкоспецифическими взаимосвязями, которые в этот момент структурируют фокусируемую вами НУУ-ВВУ-Конфигурацию. Все остальные потенциальные возможности и разнообразные результаты других выборов фокусной мультиполяризации, осуществлённых как бы «в тот же самый миг» всем множеством иных «личностных» Интерпретаций вашей Стерео-Формы (во всём многообразии других сценариев вашего развития), «лично» для вас как бы не существуют вовсе, поскольку ни один из них никак не отражается в системе вашего субъективного Восприятия. Но это кажущееся отсутствие активных энергоинформационных взаимосвязей между «личностью» и всем множеством остальных её «личностных» Интерпретаций или любыми иными двойниками виртуальных объектов, проявленными в окружающей действительности, является ложным.
То есть нужно учесть этот кейс и закончить цитату в конце предложения или ... после прквышения максимума слов.
Не ожиданный список подсказок для цифры с точкой, например http://ii.ayfaar.org/api/suggestions/2.0001
Иногда в текстах пунктов появляются названия глав и разделов, вот пример:
3.0089 :
[...] данной ЛЛУУ-ВВУ-Сущности.
Глава 4. Конкретизация окружающей нас субъективной Реальности осуществляется благодаря генерациям Форм Самосознаний элементарных частиц
Переход на новую строку (\n) и Глава 4. Конкретизация окружающей нас субъективной Реальности осуществляется благодаря генерациям Форм Самосознаний элементарных частиц
нужно убрать.
Нужно провести единоразовую очистку базы данных.
И надо бы как то показать человеку что это синомим вот такого термина
Пример работающего поиска, который мы рефакторим http://ii.ayfaar.org/#?Время. В результатах вы видете не весь пункт, а только предложение в котром найдена искомая фраза.
Старый поиск на строке, на который сейчас реализован похожий функционал: SearchController.java:135. Вам нужно скопировать этот функционал и доработать, согласно требованиям прописаным в коде в комментарии и тестам.
Новый поиск (пока только структура) - NewSearchController.java. Клас, в котором нужно делать правки: SearchQuotesHelper.java, тест: SearchQuotesHelperUnitTest.java
Создать два класса модели (Entity) по схеме:
uri для Chapter формируется по схеме:
uri of chapter.owner + # + chapter.position
Например: http://youtu.be/__ibkaMRHZI#1m6s
Стек трейс не показывает с какими параметрами был вызван метод. Нужна кастумная реализация логера. Возможной свой лог таргет или ресивер. Чтобы в случае ошибки пуш ивентом отправлять параметры для повторения ошибки и исправления.
Предлагаю такой вариант... создать спринг бин со скопом request
то есть для каждого реквеста свой инстанс... и в этот бин постить лог сообщения. При возникновении ошибки брать из этого лога все сообщения и отправлять пуш ивентом
Идея состоит в том чтобы генерировать NotificationEvent'ы (наследуемые от org.springframework.context.ApplicationEvent) в разных участках кода и слушать их в одном NotificationListener'е и отправлять в этот канал https://www.pushbullet.com/channel?tag=ii. Библиотеку для работы с PushBullet можно взять эту https://github.com/shakethat/jpushbullet
Начать предлагаю с сообщения о ошибке в рантайме. Смотреть в DefaultRestErrorResolver
Ключ для доступа к API Pushbullet вынести в .property файл
При запросе категории для содержания помимо подкатегорий возвратить список родителских категорий.
org.ayfaar.app.utils.contents.CategoryPresentation
добавить поле parents
со списком родителей.
ТОЛЬКО ДЛЯ ОСНОВНОЙ КАТЕГОРИИ. То есть той которую запросили, для подкатегорий parents
оставлять пустым
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.