All graphics and sounds in this mod are properties of SNK Corporation, Metal Slug series. They are used for experimental
purposes. Graphic assets are converted from the sprites in https://retrogamezone.co.uk/metalslug/creatureenemies.htm
The System Paths Clipboard application is an extended clipboard tool that allows users to store, edit, and conveniently use recently copied file paths. By utilizing the keyboard shortcut Ctrl + C, the application saves system paths (Windows/Linux) into a database, enabling users to easily access and paste them later by clicking on the application icon (the application can also be opened with the Ctrl + left Shift shortcut) and searching for the desired path. The most recently copied path (by default, after copying a path, it becomes the selected one for pasting) or a path chosen from the application window can be pasted at any time using the shortcut Ctrl + B. Within the application, paths can be edited. Using a checkbox, users can choose between edit modes (save as a new path / edit). An edited path (or a newly saved one) that matches an existing path is moved to the top of the list and is not added again to avoid duplicates.
Screenshots
Application Components
AppManager (Application Manager)
MainWindow: Manages the user interface and serves as the main window of the application.
KeyListener: Manages keyboard shortcuts and the copying and pasting of content.
ClipboardManager: Manages clipboard content and acts as a bridge between the UI and the database.
Requirements
Python: Install Python 3.x. You can download Python from python.org.
Libraries: Install required libraries using the following command:
cd project
pip install -r requirements.txt
Application required:
pynput
pyperclip
PyQt5
PyAutoGui
Running the Application
Download the code: Copy the Paths Manager application code.
Open a terminal (Linux/Mac) or command prompt (Windows).
Navigate to the directory containing the main.py file of the Clipboard Manager application
cd project
Install required libraries
pip install -r requirements.txt
Run the application by entering the command:
python main.py
How to Use the Application
Launch the application.
The application will appear as an icon in the bottom right corner of the screen (Open the application by clicking the icon or using the Ctrl + Left Shift shortcut )
Use keyboard shortcuts (e.g., Ctrl+C, Ctrl+B) to manage the clipboard. Each path copied using Ctrl+C will appear in the application window.
Add, remove, and edit stored items using the user interface.
Graphics Resources
Application Icon: The application icon was obtained from freepik.com Icon designed by zafdesign
It also does the inverse, when a change is made to the content item, it updates the associated .item file (right now it creates another version of the field in the item).
It only will update the associated files if there has been a change detected and the field content does not match (so you won’t get stuck in an infinite update loop)
What do I need it for?
The first use case I thought for this was SXA, or the local development of themes for SXA, to help aid the development workflow around assets that will exist in Sitecore itself (css/js etc). I also figure it could be used outside of that, anywhere where you have assets stored in the file system that you will eventually want in Sitecore (media library for example).
How do I use it
Should be as easy as:
Clone, download, whatever, just get these files into your project
Update the paths.themeSrc and paths.itemSrc variables in the gulpfile.js
npm install to get the needed dependencies (yes this is assuming you have node installed on your local machine)
gulp default to start the gulp watchers (yellow is a change to an asset, blue is a change to an item)
We use inac cmake build-system in combination with different libraries which can be installed using
miniconda3. In particular, one can install LLVM from the numba channel, and MKL and SVML from Intel
channel in a cross-platform portable way with:
Note: it looks like recent versions of conda (when using MacOSX at least) have dependency issues
when installing the provious packages. You can find a workaround by using mamba instead.
You can install mamba with:
$ conda install mamba -n base -c conda-forge
It is worth noting that conda-forge channel should only be used for installing mamba. In particular,
I have detected issues when using the llvmdev package in conda-forge!
Beware: currently ironArray only supports LLVM 11. Also, we strongly suggest to use the numba
channel with conda/mamba for installing the LLVM package. In particular, we discourage the use
of native LLVM libraries in the system (either using apt, brew or any other packager), even
if they are installing LLVM 10 (the numba team seems to be doing a great job in packaging).
Windows
INAC build setup
Make sure that you have a configured repository.txt file in ~.inaos\cmake
Also you’ll need a directory ~\INAOS (can be empty)
Create a build folder
mkdir build
cd build
Invoke CMAKE, we have to define the generator as well as the build-type
cmake -G"Visual Studio 14 2015 Win64" -DCMAKE_BUILD_TYPE=Debug ..
cmake -G"Visual Studio 14 2015 Win64" -DCMAKE_BUILD_TYPE=RelWithDebInfo ..
Mac
INAC build setup:
Make sure that you have a configured repository.txt file in ~/.inaos/cmake
Also you’ll need a directory ~/INAOS (can be empty)
Sometimes it is useful to activate the tracing mechanism for debugging purposes. Example:
$ env INAC_TRACE='*' ./perf_vector_expression -e 1 -E 2 -M 3 -t 10 -l 0 -c 9 -f 2
Time for computing and filling X values: 0.0523 s, 2918.5 MB/s
Time for compressing and *storing* X values: 0.106 s, 1434.1 MB/s
Compression for X values: 152.6 MB -> 11.2 MB (13.6x)
Time for computing and filling Y values: 0.0665 s, 2296.2 MB/s
Time for compressing and *storing* Y values: 0.135 s, 1130.3 MB/s
Compression for Y values: 152.6 MB -> 152.6 MB (1.0x)
[iarray.error] - Error compressing a blosc chunk /Users/faltet/inaos/iron-array/src/iarray_expression.c:853
Error during evaluation. Giving up...
Expressions
For now only element-wise operations are supported in expressions.
The iron-array library supports disabling the SVML optimization by setting a DISABLE_SVML environment variable to any value. This can be useful for debugging purposes.
Here are my studies and experiments using ANTLR4 (for language analysis). The target code in this case is in C++, and for this a base project is used, which can be found here:
A bare-bones music player.
Intended to utilize a filesystem to browse your music instead of automatically grouping by artist, album or genre.
Focused on gesture controls.
Supports CUE sheets, M3U playlists and Internet radio.
Minimum supported Android version: 5.0 (Lollipop, API 21)
Features
Here’s what you can do in SonusPresto:
play music
browse your music in the way you have structured it, using the filesystem
play all files in a selected folder and sub-folders recursively
open CUE sheets and M3U playlists as folders
gapless playback
play Internet radio from M3U playlists
change a visual theme and language (English/Russian)
control a playback using touch and swipe gestures on a single button
listen to the audio from the video files
delete files and folders
Non-features
Here’s what SonusPresto can’t do:
view audio tags or cover art
quickly set a precise playback position
view the current playback position in seconds
use a separate buttons to control a playback (i.e. there’s no separate prev/stop/next/… buttons)
create custom playlists or manage a playback queue
basically, anything else that is not listed in the “Features” section đ
Disclaimer: new features will most likely never be added.
Specifics
Here are some quirks:
the swiping of the bottom button may not work on some devices with specific Android gesture settings
since SonusPresto doesn’t read tags, it can’t determine actual artist and album name of a music track and instead it just uses folder names for that (except for playlist items)
SonusPresto may not be compatible with LastFM scrobblers, i.e. it will most likely send incorrect info because it does not use tags
SonusPresto doesn’t know what formats your device supports, so it will just show every file that has any of the supported extensions
(i.e. not all displayed files can actually be played)
Install Flutter and Android SDK. It’s easier to do it from Android Studio.
At this point you can already debug the application from Android Studio.
To build the release version follow the next steps.
Go inside the repository root and create the file
android/key.properties based on android/key.template.properties.
Fill in all fields.
For more information see the official “Signing the app” tutorial.
To build the release APK run ./build-apk.sh inside the repository root.
React HOC (higher order component) method, and React Hook for transforming
your favorite components to animate prop values on change.
This package uses Tweenkle for handling
the tweening of prop values. Itâs not as full-featured as GSAP,
but it works pretty well for basic value and object tweening.
react-animate-props now offers two(!) ways for you to animate the props in both
your class-based, and functional, React components.
Hook
useAnimateProps
Parameters
prop : Number – Value to animate
options : Object – Options to define the tween properties to use.
Default options:
{delay: 0,// Delay to apply before the tween startsduration: 1000,// Duration of the tween in millisecondsease: Easing.Quad.Out,// Ease to use for the tween, @see [Tweenkle](https://github.com/ryanhefner/tweenkle) for optionsonAnimateProgress: value=>value,// Callback to use during the tweening process, as well as being able to manipulate the value during the tweenonAnimateComplete: value=>value,// Callback for when the tween has completed, as well as being able to manipulate the final value of the tween}
Example
importReactfrom'react';import{Easing}from'tweenkle';import{useAnimateProps}from'react-animate-props';constAnimatedNumberLabel=({ number })=>{constanimatedNumber=useAnimateProps(number,{ease: Easing.Quad.In,delay: 500,duration: 1500,onAnimateProgress: value=>{returnMath.round(value);},onAnimateComplete: value=>{returnMath.round(value);},});return<span>{animatedNumber}</span>;};exportdefaultAnimatedNumberLabel;
HOC (Higher Order Component)
animateProps is a higher order component
that allows you to easily create components whoâs props animate when changed.
Whether youâre writing a new component, or would like to make an animated version
of an existing component, just export your component and pass it through, animateProps.
Parameters
component:Class – Class to apply animateProps logic to.
defaultProps:Object – Default props declared for the component being animated. (Default: {})
Properties
animatedProps:Object – Object defining which props to animate, and the tween
settings for each. animateProps uses the Tweenkle
tweening library, specifically a Tween instance, and you can pass whatever props that
library supports via the tween settings. You can find out more by reading the Tweenkle README.
onAnimateProgress:Function – Callback available to manipulate the prop before
it is applied to the state. (Example: (prop, value) => { return { [prop]: value }; })
onAnimateComplete:Function – Callback fired when the animation for a prop completes.
(Example: (prop, value, tweensActive) => {})
MD_MIDIFile Standard MIDI File Interpreter Library
This library allows Standard MIDI Files (SMF) to be read from an SD card and played through a MIDI interface. SMF can be opened and processed, with MIDI and SYSEX events passed to the calling program through callback functions. This allows the calling application to manage sending to a MIDI synthesizer through serial interface or other output device, such as a MIDI shield.
SMF playing may be controlled through the library using methods to start, pause and restart playback.
SMF may be automatically looped to play continuously.
Time ticks are normally generated by the library during playback, but this can be taken over by the user program if different time or synchronization with external MIDI clock is required.
External dependencies:
SdFat library found here used by the library to read SMF from the the SD card.
MIDI interface hardware as described in the library documentation or similar, a USB interface with converter or a MIDI shield.
If you like and use this library please consider making a small donation using PayPal
Most of your CLI tools were probably installed with a package manager like apt or dnf on Linux, Homebrew on macOS, or Scoop on Windows. Then if you want to get the list of your installed tools, you can run apt list --installed, brew list or scoop list to list them, and if you want to know more about one of them you can run apt show ..., brew info ... or scoop info ....
But what about the ones you installed with Go? You installed them with go install ... and they live in $GOPATH/bin or $GOBIN or maybe you move/symlink them to /usr/local/bin or so.
Now you don’t immediately know the origin of the tools. For example if there’s a binary called arc, is it github.com/mholt/archiver/v3/cmd/arc or github.com/evilsocket/arc/cmd/arc?
You could run arc --help and it might give a hint what exactly it is, but it’s not reliable
Or you run go version -m /path/to/arc and among the dozens of output lines you check the path or mod
But their values are not https://-prefixed, so you can’t click them in your terminal and have to copy paste them into your browser
Then for example arc has the module path github.com/mholt/archiver/v3, which leads to a 404 Not Found error on GitHub because of the v3
And for staticcheck the module path is honnef.co/go/tools, which is a vanity URL that doesn’t point to the original Git repository (https://github.com/dominikh/go-tools) and the browser also doesn’t redirect to it