Computing

Git tip of the day : show the hottest files in a repo

Submitted by Frederic Marand on

When auditing or reviewing an unknown code base, I often have to decide which files to examine in priority. Beyond the usual heuristics for Drupal projects (hint: look at templates in D7), how can one find the parts most likely to contain problems ? This simple command set can help pinpoint troublemaking files quickly.

Golang tip of the day; PHP-compatible crc32

Submitted by Frederic Marand on

While porting (well, actually rewriting) an old PHP library to Go, I had to use a CRC (cyclic redundancy check) on a buffer. In old-school PHP, the standard is well established since PHP 4: just use crc32 from the strings package, and beware of the sign bit or, to be a bit more current while still compatible, use the hash() function from the hash package, like this example:

Go tip of the day : running tests for all subpackages recursively

Submitted by Frederic Marand on

If you program in Go, you've probably written a lot of packages, and probably split packages in subpackages. Maybe even more than idiomatic Go would really advise... And you may have been grumbling just like I did at the fact that the go test command requires a list of packages, and does not recursively dive into all the subpackages, like PHPunit would, and does not seem to have a working recursion flag.

Debugging spammer mechanics

Submitted by Frederic Marand on

I've long been receiving quite high volumes of comment spam on this blog, which is why comments have always been pre-moderated. And, of course, there is usually not much to think of it. Not so with one of the spam messages posted today, which unwittingly provided an unexpected insight into the current mechanisms uses by spammers.

What to do when your Varnish directory fills up

Submitted by Frederic Marand on

The symptoms

While browsing my servers Munin reports, I recently noticed how used disk space was constantly increasing on a filesystem which should not have been seeing such growth. After a bit of digging, it appeared the /usr/local/var/varnish/(host) directory was filled with dozens of sparse files all named varnish.??????. What could have been happening ?

Open up to other languages: come to OSDC France 2010 !

Submitted by Frederic Marand on

The second Open Source Developers Conference (OSDC) will be held on saturday 9th and sunday 10th, October 2010 at "Carrefour Numérique de la Cité des Sciences", in Paris. OSDC is a cross-language event, set up by multiple french language-specific non-profits:

  • PERL: Mongueurs de Perl
  • Python: AFPy (Association Francophone Python)
  • Ruby: Ruby France
  • SmallTalk: European Smalltalk User Group

When Dropbox ignores files to sync on Linux...

Submitted by Frederic Marand on

Much like many Drupal devs, I happen to make fairly intensive use of Dropbox, and even use a "pro50" account to sync my always increasing set of "current" source folders, including checkouts of all major Drupal versions and lots of contrib.

Which means that, beyond the number of gigabytes of data Dropbox has to sync, the number of the files making up these gigabytes has also been increasing, currently to around 100k files. After I started playing with checkouts of the Drupy project in preparation for the Drupyx experiment, I noticed that, when I created some new files under the Drupy directories, their creations and subsequent changes would not be tracked by Dropbox, but they would correctly sync if I renamed the Drupy directory itself or a directory above it. Something like this:

Action Result on Dropbox.com
touch ~/Dropbox/src/drupy/src/foo.py Ignored
mv ~/Dropbox/src/drupy/src/foo.py ~/Dropbox/src/drupy/src/bar.py Ignored
mv ~/Dropbox/src/drupy ~/Dropbox/src/drupa Full sync below ~/Dropbox/src/drupa
mv ~/Dropbox/src/drupa ~/Dropbox/src/drupy Full sync below ~/Dropbox/src/drupy, including "foo.py"
rm ~/Dropbox/src/drupy/foo.py Ignored

And all this while operations on a PC running Windows tied to the same account did not experience any similar problem. What could be going wrong ?