Mnemosyne: efficient learning with powerful digital flash-cards.

Overview

Mnemosyne: Optimized Flashcards and Research Project

Mnemosyne is:

  • a free, open-source, spaced-repetition flashcard program that helps you learn as efficiently as possible.
  • a research project into the nature of long-term memory. If you like, you can help out and upload anomynous data about your learning process (this feature is off by default).

Important features include:

  • Bi-directional syncing between several devices
  • Clients for Windows/Mac/Linux and Android
  • Flashcards with rich content (images, video, audio)
  • Support for Google text-to-speech and Google translate
  • Powerful card types
  • Flexible card browser and card selection
  • Visualization to illustrate your learning process
  • Extensive plugin architecture and external scripting
  • Different learning schedulers
  • Webserver for review through browser (does not implement any security features so far)
  • Cramming scheduler to review cards without affecting the regular scheduer
  • Core library that allows you to easily create your own front-end.

You can find a more detailed explanation of the features on the webpage, as well as the general documentation.

If you just want to download the latest Mnemosyne release as a regular user, please see the Download section. If you are interested in running and changing the latest code, please read on.

Installation of the development version and hacking

We use the git version control system and Github to coordinate the development. Please use a search engine to find out how to install git on your operating system. If you are new to git and github, there are many tutorials available on the web. For example, this interactive tutorial. See also section working locally with the code and sharing your changes for some info about git and Github.

About the code base

To get an overview of how all the different bits of the library fit together, see the documentation in the code at mnemosyne/libmnemosyne/docs/build/html/index.html. In order to keep the code looking uniform, please following the standard Python style guides PEP8 and PEP257.

Running the development code

You can find instructions for Windows here. The following instructions are valid for Linux and Mac (if you use homebrew or some other package manager).

Runtime requirements

To start working on Mnemosyne, you need at least the following software.

  • Python 3.5 or later
  • PyQt 5.6 or later, including QtWebEngineWidgets.
  • Matplotlib
  • Easyinstall
  • cheroot 5 or later
  • Webob 1.4 or later
  • Pillow
  • gTTS for Google text-to-speech
  • googletrans for Google translate support
  • For Latex support: the latex and dvipng commands must be available (e.g., TeXLive on Linux, MacTeX on Mac, and MikTeX on Windows). On Arch based distributions, you'll need texlive-core package too.
  • For building the docs: sphinx (If you get sphinx-related errors, try installing sphinx as root)
  • For running the tests: nose

You can either run a development version of Mnemosyne by using your system-wide Python installation, or by using a virtual environment with virtualenv. If your distribution provides and packages all necessary libraries in a recent enough version, using the system-wide Python install is probably easier and the recommended way.

Using the system-wide python installation

First, install all dependencies with your distribution's package manager. Then, run make build-all-deps, followed by make from the top-level mnemosyne directory. This will generate all the needed auxiliary files and start Mnemosyne with a separate datadir under dot_mnemosyne2. If you want to use mnemosyne interactively from within a python shell, run python from the top-level mnemosyne directory. You can check if the correct local version was imported by running import mnemosyne; print(mnemosyne.__file__).

Using a local python installation

If your distribution does not provide all required libraries, or if the libraries are too old, create a virtual environment in the top-level directory (virtualenv venv), activate it (source venv/bin/activate) and install all the required dependencies with pip install. Then, follow the steps of the previous paragraph.

Running the test suite

You can always run the test suite:

make test

or:

python3 -m nose --exe tests

Single tests can be run like this:

python3 -m nose --exe tests/<file_name>.py:<class_name>:<method_name>

Nose captures stdout by default. Use the -s switch if you want to print output during the test run.

You can increase the verbosity level with the -v switch.

Add --pdb to the command line to automatically drop into the debugger on errors and failures. If you want to drop into the debugger before a failure, edit the test and add the following code at the exact spot where you want the debugger to be started:

from nose.tools import set_trace; set_trace()

System-wide installation from source

For testing the development version it is not necessary to do a system-wide installation. If you want to do so anyway, here are the instructions.

Linux

Follow the installation instructions from above (install the dependencies, get the source code - either by cloning it from github, or by downloading and extracting the .tar.gz archive). Then, run the following command from within the top-level directory of the repository (which is also the location of this README.md file):

sudo python setup.py install

