Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
July 21, 2022 03:10 pm GMT

How many feet is a lightyear, and why the answer costs you 400k

We just released version 1.0 of a new project, qudtlib, which offers unit conversion and related functionality for over 1700 units, while being quite small: the jar-with-dependencies is ~400kB in size. The project is based on the QUDT ontology. Currently, this is available in Java only, but more is to follow.

For example

Let's say you want to convert feet into lightyears, here's what your java code would look like:

    Qudt.convert(        new BigDecimal("1"),        Qudt.Units.FT,         Qudt.Units.LY);    --> 3.221738542107027933386435678630668E-17ly

ok, now how do we know that's correct? Easy: we know that light travels about one foot per nanosecond, so if we multiply that number by the number of nanoseconds in a year, which is...

    Qudt.convert(        new BigDecimal("1"),        Qudt.Units.YR,         Qudt.Units.NanoSEC);    --> 31557600000000000ns

... we should get around 1. Let's try:

    Qudt.convert(        new BigDecimal("1"),        Qudt.Units.FT,         Qudt.Units.LY).getValue()        .multiply(            Qudt.convert(                new BigDecimal("1"),                 Qudt.Units.YR,                 Qudt.Units.NanoSEC)                   .getValue()));    --> 1.01670336216396744710635782571955168476800000000000

That's about 1. Seems to work ;-)

The Hack

The part of the QUDT ontology we need, including some additional data we generate, is about 3.5 MB in size. The libraries needed to access the data for providing the functionality we want have another 30+ MB. We felt that was too much for something as simple as converting celsius into fahrenheit (or feet to lightyears).

So we moved all the heavy lifting into the preprocessor (ie., maven) to generate a java class that instantiates all the objects representing the relevant part of the QUDT ontology upon startup. No SPARQL queries or other RDF munging at runtime, not a single external runtime dependency, You're welcome.

The big upside of this approach is that it should be relatively easy to port the solution to other languages.

What's on the Roadmap?

Typescript.

What else?

Well, you still don't know how many feet is a light year, so why don't you try qudtlib to find out?


Original Link: https://dev.to/fkleedorfer/introducing-qudtlib-55jh

Share this article:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To