UML::PlantUML::Encoder Provides PlantUML Language Encoding
Plantuml is a library for generating UML diagrams from a simple text markup language.
PlantUML defines a standardized way to encode diagram text description to a simple string of characters that contains only digits, letters, underscore and minus character.
The goal of such an encoding is to facilitate communication of diagrams through URL (see http://plantuml.com/de/server).
This encoding includes compression to keep encoded strings as short as possible.
Compression is done using Deflate algorithm.
Read more: PlantUML Text Encoding
Astro::Montenbruck Library of astronomical calculations, based on "Astronomy On The Personal Computer" by O.Montenbruck and T.Phleger
This was formerly posted as "AstroScript". Following the recommendations of djerius@github, I separated the astronomical code into an independent library, named after one of the authors of algorithms, Oliver Montenbruck, and placed it into
The main purpose is to calculate positions of the Sun, the Moon, and the planets with precision that is approximately the same as that found in astronomical yearbooks. Other modules contain time-related routines, coordinates conversions, calculation of the ecliptic obliquity and nutation, etc. Over time, the range of utility functions will grow.
Partially it overlaps some code which already exists in CPAN and elsewhere. For instance, there is a Perl wrapper for Swiss Ephemeris. Swiss Ephemeris is fast and precise C library. Unfortunately, it lacks portability and convenient license.
The present library is an attempt to find a middle-ground between precision on the one hand and compact, well organized code on the other. I tried to follow the best practices of modern Perl programming.
AstroScript Library of astronomical calculations, aimed for astrology software
There are many astronomical libraries available in the public domain. While giving accurate results, they often suffer from lack of convenient API, documentation and maintainability. Most of the source code is written in C, C++ or Java, and not dynamic languages. So, it is not easy for a layman to customize them for her custom application, be it an online lunar calendar, horoscope or tool for amateur sky observations. This library is an attempt to find a middle-ground between precision on the one hand and compact, well organized code on the other.
Most of the calculations are based on "Astronomy On The Personal Computer" by O.Montenbruck, T.Phleger, Fourth Edition, Springer-Verlag, 2000.
The library includes:
AstroScript::MathUtils — Core mathematical routines. AstroScript::Time — Time-related routines. AstroScript::Ephemeris — Positions of celestial bodies. AstroScript::Angles — Some abstract points related to diurnal rotation of the Celestial Sphera: Ascendant, Midheaven, Vertex, East Point. AstroScript::CoCo — Coordinates conversions. AstroScript::Houses — Astrological houses, by the most used systems. AstroScript::Nutation — Nutation and obliquity of ecliptic.
Data::Lookup Neat lookup for complex data structures without any autovivification
I've come up with my own module for lookuping data structures in one single line without autovivification.
Comprehensive examples could be found in test.t in the repository.
Here, I found some alternatives:
But I find my module more 'lightweight' and neat.
What do you think? Is it worth publishing?
Log:Selective Selective logging to the console
This module is a logger with adjustable verbosity for commandline programs. Different verbosity levels can have different colors and styles applied and specific functions or methods can get extra verbosity. Message colors and styles are fully user-definable.
Additional functions are provided for displaying summaries of all warnings or errors encountered. Stack traces can been shown on demand or whenever there are warnings or errors.
Geo::Index Geographic indexer
Geo::Index is a module for creating in-memory geographic point indices. Once indexed, fast searches can be run. The module supports search by radius, by bounding box and by proximity.
This will be my first CPAN release so I welcome any feedback you might have. The module has full documentation and test cases. Have I missed anything?
As of v0.0.4 XS is being used directly instead of via Inline::C. Can anyone comment on whether the way I wrote the XS support code is correct for use in a module?
The following was in regards to v0.0.3:
One specific thing that I'd value feedback on is my use of Inline::C. My code does have automatic fallbacks in place for when C isn't available and includes instructions for using it (the C code) in a server environment. Is there anything else I should be aware of when using it in a module?
Dist-Zilla-Plugin-ReleaseToDarkpan Dist::Zilla plugin to release to a local "darkpan"
Sometimes we create a Perl module for our private use that we are not ready or not able to release to CPAN. The utility cpan-mirror-tiny lets us create a private CPAN repositoy on our local filesystem to store such packages we can then use in our own projects.
This plugin gives you the ability to automate this task when you run "dzil release". Use this plugin instead of UploadToCPAN.
App::PhotoDB App to manage a collection of film cameras & lenses
PhotoDB is an attempt to create a database for film photography that can be used to track cameras, lenses, accessories, films, negatives and prints, to fully catalogue a collection of photographic equipment as well as the pictures that are made with them. Read the CONCEPTS document for full details on the capabilities of PhotoDB.
PhotoDB can also write EXIF tags to scanned images taken with film cameras, so they appear in your digital photo library with the correct metadata (time, date, focal length, geotag, etc). At the moment, the PhotoDB project is unfinished and the code continues to change unpredictably. Look for a tagged release in the future!
The heart of PhotoDB is the MySQL/MariaDB backend database schema. This is the most complete part of the project and describes all the data that is recorded. The application is an interactive command-line tool to make it easier to add and edit data in the database. It is not a graphical interface or web application (but someone with the right enthusiasm and skills could use the logic I've already written to make a basic graphical interface quite quickly).
PhotoDB runs only on Linux systems and there are installation instructions for Fedora and Ubuntu Linux. However it should be able to run on pretty much any Linux distribution and MacOS as the Perl dependencies are portable. Soon there will be Docker support which will simplify installation and allow PhotoDB to run anywhere, including on Windows. The application is not quite feature-complete, so for now you may also need to edit parts of the database directly in some circumstances. You can access the raw database using the MySQL command line, by using an application such as MySQL Workbench or phpMyAdmin to obtain a GUI for manipulating the tables.
Device::Yeelight Controller for Yeelight smart devices
Recently I discovered some smart light bulbs from Yeelight which have pretty well documented API, unfortunately there is no Perl module to control them (similar, however not compatible, module is Device::Hue).
This Perl module implements local device discovery via Yeeling specific SSDP protocol and sending commands via control protocol in the JSON format.