Giter VIP home page Giter VIP logo

maruji's Introduction

MARUJI - まるじ - 〇字

THIS APPLICATION IS A WORK IN PROGRESS, VERY FAR FROM COMPLETION!

This is the Japanese language learning tool focused on kanji and vocabulary. Knowing kana is a requirement for using this application.

Core principles

Design of this application is based on these principles:

  1. Kanji should be learned in a proper order.

  2. You cannot learn kanji separately from the rest of the Japanese language, and it makes the most sense to learn kanji together with words which include them.

  3. There is no such thing as "meaning of a kanji", so this type of information is not used in this application. Words, however, have meanings, and this is what should be learned. Read these, if you haven't already:

  4. Human brain always looks for ways to "cheat", i.e. to find any kinds of shortcuts which would simplify any given task. This causes a typical problem of not being able to recognize the kanji you've just learned in some applications you can find out there. It goes like this:

    1. You download yet another "Awesome Kanji Memorization Senpai-Samurai" application
    2. You learn that the "日" means "a day"
    3. Senpai-Samurai asks you to select a correct kanji for "a day" from those: 鼻, 日, 顔, 薬
    4. Since the other three do not make any sense yet, you choose "日"
    5. Senpai-Samurai sets your memorization rate to 100%! You're awesome, but not quite as awesome as the author of the Senpai-Samurai
    6. Repeat previous steps multiple times
    7. With a deep feeling of success (your memorization rate is still at 70-90%, according to the Senpai-Samurai), you go to the internets to apply your Great Knowledge
    8. You can't read shit and feel stupid

    You fail at learning kanji because your brain is very successful at learning other things! It learned how to exclude wrong options from a list, so that you don't even have to look at the correct answer to select it in the Senpai-Samurai app, but the problem is that this doesn't work in real use cases of kanji, where no answer options are given.

  5. You're not in school (at least, it is not important here), so no marks should be given. The only measure of your success at learning Japanese is your ability to read, write, and speak Japanese.

  6. No software product is enough to learn a language. If you want to learn Japanese, go talk to people who already know Japanese. They'll teach you the language; this application is just a way to optimize and simplify the process a bit.

maruji's People

Contributors

scriptin avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

maruji's Issues

Kanji components question type

Possible implementations

  1. Fill in the missing component (or multiple components) in a kanji. In this case the kanji should be shown with a "hole": strokes which form a hidden component are missing, maybe only an outline is shown to mark a general area where missing strokes were. A user is then would have to choose a correct component from answer options below.
    • Big open question: how to split kanji into components?
    • Show hidden components as-is (missing strokes from a glyph), or as a stand-alone kanji? If shown as-is, it may be trivial to figure out the missing component just by inspecting the position, so that the chosen option fits into a blank spot. If shown stand-alone, strokes may have significantly different shapes, since we are dealing with partial kanji, variants, and various affine and non-affine transformations.
    • If possible, take position into account, e.g. give answer options for the same component in different places.
  2. Show a set of components, so that a user would have to reconstruct the whole kanji.
    • There are strokes which do not participate in any components.
    • There are simple kanji which only have one component.
    • How to show these options? As-is or stand-alone? (Same as for previous implementation option)
  3. Search a correct kanji by components, similar to jisho.org component search.
    • Still, there is a problem of decomposition, because databases like KRADFILE are not adequate in terms of variants and shapes.
    • In this case, users are not forced to memorize all components. Just one or two would be enough to find the correct kanji, since the set of kanji in the app is much more limited compared to jisho.org.

Problems with decompositions

  1. Merged components. "" decomposed as "古+兄", and "兄" has a part="2" attribute, hence considered "partial", when actually it is just a regular "儿" element.
  2. Scattered parts of components. "" consist of "囗+口", but "囗" is split into two parts, because first two of its' strokes are drawn before "口", and then the last stroke is drawn at the very end.

The only solid fix I imagine is to provide custom decompositions.

Create a logo

Ideas:

  • style a "〇字" word, maybe just add okurigana
  • doge, since "Maru" is a common dog name

In-app instructions page / user manual

Write a user manual, explaining:

  • most efficient ways of using the application
  • limitations of used methods
  • available features

Make this a separate page inside the app, so that users wouldn't have to visit GitHub wiki.

Module not found: Error: Cannot resolve module 'async_hooks'

Hey,

I tried to set up your app locally, but got an error.

Steps:

  1. npm i --legacy-peer-deps
  2. npm run start
  3. Open http://localhost:8080/webpack-dev-server/ in Safari

Full error message:

ERROR in ./~/bluebird/js/release/promise.js
Module not found: Error: Cannot resolve module 'async_hooks' in /Users/gleb/git/maruji/node_modules/bluebird/js/release
 @ ./~/bluebird/js/release/promise.js 34:4-26

macOS 13.0.1
Node v16.19.0

Improve answer options: display semi-transparent ○/× symbols on buttons

Display circle (○) or cross (×) symbol on SVG buttons with answer options when they are clicked to provide additional indication of the result. Those symbols should fill the entire button and be semi-transparent, so that they do not obstruct kanji or get obstructed.

Currently it's only the green or red color which indicate if the answer was successful or not, which may be problematic for color-blind users.

Progress page

  • Button to reset progress
  • View progress: design appropriate D3 charts, tables, or whatever fits best

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.