11 pages tagged with "programming"
Error handling in defer
October 07, 2023
I see periodically people handling errors in deferred calls like this:
func Do() (r Result, err error) {
// ...
defer func() {
err = multierr.Append(err, f.Close())
}()
// ...
}
or another variant:
func Do() (err error) {
// ...
defer func() {
err1 = f.Close(…
read more
Sorting Chinese characters
December 28, 2013
<p>Recently we decided to localize country selection list at work and there was
some confusion about how to sort Chinese characters. I asked my wife and she
told me that sorting by pinyin is seems most reasonable to her. So here's how
to do it in Perl
read more
ZeroMQ Rant
April 03, 2013
Today deployed at work a new service that based on zeromq. I never liked zeromq because it does
not provide any feedback about what is going on, and this is exactly what
caused problems.
After deployment service worked as expected on all servers
except one. Daemon was starting, creating zeromq sock…
read more
Packing timeval
December 05, 2012
Recently I got a lot of failures from CPAN Testers for RedisDB on NetBSD i386.
After investigating a bit I've found that NetBSD 6.0
comes now with 64-bit time_t on all architectures. It means that the
way I used to pack struct timeval value to set timeout on socket,
didn't work anymore. Previously i…
read more
Memory leaks
October 08, 2012
<p>Spent the whole day looking for sources of memory leaks. One of them was
because I decided to use named captures. It so happened that perl leaks some
memory if named capture doesn't match.
read more
RedisDB 1.03
March 19, 2012
Just uploaded RedisDB-1.03 to CPAN. In this version I extracted parser code
into a separate module and cleaned it up a bit, I have in plans writing XS
version of the parser. Another significant change is that I dropped
Module::Install and switched to plain ExtUtils::MakeMaker. The size of the
distri…
read more
RedisDB 0.16
July 13, 2011
Just uploaded RedisDB 0.16 to CPAN. Hopefully now it will work on Windows. The
problem is that Windows don't support MSG_DONTWAIT flag for recv, so I have
to switch socket into non-blocking mode before checking for data. And I got
just a single test report for MSWin32 for three months, apparently it…
read more
Creating preforking server with POE::Component::Daemon
November 28, 2009
After upgrading Perl to 5.10.1 at Friday I found that
POE::Component::Server::PreforkTCP, which we use in one of our products,
doesn't pass its tests anymore. Perhaps it's possible to fix, I don't know
yet (it was Friday evening...), but as the module hasn't been updated since
2002 I decided to chec…
read more
Catching a Leap Second
January 01, 2009
As you may know there is such a thing as a leap second, and Dec 31 2008 is a day with a leap second. A couple of hours before New Year I got an idea to catch this leap second.
The problem is that Linux uses Unix time and thus ignores leap seconds. Hence if you use time(2) or gettimeofday(2), the lea…
read more
More about UTF-8
August 02, 2008
Now suppose you want to rid string of malformed utf-8 characters.
Here is an example that checks an utf-8 string and replaces all malformed characters with '?'. The same idea as in the previous post. Note, that it checks only encoding, it is possible that encoding is correct, but the symbol doesn't …
read more
How to truncate UTF-8 string
July 16, 2008
<p>Suppose you need to put UTF-8 string into a fixed length buffer. Actually I was in need to do this. Problem is that the last symbol may be incomplete, so here is the example how to do this
read more