kitsudaiki / libkitsunemimicommon Goto Github PK
View Code? Open in Web Editor NEWIMPORTANT: This repository is no longer maintained, because the content was moved into https://github.com/kitsudaiki/Hanami-AI
License: MIT License
IMPORTANT: This repository is no longer maintained, because the content was moved into https://github.com/kitsudaiki/Hanami-AI
License: MIT License
For the case of
+---+---+---+
| a | b | c |
+===+===+===+
| x | y | z |
+---+---+---+
optional output:
+---+---+
| a | x |
+---+---+
| b | y |
+---+---+
| c | z |
+---+---+
In this case it doesn't make much sense, but in with longer string within the table it makes it better readable.
the state machine should support parent states
it should be possible to validate a data-item-tree against a schema
the width of the single columns should be imitable, for the case, that a cell contains a very big string.
line-breaks within the cells in the output of the table-items make problems. Beside this, lines can become too long without without the feature to print multiple lines within one table-row.
For a specific feature it is necessary for the item-buffer to have a static part at the beginning, which doesn't contains the items.
Tables should get a bigger line between header and body, to look like this:
+-----------------+---------+
| Name of column1 | column2 |
+=================+=========+
| this is a test | k |
| asdf | hmmm |
+-----------------+---------+
Since adding a new constructor and setter for boolean, there is a problem.
When entering DataValue test("test");
it tries to interprete the string as bool and calls the false constructor.
This library here should never include external libraries to keep it as generic as possible. Because in c++14 for interactions with files external libraries like the boost-filesystem library were necessary. This was the main-reason, why really common things like logging was places into its extra library https://github.com/kitsudaiki/libKitsunemimiPersistence. With c++17 the filesystem functions of the boost-library becomes pars of standard c++. So with now moving from c++14 to c++17 it is possible to dissolve the libKitsunemimiPersistence library and move the commonly used parts into this library here.
Update handling of threads by removing unused code.
When using the debug-mode in QtCreator, which basically also only use gdb, the debugger fails while starting the threads of the thread-class with a weird error. Problem first time appaerd in under Ubuntu 20.04.
The UNITTEST-macro should be renamed to IS_EQUAL and UNITTEST_NEG to IS_NOT_EQUAL. files also should be renamed
The readme-file must be filled with more content, before making this project open-source.
Stack-Buffer should have a local reserve buffer to minimize the conflicts in the spin-lock of the stack-buffer-reserve.
The KyoukoMind-project has an item-buffer class to store items in a data-buffer with a linked list of the deleted items within the buffer for fast deletion and reallocation of items inside of the buffer. This has become very generic and so it could become part of this common-library.
Add a simple counter for allocated and freed memory to identify memory-leaks.
I'm not really happy with the current output-methods of the table-items. It has become to complicate since issue #17. This can be done better.
Add log-rotation to logger.
the print
methods should be renamed to toString
to avoid confusing.
The build-section in the readme is horrible and even worse in other repositories with requirements. A build-script is necessary to make things easier.
similar to the unit-tests, some simple benchmark-tests should be added for performance-analytic
In the Thread-class, the methods start
and stop
should be renamed to startThread
and stopThread
.
Add memory-leak-tests based on the memory-counter class
For the internal representation in the DataValue
-class the strings should be replace with char-arrays. Thats make it possible to use a union to save memory.
The toString()
-method of the data-items doesn't create full correct json.
The copy-constructor and copy-assignment-operator of the data-items are not tested in the memory-leak-tests
add a search-function, which search in an data-item-tree all subtrees behind a specific key and return all results as array.
Add base64 encoding and decoding to the common object methods.
Move common object methods (base64 encode/decode and hexlify into other libraries)
The event-queue will not be cleared when deleting a thread-object. This case should be also covered by a memory-leak-test.
the DataObject
-class of the data-items have to be renamed to DataMap
.
The events have the problem, that their processEvent
-method is protected, which makes the handling a bit stupid. These virtual method should become public.
While using v0.15.0
together with opencl, I ran into memory-problems in the memory-counter, but only with intel-gpu. Maybe they do dirty stuff into their driver.
The memory-counter has to be reduced again to only count the bytes of the data-buffer-class, but not of new and delete.
Add Event-Queue for different types of events and each thread should contain its very own queue, which can be filled everywhere from inside the thread.
beside string, int and float, also boolean-values should be supported by the DataValues-class.
The data-items can only be converted into a json-string. It should be possible to convert them into a table output, when they have a valid style.
Add progress-bar for terminal-output.
The current thread-class should be moved to the new planned library libKitsuneHardware. There should be some functions to get system information like number of cpu-threads. This is necessary to complete the binding-feature of the thread class, which has at the moment only a hard coded maximum of 4 cpu-threads. Thats why the thread class is better placed in the other lib.
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.