Depending on your setup, you might need to replace python with python3. To test the installation, change to any other directory and run mnemosyne. For example:

cd ~
mnemosyne

If you run into the issue of non-latin characters not displaying on statistic plots, install ttf-mscorefonts-installer and regenerate the font cache of matplotlib.

Mac

  • Download and install Homebrew (see http://brew.sh)
  • Open the Terminal.
  • Make sure you are using the latest version of Homebrew:
brew update
  • Install dependencies for Mnemosyne.
brew install python qt mplayer
brew cask install xquartz # needed for mplayer dylibs
  • For Mnemosyne 2.7.3, we used Python 3.7.9 and Qt 5.15. To confirm you're using the correct versions:
python --version
pip --version
  • If the versions are not correct, andy ou need to edit a Homebrew dependency, you can use these commands:
brew uninstall <package-name>
brew edit <package-name>
# Example: replace the file with the contents of https://raw.githubusercontent.com/Homebrew/homebrew-core/e76ed3606c8008d2b8d9636a7e4e6f62cfeb6120/Formula/python3.rb and save it
brew install <package-name>
brew pin <package-name>
  • Install the python dependencies for Mnemosyne, using a python virtual environment to isolate python dependencies.
  • Note for Mnemosyne 2.7.3, we used PyQt5 5.15 and PyInstaller 4.0
pip install virtualenv
virtualenv venv
source venv/bin/activate
pip install webob tornado matplotlib numpy sip pillow cheroot googletrans gtts pyopengl

# install development version of pyinstaller to ensure we get https://github.com/pyinstaller/pyinstaller/issues/5004
pip install -U https://github.com/pyinstaller/pyinstaller/archive/develop.zip

# run this command and inspect the output to confirm you're using the correct versions
pip install pyqt5 pyqtwebengine
  • Build it (while still using the python virtual environment):
make clean
make macos
  • Test the new application (back up your data directory first!):
open dist/Mnemosyne.app
  • Optionally drag and drop this new app to /Applications.

Git and Github info

Working locally with the code

If you want to hack on Mnemosyne and propose your changes for merging later ('pull request'), first create an account on, or log into, Github. Then, fork the project on Github. You now have your own copy of the Mnemosyne repository on Github.

To work with the code, you need to clone your personal Mnemosyne fork on Github fork to your local machine. It's best to setup ssh for Github, but you don't have to. Change to your working directory on the terminal and then clone your repository of Mnemosyne (in this example without ssh):

git clone https://github.com/<your-username>/mnemosyne.git

Let's also make it easy to track the official Mnemosyne repository:

git remote add upstream https://github.com/mnemosyne-proj/mnemosyne.git

It is best to create your own branches for your work:

git checkout -b <branch name>

Whenever you want, you can commit your changes:

git status
git add <files to add>
git commit -v

Sharing your changes

At some point you may want to share your changes with everyone. Before you do so, you should check make sure that you didn't introduce new test failures. Then, you should check if changes were made to the original Mnemosyne repository on Github. Your private fork on Github is not automatically updated with these changes. You can get the most recent changes like this:

git fetch upstream
git checkout master
git merge upstream/master

If there are new changes, your repository now looks like this (each number symbolises a commit):

your local master branch:  ---1-2-3-4'-5'-6'-7'-8' (new changes from upstream)
                                  |
your local feature branch:        |-4-5-6 (your changes)

Before you push your branch, you should rebase it on master. Rebasing takes all the changes in your branch (in the figure: 4-5-6) and tries to apply them on top of the master branch, so that we end up with a linear history:

your local master branch:  ---1-2-3-4'-5'-6'-7'-8' (new changes from upstream)
                                                |
your local feature branch:                      |-4-5-6 (your changes)

Rebase like this:

git checkout <branch name>
git rebase master

Follow the instructions (git status gives additional information). Once you've successfully rebased your branch, push it to your Github account (we use --force, because we want to overwrite the existing branch on our private Github account):

git push origin --force <branch name>

To create a pull request for your changes, go to the Mnemosyne project page on Github and click on the pull request tab. Click on 'New pull request' and follow the instructions.

Finally, some more background on the whole workflow can be found here.

Comments
  • Web client - sound is not played

    Web client - sound is not played

    Hello :-)

    When I use the web client and click the play button, I hear no sound. The web server runs on Windows 11 and the client on an Android smartphone. What could be the problem? Regards J.

    opened by jooseef 21
  • update the ubuntu package

    update the ubuntu package

    https://launchpad.net/ubuntu/artful/+source/mnemosyne

    ubuntu currently provides version 2.4. There are some important additions in 2.5 and 2.6 for high-resolution screens, so it would be great if 2.6 were packaged instead.

    Thanks :)

    opened by iambumblehead 16
  • Mnemosyne just thrashed my drives

    Mnemosyne just thrashed my drives

    Description

    ~3 days ago I wanted to give mnemosyne a try, so I installed the package from the Arch Linux AUR. I changed one or two settings, but then I had to leave, so I left mnemosyne open without having created any cards.

    Today, I noticed that my PC was responding slowly, so I decided to investigate. According to iotop, mnemosyne was still open and was writing to my NVMe (root) drive at ~300 MB/s. I immediately killed the process. Unfortunately, I didn't think to take a screenshot of iotop at the time, or run strace.

    After doing some investigation (see Debug Info, below), it turned out that since the last reboot, ~49.73 TB had been written to my NVMe drive and ~550 GB had been written to one of my HDD drives. Since my PC has been up for ~14 days, I cannot attribute all of this to mnemosyne (I can attribute at least ~150 GB of the data written to the HDD to other programs). However, it still appears that mnemosyne wrote tens of terabytes to my near-unused NVMe drive, using up ~1/4 of its rated write endurance in the process. For reference, prior to this, I had written <5 TB total to the drive over the past year.

    Attempting to open mnemosyne now gives the following error:

    An unexpected error has occurred.
    Please forward the following info to the developers:
    
    Traceback (innermost last):
      File "/usr/bin/mnemosyne", line 262, in <module>
        debug_file=options.debug_file)
      File "/usr/lib/python3.7/site-packages/mnemosyne/libmnemosyne/__init__.py", line 193, in initialise                                               
        self.activate_components()
      File "/usr/lib/python3.7/site-packages/mnemosyne/libmnemosyne/__init__.py", line 282, in activate_components                                      
        self.component_manager.current(component).activate()
      File "/usr/lib/python3.7/site-packages/mnemosyne/libmnemosyne/logger.py", line 23, in activate                                                    
        self.archive_old_log()
      File "/usr/lib/python3.7/site-packages/mnemosyne/libmnemosyne/logger.py", line 192, in archive_old_log                                            
        f.write(l.encode("utf-8"))
      File "/usr/lib/python3.7/bz2.py", line 241, in write
        compressed = self._compressor.compress(data)
     KeyboardInterrupt
    

    I've decided to open an issue to attempt to resolve this so no one else experiences this. If any further debug information is required, let me know and I will provide it at the next opportunity. Quite frankly, I'm furious right now and not in the mood to debug this further at the current moment.

    Debug Info

    • uname -a
    Linux sputnik 4.18.16-arch1-1-ARCH #1 SMP PREEMPT Sat Oct 20 22:06:45 UTC 2018 x86_64 GNU/Linux
    
    • pacman -Q | grep mnemosyne
    mnemosyne 2.6.1-1
    
    • uptime
     02:08:39 up 14 days, 27 min, 16 users,  load average: 1.73, 2.11, 2.37
    
    • df -T
    Filesystem                Type     1K-blocks      Used Available Use% Mounted on
    dev                       devtmpfs   5804948         0   5804948   0% /dev
    run                       tmpfs     16336184      1012  16335172   1% /run
    /dev/mapper/vgroup-lvroot ext4     234147832  38469808 183714224  18% /
    tmpfs                     tmpfs     16336184    262628  16073556   2% /dev/shm
    tmpfs                     tmpfs     16336184         0  16336184   0% /sys/fs/cgroup
    tmpfs                     tmpfs     16336184    407456  15928728   3% /tmp
    /dev/nvme0n1p1            vfat       1046512     65692    980820   7% /boot
    tank01                    zfs       25908352         0  25908352   0% /mnt/tank01
    tank01/vm                 zfs       25908452        96  25908356   1% /mnt/tank01/vm
    tank01/vm/windows         zfs       74854680  48946324  25908356  66% /mnt/tank01/vm/windows
    tank02                    zfs      603361536 112892672 490468864  19% /mnt/tank02
    tank02/tmp                zfs      665136128 174667776 490468352  27% /mnt/tank02/tmp
    tmpfs                     tmpfs      3267236        32   3267204   1% /run/user/1000
    
    • awk '/nv/ {print $3"\t"$10 / 2 / 1024}' /proc/diskstats
    nvme0n1 4.97347e+07
    nvme0n1p1       56.9048
    nvme0n1p2       4.97347e+07
    
    • awk '/sd/ {print $3"\t"$10 / 2 / 1024}' /proc/diskstats
    sda     550965
    sda1    550965
    sdb     1659.93
    sdb1    1659.93
    
    • sudo smartctl -A /dev/nvme0n1
    ...
    === START OF SMART DATA SECTION ===
    SMART/Health Information (NVMe Log 0x02, NSID 0x1)
    Critical Warning:                   0x00
    Temperature:                        38 Celsius
    Available Spare:                    100%
    Available Spare Threshold:          10%
    Percentage Used:                    18%
    Data Units Read:                    3,204,202 [1.64 TB]
    Data Units Written:                 107,146,899 [54.8 TB]
    Host Read Commands:                 47,591,909
    Host Write Commands:                176,159,535
    Controller Busy Time:               2,202
    Power Cycles:                       450
    Power On Hours:                     738
    Unsafe Shutdowns:                   32
    Media and Data Integrity Errors:    0
    Error Information Log Entries:      26
    Warning  Comp. Temperature Time:    0
    Critical Comp. Temperature Time:    0
    Temperature Sensor 1:               38 Celsius
    Temperature Sensor 2:               44 Celsius
    
    opened by indiv0 12
  • Segfault in Debian

    Segfault in Debian "stretch"

    Hello, I have just installed Debian "Stretch" and I cannot run mnemosyne.

    When I remove .local/share/mnemosyne and .config/mnemosyne

    $ mnemosyne
    libpng warning: iCCP: known incorrect sRGB profile
    libpng warning: iCCP: known incorrect sRGB profile
    libpng warning: iCCP: known incorrect sRGB profile
    libpng warning: iCCP: known incorrect sRGB profile
    libpng warning: iCCP: known incorrect sRGB profile
    QIODevice::write (QProcess): device not open
    Erreur de segmentation
    

    If I run it again I get :

    1. A dialog box with message "Unable to load file, query failed"
    2. I close the dialog and another one is raised with "If you are using a USB key, refer to the instructions on the website so as not to be affected by drive letter changes."
    3. Then it asks me to select a db file. I select the one it has just created and that brings me back to step 1

    Can you suggest a workaround or something to try?

    thanks Christophe - a longtime Mnemosyne user

    opened by cmealares 12
  • Remember how many cards we've learned today even after re-opening the app

    Remember how many cards we've learned today even after re-opening the app

    Rationale

    When we close the Mnemosyne application and re-open it, it won't remember the number of the already memorized cards. In other words, it won't warn you if you've already learned 15 or more words.

    Implementation

    This PR aims to fix this issue and re-construct the self._fact_ids_memorised from the logs which are not that hard.

    We can fetch all the newly learned cards (same query as in the statistics) and all the forgotten but learned cards today. Combining the two, we can get the number of learned cards today.

    New features

    • The already memorized cards are re-constructed from the logs
    • It only warns once per day
    • Fixed long-time flaky python3.7 test

    Any comments are welcome.

    opened by woohgit 11
  • Mnemosyne 2.5: ImportError: cannot import name 'QtWebEngineWidgets'

    Mnemosyne 2.5: ImportError: cannot import name 'QtWebEngineWidgets'

    Hallo, when entering mnemosyne I get the following error message: ---------message---------------- An unexpected error has occurred. Please forward the following info to the developers:

    Traceback (innermost last): File "/usr/local/bin/mnemosyne", line 4, in import('pkg_resources').run_script('Mnemosyne==2.5', 'mnemosyne') File "/usr/lib/python3/dist-packages/pkg_resources/init.py", line 748, in run_script self.require(requires)[0].run_script(script_name, ns) File "/usr/lib/python3/dist-packages/pkg_resources/init.py", line 1517, in run_script exec(code, namespace, namespace) File "/usr/local/lib/python3.6/dist-packages/Mnemosyne-2.5-py3.6.egg/EGG-INFO/scripts/mnemosyne", line 147, in from PyQt5 import QtWebEngineWidgets # Needs to happen first for some reason. ImportError: cannot import name 'QtWebEngineWidgets' ----------message-------------

    My system is Linux xxxx 4.13.0-1-amd64 #1 SMP Debian 4.13.4-2 (2017-10-15) x86_64 GNU/Linux

    How can I solve the problem?

    Thank you very much.

    opened by grberta 11
  • Migration to Github (except translations)

    Migration to Github (except translations)

    Relevant ML threads: recent, last year Before migration:

    • [x] Test integration with launchpad's translation service
      • Problem: qastaging.launchpad.net and staging.launchpad.net don't import the branch properly. Which is not surprising, because they don't really work to begin with. But the import works fine here, so I don't think it will be a problem. Marking as solved.
    • [x] Run tests on Windows automatically with Appveyor
      • [x] Initial setup
      • [x] Fix for latex on windows: install miktex.portable with chocolatey and cache it
      • [x] Fix test hang. (Reason: running dvipng resulted in the miktex installer being triggered, because zhmetrics wasn't installed.)
      • [x] Optional: find out how to install zhmetrics from local file. Can be done, but package is only 35kB bit, so not worth it.
      • [x] Find out reason for excessive test failures
    • [x] Create a top-level README.md file
    • [x] Prepare website udpate, but don't update the website yet (see website_update.md):
      • [x] Bug reporting on Github
      • [x] Hacking: Github + git workflow
      • [x] Translation on launchpad

    Steps immediately before conversion:

    • [x] Create Pull Request on launchpad for changes that I've accumulated in the github branch here on Github
      • [x] Wait until the (revised) pull request is merged
    • [x] Ask Peter to merge his experimental branch into Launchpad master
    • [x] Optional, but nice: Make tests work

    Actual conversion:

    • [x] Convert bzr -> git using the steps outlined in my email (don't forget to remove the additional file mentioned by Peter)
    • [x] Push the converted, new 'productive' repository to Github
    • [x] Update the launchpad page:
      • [x] Close bug tracker
      • [x] Migrate open bug reports
      • [x] Switch translation service to git -> bzr import from Github
      • [ ] Optional: create a git mirror on Launchpad
      • [x] Update description: only used for translation, please report bugs and get the code on Github (link)
    • [x] Update website with the pre-prepared changes.
    • [x] Update project description here on Github to reflect that it is the main repository.
    meta 
    opened by jmehne 11
  • latex complains about

    latex complains about "Undefined control sequence."

    From logs when mnemosyne is run in command line and I tried to sync (it later fails, though likely for a different reason)

    Command `latex -interaction=nonstopmode tmp.tex` failed with rc=1
    Command output:
    This is pdfTeX, Version 3.14159265-2.6-1.40.20 (TeX Live 2019/Debian) (preloaded format=latex)
     restricted \write18 enabled.
    entering extended mode
    (./tmp.tex
    LaTeX2e <2020-02-02> patch level 2
    L3 programming layer <2020-02-14>
    (/usr/share/texlive/texmf-dist/tex/latex/base/article.cls
    Document Class: article 2019/12/20 v1.4l Standard LaTeX document class
    (/usr/share/texlive/texmf-dist/tex/latex/base/size12.clo))
    (/usr/share/texlive/texmf-dist/tex/latex/l3backend/l3backend-dvips.def)
    No file tmp.aux.
    ! Undefined control sequence.
    <recently read> \mathcalc 
                              
    l.5 $\mathcalc
                  {O}(log n)$
    [1] (./tmp.aux) )
    (see the transcript file for additional information)
    Output written on tmp.dvi (1 page, 300 bytes).
    Transcript written on tmp.log.
    
    Command input:
    
    \documentclass[12pt]{article}
    \pagestyle{empty}
    \begin{document}
    $\mathcalc{O}(log n)$
    \end{document}
    
    opened by matkoniecz 9
  • Database not Saving Automatically

    Database not Saving Automatically

    Mnemosyne is stuck on giving me the same cards at startup. When I rate the first few cards, exit, and reopen Mnemosyne, none of the progress gets saved. It found out that general settings saves and editing cards saves but not (de)activating cards or reviewing cards. There is no error message or anything.

    I just found out that pressing "File->Save" works, but I have to press "Save" each time before I exit, and it won't save automatically. So it's not automatically saving when I exit Mnemosyne. I've tried restarting my computer to no avail. Is there some way I can fix this other than reinstalling Mnemosyne?

    I recorded a video of my error but found that I can't post it in here, so I'll just explain what I did in the video. The first time I opened Mnemsoyne, I did a few cards, exited, and reopened to the first card it gave me. Then I did some cards, saved it via "File->Save", exited, and reopened with everything saved. Finally, I did some cards, saved it (File->Save), and did a few more cards. When I reopened it the third time, only the cards that I did before I pressed "Save" were saved. Apparently Mnemosyne isn't automatically saving before I exit.

    opened by Elliot-TS 9
  • UTF8 encoding error when syncing Android to Windows

    UTF8 encoding error when syncing Android to Windows

    Hope it's Ok to post this here.

    image That is what I got when syncing my library between 2.1 Android version and 2.7 on PC. Can't push the remote version to PC due to the above. Never had this problem before & pushing cards from PC to Android was not a problem.

    udcc3 seems to be this Is there a way to search for the problematic chars in the database? I don't know how much of it is in plaintext.

    My cards are mix of English, Polish, Spanish, with some TeX too. My currently synced DB is 5,000+ cards and quite old.

    opened by wwiecek 8
  • latex in macOS

    latex in macOS

    I installed MiKTeX in order to view latex content in flashcards but I also had to make two other changes to finally make it work: 1-. In the .../Library/Mnemosyne/config.py file I changed the path for the latex and dvipng variables to /usr/local/bin/latex (and dvipng), which was the path where MikTeX installed the packages. 2-. In this same file, the latex command supposedly uses -interactiononstopmode option, but the right option is: -interaction=nonstopmode

    opened by atophys 8
  • LaTeX and other small images display too large on web browser

    LaTeX and other small images display too large on web browser

    After my pull request https://github.com/mnemosyne-proj/mnemosyne/pull/225, there was the unintended side effect of making expanding small images, such as LaTeX images, to the size of the screen. The change needs to be adjusted so that images larger than the screen are shrunk while images smaller than the screen do not change.

    I am planning to resolve it this weekend, I just wanted to make sure that it was logged in case I don't get around to it for a few weeks.

    opened by gbear605 0
  • Webserver Review Problem: Data salad after displaying the HTML source code

    Webserver Review Problem: Data salad after displaying the HTML source code

    Hello! o/ I discovered a problem that can be reproduced like this: Show question from Card A, then show the answer and rate the answer. Show question from card B. Show the HTML source of question B. But the HTML source code shows the question of the next card C (should be question B of course). Now show answer B. The answer is card C's question and card C's answer. Card B is evaluated and removed from the not-memorized-stack even though the answer was not shown.

    https://user-images.githubusercontent.com/108878285/186002311-485bd564-9116-4151-9fa0-44ff9e7a5a9e.mp4 https://drive.google.com/file/d/1QpacIv24UQ0LaQvNtqTfL589SirlFu8a/view?usp=sharing

    The reason could be: The web server "thinks" that card B should be evaluated after form = cgi.FieldStorage(fp=environ["wsgi.input"], environ=environ) was called. I have no idea how to quickly fix the problem. Unfortunately I'm not familiar with the code structures of Mnemosyne.

    opened by jooseef 3
  • Feature Request: Support tls for sync

    Feature Request: Support tls for sync

    It would be a nice feature, if the sync function would support tls. This would allow to sync the database secure over the internet.

    The required changes does not sound very complex. The client can simple use tls and the server can be revers proxy over a web-server by the user.

    opened by LuckyTurtleDev 1
Just some mtk tool for exploitation, reading/writing flash and doing crazy stuff

Just some mtk tool for exploitation, reading/writing flash and doing crazy stuff. For linux, a patched kernel is needed (see Setup folder) (except for read/write flash). For windows, you need to install zadig driver and replace pid 0003 / pid 2000 driver.

Bjoern Kerler 1.1k Dec 31, 2022
🎴 LearnQuick is a flashcard application that you can study with decks and cards.

?? LearnQuick is a flashcard application that you can study with decks and cards. The main function of the application is to show the front sides of the created cards to the user and ask them to guess the back of the card. As a result of self-assessment of user's ability to guess the back sides of the displayed cards, the cards that user weak against are shown more often, and the cards that user strong against are shown less frequently.

Mehmet Güdük 7 Aug 21, 2022
Easily Generate Revolut Business Cards

RevBusinessCardGen Easily Generate Revolut Business Cards Prerequisites Before you begin, ensure you have met the following requirements: You have ins

Younesâ„¢ 35 Dec 14, 2022
Anki cards generator for Leetcode

Leetcode Anki card generator Summary By running this script you'll be able to generate Anki cards with all the leetcode problems. I personally use it

Pavel Safronov 150 Dec 25, 2022
The fastest way to copy to (not from) high speed flash storage.

FastestCopy The fastest way to copy to (not from) high speed flash storage. This is about 3-6x faster than file copy on explorer.exe to usb flash driv

Derek Frombach 0 Nov 3, 2021
A Lego Mindstorm robot for dealing out cards based on a birds-eye view of a poker table and given ArUco fiducial tags.

A Lego Mindstorm robot for dealing out cards based on a birds-eye view of a poker table and given ArUco fiducial tags.

null 4 Dec 6, 2021
Automatically deletes Capital One Eno virtual cards for when you've made a couple too many.

eno-delete Automatically deletes Capital One Eno virtual cards for when you've made a couple too many. Warning: Program will delete ALL virtual cards

h3x 3 Sep 29, 2022
Build Xmas cards with user inputs

Automatically build Xmas cards with user inputs

Anand 9 Jan 25, 2022
A tool to guide you for team selection based on mana and ruleset using your owned cards.

Splinterlands_Teams_Guide A tool to guide you for team selection based on mana and ruleset using your owned cards. Built With This project is built wi

Ruzaini Subri 3 Jul 30, 2022
Pyrmanent - Make all your classes permanent in a flash 💾

Pyrmanent A base class to make your Python classes permanent in a flash. Features Easy to use. Great compatibility. No database needed. Ask for new fe

Sergio Abad 4 Jan 7, 2022
Anki Cards for the HSK vocabulary Chinese-German

Anki-HanyuShuipingKaoshi Anki Cards for the HSK vocabulary Chinese-German Das Deck baut auf folgenden Quellen auf: China Endecken Wortschatz von wohok

null 1 Jan 7, 2022
A small script I made that takes any standard Decklist of magic the gathering cards and pulls all card images from scryfall at once!

A small script I made that takes any standard Decklist of magic the gathering cards and pulls all card images from scryfall at once!

null 15 Aug 26, 2022
A tool to flash .ofp files in bootloader mode without needing MSM Tool, an alternative to official realme tool

Oppo/Realme Flash .OFP File on Bootloader A tool to flash .ofp files in bootloader mode without needing MSM Tool, an alternative to official realme to

Italo Almeida 70 Jan 2, 2023
Purge your likes and wall comments from VKontakte. Set yourself free from your digital footprint.

vk_liberator Regain liberty in the cruel social media world. This program assists you with purging your metadata from Russian social network VKontakte

null 20 Jun 11, 2021
Reproduce digital electronics in Python

Pylectronics Reproduce digital electronics in Python Report Bug · Request Feature Table of Contents About The Project Getting Started Prerequisites In

Filipe Garcia 45 Dec 20, 2021
Various hdas (Houdini Digital Assets)

aaTools My various assets for Houdini "ms_asset_loader" - Custom importer assets from Quixel Bridge "asset_placer" - Tool for placment sop geometry on

null 9 Dec 19, 2022
DSG - Source code for Digital Scholarship Grant project.

DSG Source code for Dr. Stephanie Tsang's Digital Scholarship Grant project. Work performed by Mr. Wang Minghao while as her Research Assistant. The s

null 1 Jan 4, 2022
The RAP community of practice includes all analysts and data scientists who are interested in adopting the working practices included in reproducible analytical pipelines (RAP) at NHS Digital.

The RAP community of practice includes all analysts and data scientists who are interested in adopting the working practices included in reproducible analytical pipelines (RAP) at NHS Digital.

NHS Digital 50 Dec 22, 2022
Audio2Face - a project that transforms audio to blendshape weights,and drives the digital human,xiaomei,in UE project

Audio2Face - a project that transforms audio to blendshape weights,and drives the digital human,xiaomei,in UE project

FACEGOOD 732 Jan 8, 2023