I was unable to edit a PDF form using Evince on Ubuntu, some fields remained empty once I move cursor out of them after entering data on some reason, while other fields worked fine.

Fortunately I have found Master PDF Editor 3 from Code Industry which done job perfectly. It has a free version for non-commercial use. In addition to Evince functionality it supports interactive instructions embedded into PDF document helping to fill the form.

I have tested it on Ubuntu 16.04 and 16.10.

A new snapshot version of DataparkSearch Engine has been released. You can get it on Google Drive or on GitHub.

Changes made since previous snapshot:

  • added setting reading timeout to socket based on document reading timemout
  • added support for wolfssl and mbedtls libraries
  • added timeout tracking for https
  • removed adjustment on server weight before putting url poprank into url data
  • fixed compilation without openssl
  • improved OpenSSL detection
  • added --enable-mcmodel option for configure
  • corrected compilation flags for threadless version of libdpsearch if no apache module selected to build
  • switched to CRYPTO_THREADID for OpenSSL 1.0.0 and above
  • minor fixes and updates

A new snapshot version of DataparkSearch Engine has been released. You can get it on Google Drive or on GitHub.

Changes made since previous one:

  • Corrected SQL schema for MySQL5
  • Fixed crash on URLs with no schema specified
  • New detection for Apache version
  • Fixed crossword section construction
  • p, option and input HTML tags can now be a section
  • More fine sleeping on mutex lock failure
  • Fixed compilation on FreeBSD 10
  • Added 'Robots collect' command
  • Fixed crash if dt:minute limit specified
  • Do not process sitemaps for Server/Realm/Subnet commands with nofollow option specified
  • Some other minor fixes

I am planning to retire the support for Apache 1.3 in future. Let me know if your are still using it.

With the recent AMP update at Google you may notice increased number of AMP parsing errors in your search console. They look like

The mandatory tag 'html ⚡ for top-level html' is missing or incorrect.

Some plugins, e.g. Add Meta Tags, may alter language_attributes() using 'language_attributes' filter and adding XML-related attributes which are disallowed (see www.ampproject.org/docs/reference/spec#required-markup ) and that causes the error mentioned above.

I have made a fix solving this problem and made pull request for WordPress AMP plugin, you may see it here:

Trying to solve the task of calculating word cooccurrence relative frequencies fast, I have created an interesting data structure, which also allows to calculate counts for the first word in the pair to check; and it creates word prefix tree for the text processing, which can be used for further text analysis.

The source code is available on GitHub: github.com/Maxime2/cooccurrences

When you execute make command you should see the following output:

cc -O3 -funsigned-char cooccur.c -o cooccur -lm

Example 1
./cooccur a.txt 2 < a.in | tee a.out

Checking pair d e
Count:3  cocount:3
Relative frequency: 1.00

Checking pair a b
Count:3  cocount:1
Relative frequency: 0.33

Example 2
./cooccur b.txt 3 < b.in | tee b.out

Checking pair a penny
Count:3  cocount:3
Relative frequency: 1.00

Checking pair penny earned
Count:4  cocount:1
Relative frequency: 0.25

The cooccur program takes two arguments: the filename of a text file to process and the window of words size to calculate relative frequencies within it. Then the program takes pairs of words from its standard input, one pair per line, to calculate count of appearance of the first word in the text processed and the cooccurrence count for the pair in that text. If the second word appears more than once in the window, only one appearance is counted.

Examples were taken here:

//github.com/Maxime2/stan-challenge - here on GitHub is my answer to Stan code challenge. It is an example how one can use SAX-like streaming parser inside an Apache module to process JSON with minimal delays.

Custom made Apache module gives you some savings on request processing time by avoiding invocation of any interpreter to process the request with any programming language (like PHP, Python or Go). The stream parser allows to start processing JSON as soon as the first buffer filled with data while the whole request is still in transmission. And again, as it is an Apache module, the response is starting to construct while request is processing (and still transmitting).


PL/sh - is a nice extension to PostgreSQL allowing to write stored procedures in an interpreted language, e.g. bash, python, perl, php, etc.

I found it useful though having a major drawback that the amount of data you can pass via arguments of such procedures may hit command line limitations, i.e. no more 254 spaces and no more 2MB (or even less).

So I have made a change that the value of the first argument is passed via stdin to the script implementing the stored procedure, the rest of arguments is passed as $1, $2, $3, etc. This change is allow to overcome above mentioned limitations in case when big amount of data is passed via one parameter.

Here is a tiny example I have added to the test suite with new functionality:

CREATE FUNCTION perl_concat2(text, text) RETURNS text LANGUAGE plsh2 AS '
print while (<STDIN>);
print $ARGV[0];
SELECT perl_concat2('pe', 'rl');

You may get modified PL/sh in my repository on GitHub: github.com/Maxime2/plsh. It has been implemented as a new procedural language plsh2, so you do not need to change anything in already created procedures/functions using plsh (and you can continue use it as before).

gitstats tool has stopped working on our project after upgrade to Ubuntu 16.04. Finally I have got time to have a look. There were two issues with it:

  1. we do not need to use process wait as process communicate waits until process termination and the last process in the pipeline do not finish until all processes before it in the pipeline terminate, plus process wait may deadlock on pipes with huge output, see notice at https://docs.python.org/2/library/subprocess.html
  2. On Ubuntu 16.04 grep has started to give "Binary file (standard input) matches" notice into the pipe which breaks parsing.

I have made a pull request which fixes this issue: https://github.com/hoxu/gitstats/pull/65
Also you can clone fixed version from my account: https://github.com/Maxime2/gitstats