tr

I learned about the ‘tr’ Unix command today. It’s for translating text in streams. The particular example was:

  echo | tr '012' '001'

And I didn’t really understand what that did, but now I do. Basically the ‘echo’ part will echo a new line character, which is octal 012. Then tr will read its input stream and read that new line. It then has a rule to translate 012 (new line) to 001 (Ctrl+A), which it does. So basically it’s just a way of getting a Ctrl+A character in a stream. If you use Ctrl+A as your regular expression delimiter you’re unlikely to have a collision in the expression itself.

Environment Variables and Secure Programming for Linux

I read the Environment Variables section of Secure Programming for Linux and Unix HOWTO and learned about the IFS environment variable.

I also read CS 15-392 Secure Programming – Environment Variables.

The IFS environment variable is the “internal field separator” and it is typically space, tab, new line. I.e. white space used to separate fields. So in bash you can delete the IFR variable and it will default to ” \t\n” or you can set it explicitly to that value. So that explains why I found a script that unset the IFR variable — it’s a secure programming practice.

I’ve set up a new file server

I’ve been having some fun over the last day or two looking over all my old files. I’ve got files that go back as far as 1999 in my archives. I’ve found my old blog database and associated files, so I hope to get that back up again soon, and I found some old code that I’ve been looking for (I don’t want to have to write it again!).

So my new file server has 6TB of storage as 3 x 2TB partitions. I can fit all my data in 1.3TB of space, so I’m planning to have one file share, and then a backup of that onto another partition. I have 10,174,633 files in my archive folder, and many more in my media, download and home folders. I might publish some more stats once du -s has finished processing. :)

I’m running Ubuntu 10.04 LTS Server as my file server. I tried to setup the Desktop version but it wouldn’t play nice with my nVidia graphics card.

Google webmaster tools

I decided to have a look at the Google Webmaster Tools. I’ve setup accounts for jsphp.co and www.progclub.org. So far I’m not very impressed at all. Maybe it’s because the accounts are just new, but there is basically no data in any of my sites, so it’s not very useful at all. I guess it’s just wait and see if data ends up being loaded or not.

Non-interactive apt-get install

I was wondering about how to do a non-interactive installation of MySQL using apt-get, because it prompts for the root password. I found my answer in an article — Truly non-interactive / unattended apt-get install.

Basically in addition to passing the -q -y arguments to apt-get, you export an environment variable, like this:

# export DEBIAN_FRONTEND=noninteractive
# apt-get -q -y install mysql-server-5.0

Showing URL scheme in firefox

Today I was diagnosing some HTTP/HTTPS issues, and firefox was being a bitch by not showing me whether I was on a HTTPS or HTTP connection in the address bar. Turns out that in order to show the URL scheme you can change the setting in about:config. You need to change browser.urlbar.trimURLs to false, and then you’re back in business.

Forcing MediaWiki to display math as PNG

I had a problem with MediaWiki math sections not always displaying as a PNG. For simple expressions HTML was used instead. This lead to a very non-uniform look and feel where some images had a green background and large fonts (for PNG expressions) compared to a black background and different fonts (for HTML expressions). I wanted a uniform look and feel so I went looking for a configuration setting.

I haven’t been able to figure out how to force mediawiki to always display a PNG as a global setting, but in your user settings on the math preferences section you can change from the default “HTML if very simple or else PNG” to “Always render PNG” which fixes the problem on a per user basis, which is good enough for me.