Giter Club home page Giter Club logo

5balls / coleitra Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 1.09 MB

Cross platform vocable and grammar trainer using spaced repetition algorithm - unfinished rewrite of existing and working (but due to license reasons unpublished) app / program

Home Page: https://coleitra.org

License: GNU Affero General Public License v3.0

CMake 0.54% CWeb 23.26% C++ 64.28% QML 7.63% QMake 0.40% MATLAB 0.97% C 2.02% Dockerfile 0.61% Vim Script 0.28%
vocabulary-learning vocable-trainer grammar android app desktop vocable spaced-repetition spaced-repetition-algorithm flahscards

coleitra's Issues

[Bug]: Testreport

coleitra version

unreleased

Operating System

Debian 11

Git commit

8cd4f7f

Description

I need to test this form!

Steps to reproduce

  1. Got to the issue page
  2. Choose the right template
  3. Fill everything out

Perceived severity by user

Low

Additional information

This forms are a useful feature.

Code of Conduct

Implement grammar provider

Might put this in a seperate repo for license reasons but this should be supported on both ends, so it needs to be here as well.

  • Implement parser for wiktionary tables (is ok license wise because we don't use the LUA code)
  • Implement grammar provider based on this parser
  • Implement android service which provides grammar information from wiktionary (This convoluted arrangement is necessary for using the LUA scripts from wiktionary which are under an incompatible license).
  • Implement android service which provides grammar information from other code (Find this open source code again)

Android services are something for much later. I consider the base functionality of the grammar provider working good enough for version 0.1 (the whole grammarprovider was originally planned for a later release 0.2, but we needed to implement this earlier).

Implement reasonable vocable editor

There should be a better vocable editor than in old coleitra to make it usable for people other than myself.

  • Find more clever way to access database singleton (could be QObject parent of edit class)
  • Create good edit element for entering text
  • Create expert mode which allows entering everything
  • Create simple mode for easy entering
  • Modify expert mode for search / editing capability
  • Modify simple mode for search / editing capability

On further thought I think search / editing capabilities don't belong in those modes. Database mode is better for this and fine (should be complete though)

Implement GUI for editing grammarprovider json file

We need an easy way to extend the grammarprovider

  • Write Qt TableView (C++) for json data structure for language
  • Write QML Element for showing this as editable table
  • Write interfacing functions for QML to show it from context with filled out table from editing mode (to easily switch back and forth between this mode and editing mode)

[Bug]: Grammarprovider destructor crashes program

coleitra version

unreleased

Operating System

Debian 11

Git commit

No response

Description

Bug does occur always when quitting program from simple edit mode.

Steps to reproduce

  1. Goto Simple Edit mode
  2. Quit program
  3. Observe segmentation fault

Perceived severity by user

No response

Additional information

Order of destructors is not enforced right now and m_grammar_provider is not available anymore when the destructor is called. Do we even have to disconnect this signals or should we care?

Code of Conduct

Add lua interfaces

Add lua again (should be fast as it works just fine on old coleitra).

But than also think about how to elegantly replace compiled C code at runtime with LUA scripts where possible and safe. This requires exposure of the necessary functions.

Implement support for configuration of grammarprovider

Basic JSON / JSON schema support is now included and we have a first schema. Now we can implement a generic approach to work with configuration files.

  • Create datastructure for json data
  • Check if file for language is available in getGrammarInfoForWord and load if not already loaded
  • Write generic function for parsing wiktionary pages if language file is available
  • Convert static functions into configuration files for languages
  • Remove static remains of language specific parsing

Implement delayed grammar lookup

There should be an option to delay the grammar lookup to later. This will simplify input of vocables.

  • Refactor context dependent code to be context independent
  • Clean up lookup code
  • Implement schedule cache option

Try windows cross compile

Would be nice if it works. Not strictly necessary right now I guess

  • Figure out if mingw is enough (maybe clang can do it as well?)
  • See, if we can use precompiled Qt lib for windows
  • See, if we can use some stupid installer (Nullsoft?). Is there something nicer for windows 11?

Fix android compile

Android compile is probably broken right now due to new libraries. Have not done any tests to compile it on my new laptop.

  • Install android SDK
  • Install android NDK
  • Compile OpenSSL for android (try to get it right the first time)
  • Compile android variant of Qt libraries (try to get it right the first time)
  • Compile nlohmann json library for android
  • Compile json schema parser library for android
  • Try to compile LAPACK for android
  • Compile levmar for android
  • Build APK package
  • Document android compile in new Install chapter in coleitra.w

Fix database schema

There are some weaknesses in the old coleitra of the database schema / the implementation of the database handling:

  • Foreign keys are probably not used throughout
  • Languages are not stored as a separate table but strings are used
  • Only the time when a vocable leaves the buffer is stored (i.e. when it is known), but it should be stored, when a vocable is displayed and when it is not known as well
  • There should be an easy way to delete all rows depending on a foreign key postponed for later
  • There is still some bug in the old code, where the program wont start with an empty / new database - this should be covered in a unit test Unit tests should be a separate issue
  • Access to the database should be done without multiple database objects, if necessary there should be a singleton
  • Make sure it is possible to store SM information with the vocable (i.e. degree of knowing) even if not used right now in any algorithm

Implement current (or similar) algorithm

  • Document old algorithm
  • Implement the algorithm used in old coleitra. This should get us started for a working version.
    There should be a real function interface so we can change between algorithms easily and on the fly. (Postponed for later milestone).

Implement reasonable training window

It should be improved over the old coleitra regarding the following points:

  • Text should be scaled to fill available space as large as possible (with necessary line breaks)
  • Multiple meanings should be handled correctly (it should be possible therefore to divide space further and display multiple vocables in the divided spaces - a minimum size where a scrollarea is implemented should be postponed for a later version though)

Make grammarprovider configurable

Implement all stuff needed to just use json files to configure / extend different language support in grammarprovider

  • Make reasonable data structure
  • Load json files found into such list of data structures
  • Implement calling function mechanism for this data structure

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.