Stencil is an open source templating engine that transforms Office Open XML documents (mostly Microsoft
Office’s Word .docx files) from the JVM. It has a simple syntax and no programming is needed to write document templates.
You can use either Microsoft Word or LibreOffice to edit the document templates.
The template expressions are just simple textual expressions, and you can even colour-code
them to make your template more readable.
Features
📄 Multiple Formats: Works with docx and pptx files
💻 Simple syntax: For value substitution, conditional and repeating blocks
Copyright (c) Janos Erdos. All rights reserved. The use and distribution terms
for this software are covered by the Eclipse Public License 2.0
(https://www.eclipse.org/legal/epl-2.0/) which can be found in the file
LICENSE.txt at the root of this distribution. By using this software in any
fashion, you are agreeing to be bound by the terms of this license. You must not
remove this notice, or any other, from this software.
Stencil is an open source templating engine that transforms Office Open XML documents (mostly Microsoft
Office’s Word .docx files) from the JVM. It has a simple syntax and no programming is needed to write document templates.
You can use either Microsoft Word or LibreOffice to edit the document templates.
The template expressions are just simple textual expressions, and you can even colour-code
them to make your template more readable.
Features
📄 Multiple Formats: Works with docx and pptx files
💻 Simple syntax: For value substitution, conditional and repeating blocks
Copyright (c) Janos Erdos. All rights reserved. The use and distribution terms
for this software are covered by the Eclipse Public License 2.0
(https://www.eclipse.org/legal/epl-2.0/) which can be found in the file
LICENSE.txt at the root of this distribution. By using this software in any
fashion, you are agreeing to be bound by the terms of this license. You must not
remove this notice, or any other, from this software.
Before this API is available to use, there are hard to get a prayer times for a specific time range. There are might have, but the data is not up-to-date, available only for today, and limited number of query per day.
A register-based, parallel virtual machine programmable in custom assembly lookalike language with
strong emphasis on reliability, predictability, and concurrency.
Building the code
]$ ./configure # (1) configure the project
]$ make -j # (2) build it
Calling ./configure is not required if you do not want or need to run tests
under Valgirnd. Configuring will create necessary suppresion file for your
version of Valgrind.
Note: the default build is run with -O0 (without any optimisations).
You can compile Viua VM with higher optimisation leves, but keep in mind that
the compilation might not succeed on machines with less than 4GB RAM if you use
the -O3 optimisation level.
This is tracked by issue 7c06177872c3a718510a54e6513820f8fe0fb99b in the
embedded issue repository.
Hello World in Viua VM
.function: main/0
allocate_registers %3 local
text %1 local "Hello World!\n"
integer %2 local 1
io_write %2 local %2 local %1 local
io_wait void %2 local 1s
izero %0 local
return
.end
See README.asm file to see commented version of this sample program.
For more examples visit either documentation or
Rosetta page for Viua VM.
Check Weekly blog for news and developments in
Viua VM.
Use cases
Viua is a runtime environment focused on reliability, predictability, and
concurrency. It is suitable for writing long-running software that runs in the
background providing infrastructure services:
servers (e.g. IRC)
message queues
system and application daemons (e.g. cron)
The VM is not ready to be used in places where performance matters.
It is best to employ it for tasks which do not require human interaction or near
real-time responses.
The VM should be able to fully utilise all cores of the CPU it’s running on to
execute the virtual processes and FFI calls of the software it runs. If
configured to do so it may generate high CPU loads, but is relatively light on
RAM and should not contain any memory leaks (all runtime tests are run under
Valgrind to ensure this).
The virtual machine is covered by more than 500 tests to provide safety, and
guard against possible regressions. It ships with an assembler and a static
analyser, but does not provide any higher-level language compiler or debugger.
Design goals
predictable execution: it is easier to reason about code when you know
exactly how it will behave
predictable value lifetimes: in Viua you do not have to guess when the
memory will be released, when objects will be destroyed, or remember about the
possibility of a gargabe collector kicking in and interrupting your program.
Viua manages resources without a GC in a strictly scope-based (where “scope”
means “virtual stack frame”) manner
massive concurrency: Viua architecture supports spawning massive amounts
of independent, VM-based lightweight processes that can run in parallel (Viua
is capable of providing true parallelism given sufficient hardware resources,
i.e. at least two physical CPU cores)
parallel I/O and FFI schedulers: I/O operations and FFI calls cannot block
the VM as they are executed on dedicated schedulers, so block only the virtual
process that called them without affecting other virtual processes
easy scatter/gather processing: processes communicate using messages but
machine supports a join instruction – which synchronises virtual processes
execution, it blocks calling process until called process finishes and
receives return value of called process
safe inter-process communication via message-passing (with queueing)
soft-realtime capabilities: it is possible to set a timeout on process
joins, message receives, and all I/O operations. It should make Viua a VM
suitable to host soft-realtime programs that need to provide some timing
guarantees
fast debugging: error handling is performed with exceptions (even across
virtual processes), and unserviced exceptions cause the machine to generate
precise and detailed stack traces
reliability: programs running on Viua should be able to run until they are
told to stop, not until they crash; machine helps writing reliable programs by
providing a framework for detailed exception-based error communication and a
way to register a per-process watchdog that handles processes killed by
runaway exceptions (the exception is serviced by watchdog instead of killing
the whole VM)
Some features also supported by the VM:
separate compilation of Viua code modules
static and dynamic linking of Viua-native libraries
straightforward ways to use both dynamic and static function call dispatch
first-class functions
closures (with multiple way of capturing objects inside a closure)
passing function parameters by value, by move (non-copying pass), and by pointer
copy-free function returns
inter-function tail calls
several variants of fixed-size integer arithmetic: wrapping, checked, and
saturating
For enhanced reliability, Viua assembler provides a built-in static analyser
that is able to detect most common errors related to register manipulation at
compile time (type mismatches, invalid register access). It provides traced
errors whenever possible, i.e. when it detects an error and is able to trace
execution path that would trigger it, a sequence of instructions (with source
code locations) leading to the detected error is presented to the user instead
of a single offending instruction.
Current limitations include:
severly limited introspection
calling Viua code from C++ is not tested
debugging information encoded in compiled files is limited
speed: Viua is not the fastest VM around
lack of libraries
Software state notice
Viua VM is an alpha-stage software.
Even though great care is taken not to introduce bugs during development, it is
inevitable that some will make their way into the codebase. Viua in its current
state is not production ready; bytecode definition and format will be altered,
opcodes may be removed and added without deprecation warning, and various
external and internal APIs may change without prior notice.
Suitable announcements will be made when the VM reaches beta, RC and release
stages.
Influences
The way Viua works has mostly been influenced by
C++ (static and dynamic method dispatch, move semantics), and
Erlang (message passing, indepenedent VM-based lightweight processes as units of
concurrency).
Programming in Viua
Viua can be programmed in an assembly-like language which must be compiled into
bytecode. A typical session is shown below (assuming current working directory
is the local clone of Viua repository):
]$ vim some_file.asm
]$ ./build/bin/vm/asm -o some_file.bc some_file.asm
# static analysis or syntax errors...
]$ vim some_file.asm
]$ ./build/bin/vm/asm -o some_file.bc some_file.asm
]$ ./build/bin/vm/kernel some_file.bc
# runtime exceptions...
]$ vim some_file.asm
]$ ./build/bin/vm/asm -o some_file.bc some_file.asm
]$ ./build/bin/vm/kernel some_file.bc
Contributing
Please read CONTRIBUTING.markdown for details on
development setup, and the process for submitting patches, bug reports, and
feature suggestions.
Description
The “react-hooks-v8” project is a collection of examples and experiments showcasing the usage of various React hooks such as useRef, useId, useCallback, useLayoutEffect, useMemo, and useReducer. Each hook is implemented in a separate file, with dedicated routes in the application to demonstrate its functionality and usage. The project serves as a learning resource for understanding how these hooks work and how they can be effectively used in React applications.
Features
Dedicated routes for each React hook implementation.
Examples demonstrating the usage and benefits of useRef, useId, useCallback, useLayoutEffect, useMemo, and useReducer.
Clear explanations and comments in each file to aid understanding.
Built with React and Vite for efficient development and fast bundling.
Technologies Used
Frontend: React, Vite
Routing: React Router
Styling: CSS Modules
Version Control: Git, GitHub
Three.js Integration
The “react-hooks-v8” project also incorporates Three.js, a JavaScript library used for creating and displaying 3D graphics in a web browser. Three.js enhances the visual experience of the application by enabling the rendering of complex 3D scenes and animations directly within the React components. Leveraging Three.js opens up possibilities for creating immersive and interactive user interfaces, making it an ideal choice for projects requiring advanced visualization capabilities.
Once the development server is running, navigate to the localhost URL provided in the terminal. From there, you can explore the different routes corresponding to each React hook implementation.
mac-hid-dump is a small command-line app to output the HID Report Descriptors of all connected HID devices. Think of it as sort of a MacOS version of usbhid-dump. It is designed to inspect HID devices for use with hidapi, node-hid, or similar HID libraries. The output can be parsed directly by the USB Descriptor Parser.
mac-hid-dump uses some of the Mac-specific code from libusb/hidapi, a cross-platform library for communicating with HID devies. It is not dependent on hidapi though.
Usage:
To use mac-hid-dump, download the zip file from the Releases page, unzip it, and run it.
This example shows a Teensy RawHID and a blink(1) USB LED. The Teensy RawHID descriptor shows a simple “RawHID” example of a single 64-byte report using no reportIDs for both Input and Output. The blink(1) descriptor shows an example that defines two reportID-based Feature reports: an 8-byte one and a 60-byte one.
Elasticsearch plugin for Russian Phonetic Analysis
This plugin provides phonetic analysis of Russian language by exposing russian_phonetic token filter
which transforms russian words to their phonetic representation or so-called phonetic code. These codes are used
for matching words and names which sound similar. The process of transformation is also known as phonetic encoding
and this plugin is able to encode millions of russian words per second with the lowest impact on GC among all encoders
compared in encoding throughput benchmarks.
Encoding algorithm extensively employs phonetic and orthographic rules in order to fill
the inconsistency gap between spelling and pronunciation in Russian Language.
Examples of spelling and pronunciation inconsistency
The maximum length of the phonetic code. Defaults to 8.
enable_stemmer
Whether or not the stemming should be applied. Accepts true or false (default).
When this option is enabled only base (or root) form of the supplied word will be encoded.