Thanks to a pile of new data added and old data cleaned up (most of that work done by Philippe Bruhat and Aristotle Pagaltzis) and some help from Copilot on the Javascript, there's a lot of new, interesting information on my Perl Steering Council web page - psc.perlhacks.com/
submitted by /u/davorg
[link] [comments]
I know it is something of an obscure corner of everything that Perl can do, but Perl is excellent for "one-liners".
Has anyone developed a module of convenience functions for use with one-liners? I have something in progress but I'd like to see if there is established prior art.
submitted by /u/singe
[link] [comments]
Stack:
Nginx FCGI CGI::Fast HTML::Template::Compiled Redis CentOS Linux 7.9 spawn-fcgi
I have a Perl application that runs on the above stack.
On process init it does a lot of loading of big hashes and other data into global variables that are mostly preloaded and cached in a distributed Redis install.
To start the application spawn-fcgi creates 6-8 processes on a port nginx then connects to trhough their fcgi module.
The challenge:
— The init process is computing and time consuming; and doing that concurrently six times peaks CPU and overall leads to a ~20-25 second delay before the next web request can be served. And the initial request to each of the six processes has that delay.
I tried loading the content in question directly from Redis on demand but the performance keeping it in memory is naturally much better (minus the initial delay).
is there an architectural pattern that I am not considering here? I am thinking of things as eg. only spinning up one process, having it initialize and then clone(?) it a few times for serving more requests.
I could also think of a way where only 1 process is spawned at a time and once it completes initiation the next one starts; would need to verify that spawn-fcgi can support this.
So my question to this community is if I am missing an obvious better solution than what is in place right now / what I am considering.
Thanks in advance.
submitted by /u/kosaromepr
[link] [comments]
I threw together a quick proof of concept for myself writing out a very simple Entity Component System (ECS) and implementing the flocking simulation on top of it. I liked how it came together so well I wrote some prose around it and decided to share. Note: this is using features from the soon-to-be-released 5.40.0 (RC1 dropped last Friday). submitted by /u/perigrin |
Hi, I recently got an offer for Senior SWE (current title at my company now) for a company that heavily utilizes Perl. I was wondering if folks from this community could offer some insight on what it's like working with Perl and also what, if any, potential long-term career implications are of becoming a Perl developer? Particularly I'm worried of pigeon-holing myself since Perl is not as heavily used in todays age and this company does not make use of modern cloud tools and deployments.
I am a Java developer (5 YOE) at a enterprise software company that is deployed in GCP. We are pretty regularly adopting new technologies so I'm gaining some valuable and relevant industry experience here but I am looking for a change and more opportunity to lead projects and mentor junior engineers.
The company seems good, great WLB, I liked the manager, and with the bonus (base is roughly the same) it would be about a ~8% TC increase plus a lot more stock (monopoly money, private RSUs).
Does anyone have experience transitioning from a Perl based company to a cloud based company with a more modern tech stack? Is this a backwards direction for me, should I continue with my Java development and instead look for opportunities that will offer more marketable skills?
Any input is appreciated, thank you for reading.
submitted by /u/Roodiestue
[link] [comments]
I've been trying to debug an issue for 3 days now, am getting nowhere, and am about to headbutt my laptop. If anyone's done any heavy lifting with Net:DBus then, for the sake of my laptop, I'd really appreciate the help!
Problem description: I have a hash table with a bunch of keys. The values relating to those keys are of different types (as in, I've cast them to dbus types). So:
my $testhash = {}; $testhash->{"xesam:albumArtist"} = [dbus_string("Tom Waits")]; $testhash->{"xesam:album"} = dbus_string("Mule Variations"); $testhash->{"xesam:trackNumber"} = dbus_int32(1); $testhash->{"xesam:artist"} = [dbus_string("Tom Waits")]; $testhash->{"xesam:title"} = dbus_string("Big in Japan"); $testhash->{"mpris:artUrl"} = dbus_string("file://mnt/storage/Music/mp3/Tom Waits/Mule Variations/folder.jpg"); $testhash->{"mpris:length"} = dbus_int64(64182857); $testhash->{"mpris:trackid"} = dbus_object_path("/0"); $testhash->{"xesam:url"} = dbus_string("file://mnt/storage/Music/mp3/Tom Waits/Mule Variations/01 - Big in Japan.mp3");
I've created a DBus service, and have successfully implemented a method that returns that hash table ($IFACE is the interface name I'm using for all of my test methods):
dbus_method("ReturnDynamicHash", [], [["dict", "string", ["variant"]]], $IFACE); sub ReturnDynamicHash { my $self = shift; print "Object: ReturnDynamicHash called.\n"; my $return = {}; my @keys = keys(%{$testhash}); my $count = scalar(@keys); if ($count) { foreach my $key (@keys) { $return->{$key} = $testhash->{$key}; } } return $return; }
As a DBus method, this works perfectly:
% dbus-send ....... .ReturnDynamicHash array [ dict entry( xesam:trackNumber variant int32 1 ) dict entry( mpris:trackid variant /0 ) dict entry( xesam:albumArtist variant array [ Tom Waits ] ) dict entry( xesam:album variant Mule Variations ) dict entry( mpris:length variant int64 64182857 ) dict entry( xesam:url variant file://mnt/storage/Music/mp3/Tom Waits/Mule Variations/01 - Big in Japan.mp3 ) dict entry( mpris:artUrl variant file://mnt/storage/Music/mp3/Tom Waits/Mule Variations/folder.jpg ) dict entry( xesam:artist variant array [ Tom Waits ] ) dict entry( xesam:title variant Big in Japan ) ]
However, the interface I'm implementing requires that a DBus Property return that hashtable, not a method:
dbus_property("StaticHashProperty", [["dict", "string", ["variant"]]], "read", $IFACE); sub StaticHashProperty { print "Object: StaticHashProperty accessed.\n"; my $return = {}; my @keys = keys(%{$testhash}); my $count = scalar(@keys); if ($count) { foreach my $key (@keys) { $return->{$key} = $testhash->{$key}; } } return $return; }
and this doesn't work.
From the dbus-send client I get
Error org.freedesktop.DBus.Error.NoReply: Remote peer disconnected
and from the Perl server stderr i get:
dbus[93409]: Array or variant type requires that type array be written, but object_path was written. The overall signature expected here was 'a{sas}' and we are on byte 4 of that signature. D-Bus not built with -rdynamic so unable to print a backtrace Aborted (core dumped)
Now, this error is coming from libdbus itself, not the Perl wrapper (though could of course still be a bug in the Perl module that's causing the error). It seems to have entirely the wrong signature ( a{sas}, not a{sv} as defined above the Property method) and therefore appears to be complaining that the type of one of the values is wrong (each time I run it I get a slightly different error; I think it's deducing the signature from the first key-value pair it pulls from the hash and assumes they should all be the same - so if the first pair it pulls has a uint64 value, then it complains that the next pair doesn't also have a uint64 value).
Since the Method works I know Net::DBus can handle these sorts of return values, but for some reason, as a property, it just isn't working. I also know that other applications do implement this interface, including this Property, successfully, so I know this isn't a limitation of DBus.
I've been looking at the code in Net::DBus that handles serialization, assuming there must be some difference between how Properties and Methods are handled, but can't see anything obvious.
Anyone? Any idea? Literally anything at all? Thank you!!!!!
submitted by /u/Flashy_Boot
[link] [comments]
Mo utilities for email.
Changes for 0.02 - 2024-04-26T23:02:53+02:00
- Add tests for error parameters.
- Rewrite the tests so that the functional tests are first and then the errors.
Perl.social Code of Conduct
I've posted this on reddit and wanted a discussion here too for those not on reddit for whatever reason:
reddit.com/r/perl/comments/1bl…
The gist though is that I've gotten another request for a proper CoC/ToS that would be acceptable to the community since i've been negligent in doing so. I've decided that a slightly modified version from the mastodon CoC might be a good starting point and I'll post that content in a reply to this so that it doesn't flood everyone's feeds with a giant wall of text immediately.
So hear me out...
This idea is stupid. But on Star Trek (VOY, TNG, and DS9 at least), they measured their data as "quads". ( memory-alpha.fandom.com/wiki/Q… ). This was never defined because it's just Sci-Fi and doesn't need a real definition. But... what if they're quad-floats aka 128bit floating point values. This would mean then that all the storage could be done as LLM or other neural network style models, and vector embeddings and such. Given what we've got today with transformer style models for doing translation, chat, etc. If you had ultrapowerful computers that could do these calculations with such gigantic precision then you'd be able to store very accurate data and transform it back and forth from vector embeddings and other fancy structures. It'd enable very powerful searches, and the kind of analysis we're trying to use LLMs for and see them use in the shows when talking to the computers. This would also explain a lot about the universal translators from ENG onward, and could even help make sense of Darmok and Jalad at Tenagra. And then Voyager even has bio-neural circuitry for doing things faster, some kind of organic analog computing doing stuff "at the edge". Using weights and embeddings to do things with them and have them react by programming them with a machine learning model at each node could easily explain how that could work too.
This idea honestly feels too stupid to be real but it could explain so much.
Perl.social server upgrades
Ryan Voots
in reply to Ryan Voots • •COC/TOS
Borrowing many things from the Mastodon CoC as a astarting point (github.com/mastodon/mastodon/b…).
I am removing a few things from it, not because I don't think they're good ideas or anything but also because I want to limit the scope
of the initial discussion and the amount of work for myself as I'm still currently the only moderator but once the community there gets larger
or it changes that I'm not the only one maintaining things, we will hold another discussion about everything.
I've changed a few things also, specifically to add stronger language that any moderators
MUST document why an action was taken. This doesn't necessarily mean that I believe
that those reasons must be immediately given to an affected user, but that they must
be available when requested. Specifically I'm thinking of not informing in the context
of bots, spam, illegal or otherwise legally actionable content (i.e. something that's going to get me a subpeona or court case).
Other proposed ideas:
1) Some kind of regular discussion, maybe annually? on ToS/CoC type things
1a) The idea being that we require a regular discussion of anything that's
happened over the last time period to avoid it being possible for something
happening being "swept under the rug" or "falling through the cracks" because
it didn't get the proper time given to it previously. How this should be done
I have no good recommendations for, likely creating a group on perl.social to
host the conversation each time?
2) ?
Contributor Covenant Code of Conduct
Our Pledge
We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, caste, color, religion, or sexual
identity and orientation.
We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.
Privacy
I reserve the right to collect email or other identifiable contact information,
and it will never be shared to an outside party without consent except in the case
of it being required by some legal process. If at any time perl.social becomes
a larger organization and there is a desire to change this, I will require the
removal of all such information until explicit consent is given again with such
a new policy. I don't know if there's a way I can make this legally enforcable
but I see it as something I do not own and therefore cannot ethically give it to
another party in that kind of scenario.
Both perl.social and I are located in the USA, and therefore I believe are not
directly subject to the GDPR, but as there are similar laws in other jurisdictions
even within the USA, and I basically agree with the ideas involved, I will do
whatever is reasonable feasible to follow them.
Our Standards
Examples of behavior that contributes to a positive environment for our
community include:
and learning from the experience
community
Examples of unacceptable behavior include:
and sexual attention or advances of any kind. Consenting adults in private
should be acceptable.
without their explicit permission
professional setting
Enforcement Responsibilities
Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.
Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and MUST communicate reasons for moderation
decisions.
Scope
This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official e-mail address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.
Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at
[hello@joinmastodon.org](mailto:hello@joinmastodon.org).
All complaints will be reviewed and investigated promptly and fairly.
All community leaders are obligated to respect the privacy and security of the
reporter of any incident.
Enforcement Guidelines
Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:
1. Correction
Community Impact: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.
Consequence: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.
2. Warning
Community Impact: A violation through a single incident or series of
actions.
Consequence: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or permanent
ban.
3. Temporary Ban
Community Impact: A serious violation of community standards, including
sustained inappropriate behavior.
Consequence: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.
4. Permanent Ban
Community Impact: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.
Consequence: A permanent ban from any sort of public interaction within the
community.
Attribution
This Code of Conduct is adapted from the Contributor Covenant,
version 2.1, available at
contributor-covenant.org/versi…contributor-covenant.org/versi….
And from the Mastodon code of conduct available at github.com/mastodon/mastodon/b…
Community Impact Guidelines were inspired by
Mozilla's code of conduct enforcement ladder.
For answers to common questions about this code of conduct, see the FAQ at
contributor-covenant.org/faqcontributor-covenant.org/faq. Translations are available at
contributor-covenant.org/trans…contributor-covenant.org/trans….