Today I'm working on a little tutorial (about writing RESTful services, for this site) and I used the tree command to illustrate the file and directory layout of the project. I love this little command and use it frequently, but it isn't very well known so here's a quick example. Continue reading
Tag Archives: linux
Gearman Priorities And Persistent Storage
I have been writing a bit about Gearman lately, including installing it for PHP and Ubuntu, actually using it from PHP and also how I use persistent storage with Gearman. I'm moving on to look at adding jobs of different priorities.
I use Gearman entirely as a point to introduce asynchronous-ness in my application. There is a complicated and image-heavy PDF to generate and this happens on an automated schedule. To do this, I use the GearmanClient::doBackground method. This inserts a priority 1 job into my queue.
Using the doHighBackground() and the doLowBackground() methods insert jobs into the queue and checking out my persistent storage I see that the priorities work like this:
| priority | method | 0 | doHighBackground() |
1 | doBackground() |
2 | doLowBackground() |
|---|
Gearman works out which task is the next highest priority and will hand it to the next available worker - which means that I can set my automated reporting lower priority than the reports requested by real live people wanting them now, and everyone is happy!
Apache on Ubuntu/Debian
Apache on Debian. Ubuntu
When I first started using Ubuntu, I was coming from a distro journey that started with FreeBSD and took in Mandrake and Gentoo along the way; I hadn't worked with any Debian-based systems before and was new to the way that Apache is configured on those platforms.
Combining PDF Files With Pdftk
I'm currently delivering all my talks with PDF format slides, using Jakob's PDF Presenter Console, which is awesome but lacks a "goto slide" button and is a little slow to click forward. It doesn't matter for a short talk but I had 200+ slides for my ZCE preparation tutorial at the Dutch PHP Conference and I was concerned about losing my place! Therefore I split my slides up into several decks, but still need to publish them as a whole.
For years I've used PDF Shuffler for this sort of thing but I wondered if there was an easy way of doing this from the command line this time, since I literally wanted to glue together a bunch of files one after another. Predictably, there is and it's called pdftk - the PDF Toolkit. Continue reading
PDF Presenter
Recently I've switched how I prepare and deliver presentations, using LaTeX to mark up the content and producing PDF slides from that. Which is great but I miss having some of the during-presentation functionality of LibreOffice such as a timer and being able to see what's on the next slide. Happily for me, there's a PDF Presenter Console on github and it does what I need!
Getting the thing installed was a bit of a puzzle as it has many dependencies (and that's just the compiler) but I now have it working like a dream on both my laptop and my netbook. I discovered that it didn't work with my presenter mouse but with a bit of help from a friend, I have a patch for that and now when I'm presenting I see something like this:
![]()
You can set which screen show this, and which shows just the main slide, and you can also set what duration the countdown timer should start from. One really key feature is that the timer doesn't start counting until you advance from the first slide ... unlike in open office where I usually put up the title slide during the break before my talk, then have to stop and start the presentation to reset the clock so I've got some vague idea of my running time!
So in true open source form, there's a tool out there already (thanks Jakob, and thanks for responding to my emails!), and I was able to adapt it to my use case, or rather Kevin was able to! I would love to have the presenter console packaged so I could recommend it for more users, but for now I have a great open source solution enabling me to do what I'm good at - delivering content.
Installing Gearman for PHP and Ubuntu
I've been using Gearman lately in a project that I'm working on, and of course a month later when I came to deploy the code, I had to look up all over again what was required for a gearman server in order to put it on the new platform. Here is the short version for my future reference (and yours, if you like)
Using gnome-keybinding-properties
Last week I reinstalled my aspireone, which I've had for quite a while but which is really excellent for events. I put the latest Ubuntu Netbook Remix onto it and it installed like a dream, with peripherals and powersaving all working correctly. It says something about the positive experiences I've had with *buntu installs lately that I even did this over the wifi!
The weird thing was that I don't really use Gnome on other machines as I prefer KDE, and I hadn't seen the Unity desktop before (as I understand it, this is a lightweight gnome replacement - it still looks and smells like gnome to me), so there were a few things that were "missing" as far as I was concerned. Easily the most annoying is the Alt+F2 shortcut, I don't really care what GUI I'm using, I mostly just run things from that! I also realised that I now had workspaces, but that there was no keyboard shortcut to switch between them (I don't use a mouse, so it's keyboard or nothing for me).
Enter a wonderful utility called gnome-keybinding-properties.
Continue reading
Navigating Bash History with Ctrl+R
I spend a lot of time at command line, and bash records the history of all the commands I've typed and puts it in .bash_history (there's a limit on how many it stores but for me it goes back a few days). I find it really useful to look back at the history to use the same commands again or edit them slightly. You can press the up arrow to go through your history but it can take a really long time to find what you're looking for. So instead, try Ctrl + r.
To do this: first press Ctrl + r, then start typing the command or any part of the command that you are looking for. You'll see an autocomplete of a past command at your prompt. If you keep typing, you'll get more specific options appear. You can also press Ctrl + r again as many times as you want to, this goes back in your history to the previous matching command each time.
Once you see a command you like, you can either run it by pressing return, or start editing it by pressing arrows or other movement keys. I find this a really useful trick for going back to a command I know I used recently, but which I can't remember or don't want to look up again. I hope this is a useful trick for you too!
Launching Links in Opera from Command Line
I'm an Opera user but I use a number of applications from the command line, and often I want to launch links from those applications into my web browser. I've just switched over to reading my feeds using canto (web applications are becoming decreasingly accessible these days, although I'm saving that rant for another day) which is a console-based application. This, like many other applications, allows you to specify a URL handler to use when you want to visit links.
To launch a link into a new tab in an existing Opera window, I simply used this:
opera --remote 'openURL(<url>, new-page)'
Where the <url> is the address to access; the same trick works in other programs too. For example I use irssi for IRC, with the openURL plugin, and this can do the same trick. To launch the link I simply set the http handler like this:
/set openurl_app_http opera --remote 'openURL($1, new-page)'
Since I have to look these settings up every time I want them, I thought I'd blog them for next time - and of course for anyone else who finds this useful between now and then!
Missing pcre.h when installing pecl_oauth
I was playing with pecl_oauth last week (more about that in a later post) and when I tried to install from PECL, it grabbed the files, ran the configure step but stopped with an error status during make. This is bad news for those of us who are ubuntu users rather than compile-happy linux users! Closer inspection showed this line around the point things started to go wrong:
Error: /usr/include/php5/ext/pcre/php_pcre.h:29:18: error: pcre.h: No such file or directory |
I didn't have the header files for pcre installed - in ubuntu the headers are in the -dev packages so I just installed what I needed:
sudo aptitude install libpcre3-dev
Re-attempting the pecl install, everything worked as expected. This is on Ubuntu 10.04 Lucid Lynx, and from reading around you'd want to install the same package in response to this error message, regardless of what you were doing to cause it. Hope this helps someone.
