A belated goodbye to PC Plus magazine
13th October 2012Last year, Future Publishing made a loss, so something had to be done to address that. Computer magazines such as Linux Format no longer could enclose their cover-mounted discs in elaborate cardboard wallets and moved to simpler sleeves instead. Another casualty has been one of their longest standing titles: PC Plus.
It has been around since 1986 and possibly was one of the publisher's first titles. It was the late nineties when I first encountered and, for quite a few years afterwards, it was my primary computer magazine of choice every month. The mix of feature articles, reviews and tutorials covering various aspects of personal computing was enough for me. After a while, though, it became a bit stale and I stopped buying it regularly. Then, the collection that I had built up was dispatched to the recycling bin and I turned to other magazines.
In the late nineties, Future had a good number of computing titles on magazine shelves in newsagents, and there did seem to be some overlap in content. For instance, we had PC Answers and PC Format alongside PC Plus at one point. Now, only PC Format is staying with us and its market seems to be high home computer users such as those interested in PC gaming. .Net, initially a web usage title and now one focussing on website design and development, started from the same era and Linux Format dates from around the turn of the century. Looking back, it looks like there was a lot of duplication going on in a heady time of expanding computer usage.
That expansion may have killed off PC Plus in the end. For me, it certainly meant that it no longer was a one-stop shop like Dennis's PC Pro. For instance, the programming and web design content that used to come in PC Plus found itself appearing in .Net and in Linux Format. The appearance of the latter certainly meant that was somewhere else for Linux content; for the record, my first dalliance with SuSE Linux was from a PC Plus cover-mounted disk. The specialisation and division certainly made PC Plus a less essential read than I once thought it.
The current economic downturn coincides with significant shifts in publishing. Digital publishing is expanding beyond just websites, which likely contributes to Future's recent financial results. The perceived lack of importance of a title like PC Plus can lead to its discontinuation, though I believe past overexpansion was the primary cause. Perhaps a single Future computing magazine with in-depth reviews, tutorials on programming and open-source software, and consolidated content from other magazines could have changed things. However, even that might not have been commercially viable. Consequently, the present situation is different, and PC Plus is no longer a magazine I read monthly. Its disappearance from newsstands, even though it fell off my reading list some time ago, is regrettable.
Using the IN operator in SAS Macro programming
8th October 2012This useful addition came in SAS 9.2, and I am amazed that it isn’t enabled by default. To accomplish that, you need to set the MINOPERATOR option, unless someone has done it for you in the SAS AUTOEXEC or another configuration program. Thus, the safety first approach is to have code like the following:
options minoperator;
%macro inop(x);
%if &x in (a b c) %then %do;
%put Value is included;
%end;
%else %do;
%put Value not included;
%end;
%mend inop;
%inop(a);
Also, the default delimiter is the space, so if you need to change that, then the MINDELIMITER option needs setting. Adjusting the above code so that the delimiter now is the comma character gives us the following:
options minoperator mindelimiter=",";
%macro inop(x);
%if &x in (a b c) %then %do;
%put Value is included;
%end;
%else %do;
%put Value not included;
%end;
%mend inop;
%inop(a);
Without any of the above, the only approach is to have the following, and that is what we had to do for SAS versions before 9.2:
%macro inop(x);
%if &x=a or &x=b or &x=c %then %do;
%put Value is included;
%end;
%else %do;
%put Value not included;
%end;
%mend inop;
%inop(a);
While it may be clunky, it does work and remains a fallback in newer versions of SAS. Saying that, having the IN operator available makes writing SAS Macro code that little bit more swish, so it's a good thing to know.
Setting up MySQL on Sabayon Linux
27th September 2012For quite a while now, I have offline web servers for doing a spot of tweaking and tinkering away from the gaze of web users that visit what I have on there. Therefore, one of the tests that I apply to any prospective main Linux distro is the ability to set up a web server on there. This is more straightforward for some than for others. For Ubuntu and Linux Mint, it is a matter of installing the required software and doing a small bit of configuration. My experience with Sabayon is that it needs a little more effort than this, so I am sharing it here for the installation of MySQL.
The first step is to install the software using the commands that you find below. The first pops the software onto the system while the second completes the set-up. The --basedir option is need with the latter because it won't find things without it. It specifies the base location on the system, and it's /usr in my case.
sudo equo install dev-db/mysql
sudo /usr/bin/mysql_install_db --basedir=/usr
With the above complete, it's time to start the database server and set the password for the root user. That's what the two following commands achieve. Once your root password is set, you can go about creating databases and adding other users using the MySQL command line
sudo /etc/init.d/mysql start
mysqladmin -u root password 'password'
The last step is to set the database server to start every time you start your Sabayon system. The first command adds an entry for MySQL to the default run level so that this happens. The purpose of the second command is to check that this happened before restarting your computer to discover if it really happens. This procedure also is necessary for having an Apache web server behave in the same way, so the commands are worth having and even may have a use for other services on your system. ProFTP is another that comes to mind, for instance.
sudo rc-update add mysql default
sudo rc-update show | grep mysql
Getting rid of a Dropbox error message on a Linux-powered PC
24th September 2012One of my PC's has ended up becoming a testing ground for a number of Linux distributions. The list has included openSUSE, Fedora, Arch and LMDE with Sabayon being the latest incumbent. From Arch onwards in that list, though, a message has appeared on loading the desktop with every one of these when I have Dropbox's client set up on there:
Unable to monitor entire Dropbox folder hierarchy. Please run "echo 100000 | sudo tee /proc/sys/fs/inotify/max_user_watches" and restart Dropbox to correct the problem.
Even applying the remedy that the message suggests won't permanently resolve the issue. For that, you need to edit /etc/sysctl.conf with superuser access and add the following line to it:
fs.inotify.max_user_watches = 100000
With that in place, you can issue the following command to sort out the problem in the current session (assuming your user account is listed in /etc/sudoers):
sudo sysctl -p & dropbox stop & dropbox start
A reboot should demonstrate that the messages no longer appear again. For a good while, I had ignored it, but curiosity eventually got me to find out how it could be stopped and led to what you find above.
Making GNOME Shell work through extensions and customisation
21st September 2012There has been a lot of doom and gloom spoken about the GNOME desktop environment and the project behind it. These days, it seems to be the fashionable thing to go constantly criticising it, especially after what Linus Torvalds said. KDE went through the same sort of experience a few years ago and seems to have got far enough beyond it that some are choosing it instead of GNOME. For a good while, it was the other way around.
Since its inception, the GNOME Shell has attracted a lot of adverse comment. However, since my first encounter, it has grown on me to the point that I added it to Ubuntu and Linux Mint and use it as my default desktop environment instead of Unity, Mate or Cinnamon. The first of these may not be so surprising because of the unique approach that has been taken. The use of lenses and an application launch bar are items to which I could adapt, but it is the merging of application menus and title bars with the top panel of the desktop that really puts me off it. Application window buttons can be moved to the right everywhere but on this global menu, so I tend to view things from afar instead of using it every day. There just is something about the experience that won't grow on me. Strangely, that also applies to my impressions of KDE, albeit differently; there just is something less slick about the appearance of the bottom panel, the plasmoids and other items like them.
Given that Mate and Cinnamon continue the GNOME 2 approach to things that dominated my home computing for much of the last five years since I turned to Ubuntu, my decision to use GNOME Shell instead of either come as a surprise. It isn't that the environments aren't slick enough, just that I have come to prefer the way that GNOME Shell handles workspaces, spawning them as you need them. If that could be an option in Cinnamon, then it might become my desktop of choice. However, that seems to go against the philosophy of the project, even if someone adds and extension for it.
For a time, I played with going with LXDE rather than either Unity or GNOME Shell; as it happened, my first impressions of the latter weren't so positive until I spent a day with the GNOME variant of Fedora 15. Being not dissimilar to GNOME 2 in the way that it worked was the main attraction of LXDE and my initial use of it was with Lubuntu running on a netbook; the LXDE version of Linux Mint 12 now runs on it so there hasn't been so much change on that machine.
Sometimes, the only way to deal with change is to have a look at it to see what's coming and to decide what you need to do about it. In the case of GNOME Shell, my day with Fedora 15 on a backup PC changed my impressions, and Linux Mint 11's GNOME 2 desktop looked a bit old-fashioned afterwards. In fact, I popped GNOME 3 on there and have been using it as my main desktop environment ever since.
With computing, there always are some who expect things to just work and be the way that they want them. The need for extra configuration is a criticism that still can be levelled at GNOME Shell. Before going with Mate and Cinnamon, Linux Mint went the same way for a while, leaving me to wonder what can be done with such an approach. Will someone else pick up that baton and do the handiwork so that users don't have to do it? Not yet, it seems. Since no one is following the lead of Linux Mint 12, the need for user tweaking remains, even if I have found which ones work for me.
The first place to begin is GNOME's Extensions website, from where I raid a few extensions every time I do an operating system installation. The Alternative Status Menu extension is among the first to get added so that I have the shutdown option again on the user menu, a common criticism of the default set up. Since I always install the GNOME Tweak Tool from the distro repositories, I add the Advanced Setting in User Menu extension to get an entry in the status menu that grants quick access. Frippery Bottom Panel comes next on the list because of its workspace switcher and application window list. Others like Frippery Move Clock, Monitor Status Indicator, Places Status Indicator, Removable Drive Menu, Remove Accessibility, Shell Restart User Menu Entry and User Themes follow in some order and make things feel more pleasing, at least to my mind.
You aren't stuck with the default theme, either, and I have chosen Elementary Luna from deviantART. For adding your own themes, the above listed User Themes extension is needed. Because I want the Frippery Bottom Panel to match the top panel, I tweaked its stylesheet and that's where the Restart User Menu Entry extension is useful, though some care is needed not to crash the desktop with constant shell restarts.
Doing the above makes GNOME Shell really amenable to me, and I wouldn't like to lose that freedom to customise. Saying that, the continued controversial changes aren't stopping yet. Those made to the Nautilus file manager in GNOME 3.6 have caused the Linux Mint project to create Nemo, a fork of the software, and Ubuntu is sticking with the previous version for now. Taking some action yourself instead of just complaining loudly sounds like a more positive approach, which makes its own statement. However, at a time when many want the GNOME project team to listen to users, the new Nautilus appears and is not to be what they needed to see. Could the project go on like this? Only time can answer that one.
While it appears that many have changed from GNOME to other desktop environments, I haven't come across any numbers. A reducing user base could be a way of sending a message about any discontent, one that makes use of a great feature of free software: there is plenty of choice. If the next version of Nautilus isn't to my taste, there are plenty of alternatives out there. After all, Cinnamon started on Linux Mint and has gone from there to being available for other distros too; Fedora is one example. Nemo could follow suit.
Now that GNOME's constituent applications are seeing changes, GNOME Shell may be left to mature. Computer interfaces are undergoing a lot of change right now, and Microsoft Windows 8 is bringing its own big leap. Though controversial at the time, change can be a good thing too and us technical folk always like seeing new things come along (today saw the launch of the iPhone 5 and many folk queueing up for it; Google's Nexus 7 ran out of stock in its first weeks on the market; there are more). That could be what got me using GNOME 3 in the first place, even if my plan is to stick with it for a while yet.
ERROR: This range is repeated, or values overlap: - .
15th September 2012This is another posting in an occasional series on SAS error and warning messages that aren't as clear as they'd need to be. What produced the message was my creation of a control data set that I then wished to use to create a data-driven (in)format. It was the PROC FORMAT step that issued the message, and I got no (in)format created. However, there were no duplicate entries in the control data set as the message suggested to me, so a little more investigation was needed.
What that revealed was that there might be one variable missing from the data set that I needed to have. The SAS documentation has defined FMTNAME, START and LABEL as compulsory variables, with each of them containing the following: format name, initial value and displayed value. My intention was this: to create a numeric code variable for one containing character strings using my data-driven format, with then numbers specified within a character variable as it should be. What was missing then was TYPE.
This variable can be one of the following values: C for character formats, I for numeric informats, J for character informats, N for numeric formats and P for picture formats. Due to it being a conversion from character values to numeric ones, I set the values of TYPE to I and used an input function to do the required operations. The code for successfully creating the informat is below:
proc sql noprint;
create table tpts as
select distinct "_vstpt" as fmtname,
"I" as type,
vstpt as start,
vstpt as end,
strip(put(vstptnum,best.)) as label
from test
where not missing(vstptnum);
quit;
proc format library=work cntlin=tpts;
run;
quit;
Though I didn't need to do it, I added an END variable too for the sake of completeness. In this case, the range is such that its start and end are the same and there are cases where that will not be the case, though I am not dwelling on those.
Command line file comparison in Windows
20th August 2012While UNIX and Linux both have the diff command for comparing the contents of text files, the Windows counterpart was unknown to me until recently. Its name is fc, and it looks as if the f is for file and c is for comparison, though I cannot confirm that as of now. The usage of that command is not dissimilar to the way that things work with diff. Here is an example command:
fc file1.txt file2.txt > file3.txt
This compares file1.txt with file2.txt and sends the output to file3.txt. Any differences between the two files being compared appear to be more clearly labelled than in the diff output's < and > labels. That verbosity could have its uses, but the existence of the fc command is stopping envious glances at the diff one for now, just as findstr is doing the same in comparison with grep.
Renaming multiple files in Linux
19th August 2012The Linux and UNIX command mv has a number of limitations, such as not overwriting destination files and not renaming multiple files using wildcards. The only solution to the first that I can find is one that involves combining the cp and rm commands. For the second, there's another command: rename. Here's an example like what I used recently:
rename s/fedora/fedora2/ fedora.*
The first argument in the above command is a regular expression much like what Perl is famous for implementing; in fact, it is Perl-compatible ones (PCRE) that are used. The s before the first slash stands for substitute, with fedora being the string that needs to be replaced and fedora2 being what replaces it. The third command is the file name glob that you want to use, fedora.* in this case. Therefore, all files in a directory named fedora will be renamed fedora2 regardless of the file type. The same sort of operation can be performed for all files with the same extension when it needs to be changed, htm to html, for instance. Of course, there are other uses, but these are handy ones to know.
Removing VMware Player from Linux Mint Debian Edition
4th August 2012A whole slew of updates has appeared for my Linux Mint Debian Edition PC. However, to instate them, I needed to remove VMware Player and this is the command to do so:
sudo vmware-installer -u vmware-player
It worked in my case, and my system updates are in progress as I write this. The same command should work for other Linux distros where VMware Player was installed using the *.bundle installer. VMware Player remains in place on my main PC though, so I am not ditching it just yet, even if I have to be careful when running it on Linux Mint 13 so as not to freeze the system on myself.
Listing hardware information for Linux systems
3rd August 2012Curiosity about the graphics card on my backup PC caused me to look for ways of getting this information without opening up the machine or searching for a manual. In the end, a solitary command did the job:
sudo lshw
If you are running it as root, the sudo piece can be dropped, but the result is the same. As it happened, it provided me with the information that I needed.