Ubuntu Linux: How to install Apache2 – MySQL – PHP (LAMP) phpMyAdmin and fix a few installation errors

We won’t give out pretty much any comments/descriptions for this post because we want to keep it small 🙂

First, install a bunch of stuff:

sudo apt-get install apache2
sudo apt-get install mysql-server
sudo apt-get install php5 libapache2-mod-php5 php5-mysql

Later, restart your apache so that it loads all modules (php, etc)

sudo /etc/init.d/apache2 restart

and if you get the following error:
“Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1 for ServerName” resolve it by adding the line:

ServerName localhost

to the file /etc/apache2/httpd.conf and then try restarting again. (You need root access to edit, if you are not familiar with command line text editors line nano, try sudo gedit /etc/apache2/httpd.conf, gedit is usually available with all gnome installations).

After that, to install phpMyAdmin and make it available at http://localhost/phpmyadmin:

sudo apt-get install phpmyadmin
sudo ln -s /usr/share/phpmyadmin /var/www

(The default MySQL login username ‘root’ and the password is the one you entered during installation in the last step).

Happy developing, hope we helped 🙂


Blood donation at the University of CyprusΑιμοδοσία στο Πανεπιστήμιο Κύπρου

 

Η Υπηρεσία Σπουδών και Φοιτητικής Μέριμνας του Πανεπιστημίου Κύπρου, σε συνεργασία με την Τράπεζα Αίματος του Γενικού Νοσοκομείου Λευκωσίας, σας προσκαλούν στην επόμενη αιμοδοσία που θα πραγματοποιηθεί την Πέμπτη, 24 Νοεμβρίου 2011 από τις 10:00 π.μ. – 5:00 μ.μ. στο Ισόγειο του Κτιρίου Κοινωνικών Δραστηριοτήτων στην Πανεπιστημιούπολη.

Όσοι από εσάς έχουν προσφέρει αίμα τον περασμένο Μάρτιο δικαιούνται να δώσουν αίμα τώρα, αφού είναι ασφαλές να προσφέρουμε αίμα μετά από 4 μήνες.

 

Για τυχόν πληροφορίες, παρακαλώ επικοινωνείτε με τη Μάρθα Ιωάννου, Υπεύθυνη Λειτουργό Γραφείου Φοιτητικής Ζωής, τηλ.  22 894066, [email protected].


Ubuntu: How to compile STAN SPG Planning System (http://planning.cis.strath.ac.uk/STAN/) on Ubuntu 11.10

Recently we tried to compile the STAN SPG Planning System (http://planning.cis.strath.ac.uk/STAN/) under Ubuntu 11.10  Oneiric Ocelot which ended up in a failure.

After reviewing the source code of version 3 (http://planning.cis.strath.ac.uk/code/) we found out that there were many changes needed to be done that had to do with the age of the code itself. We believe that with an OS from1999 and the repsective g++ libraries there should be no problem compiling this application but who has one anyway ? (From the README file: “The code has been built and tested using Linux and UNIX (SunOS) with the g++ compiler.” )

Solution:

We realized that most of the errors are pretty much the same ones and had to do with C++ syntax. Following a synopsis of the changes we did:

    • Replaced
      #include <stream.h>

      with

      #include <iostream>
      using namespace std;

      Note on this, be sure to put using namespace std; after the rest of the includes to avoid conflicts and other issues that might arise.

    • Replaced
      #include <stream.h>

      with

      #include <fstream>
    • Replaced
      #include <new.h>

      with

      #include <new>
    • Added
      #include <cstring>
      #include <stdlib.h>

      wherever there was a call for string manipulation like (strcmp(),strlen(),strcpy(),..) or whenever there were commands like exit().

    • Replaced array assignments like:
      exvec = pl.exvec;

      to

      for(int i = 0;i<EXVECSIZE;i++)  {
        exvec[i] = pl.exvec[i];
      };

      The ranges of these arrays we were able to find them from the respective .h files.

    • In the makefile, we changed:
      pddl.yacc.tab.c: alldefs.h pddl.yacc lex.yy.c
          bison pddl.yacc

      to

      pddl.yacc.tab.c: alldefs.h pddl.yacc lex.yy.c
          bison pddl.yacc -o pddl.yacc.tab.c

      Or else the make will fail as it will not find the file pddl.yacc.tab.c.

In the next section you will find all changes we did to the files extensively (Hopefully we did not forget any or mess them up). The format is as follows (the changes do not necessarily imply that all changes should happen at the same place in file):

in <FILE>
line that was changed/deleted
line that was changed/deleted
-
line that was added
line that was added
line that was added
  1. in Makefile
    pddl.yacc.tab.c: alldefs.h pddl.yacc lex.yy.c
    bison pddl.yacc

    pddl.yacc.tab.c: alldefs.h pddl.yacc lex.yy.c
    bison pddl.yacc -o pddl.yacc.tab.c
  2. in BasicTim.h
    #include <stream.h>

    #include <iostream>
    using namespace std; // make sure it goes right after the includes (I believe it affects stdio.h)
  3. in SymTab.cc
    #include <stream.h>

    #include <iostream>
    #include <cstring>
    #include <stdlib.h>
    using namespace std;
  4. in BasicTim.cc
    #include <fstream.h>

    #include <fstream>
  5. in TimInterface.cc
    #include <fstream.h>

    #include <fstream>
  6. in globals.h
    #include <stream.h>
    #include <fstream.h>

    #include <fstream>
    #include <iostream>
    using namespace std;
  7. in stan.h
    #include <stream.h>

    #include <iostream>
    using namespace std;
  8. in facts.h
    #include “stream.h”

    #include <iostream>
    #include <cstring>
    using namespace std;
  9. in facts.cc
    #include <stream.h>

    #include <iostream>
    using namespace std;
  10. in facts.cc
    exvec = pl.exvec;

    for(int i = 0;i<EXVECSIZE;i++) {
    exvec[i] = pl.exvec[i];
    };
  11. in facts.cc
    domination = pl.domination;

    for(int i = 0;i<EXVECSIZE;i++)  {
    domination[i] = pl.domination[i];
    };
  12. in actions.cc
    exvec = pl.exvec;

    for(int i = 0;i<EXVECSIZE;i++)  {
    exvec[i] = pl.exvec[i];
    };
  13. in instantiation.cc
    #include <stream.h>

    #include <iostream>
    using namespace std;
  14. in candidates.h
    #include <stream.h>

    #include <iostream>
    using namespace std;
  15. in main.cc
    #include <stream.h>
    #include <fstream.h>
    #include <new.h>

    #include <iostream>
    #include <fstream>
    #include <new>
    #include <stdlib.h>
    using namespace std;

Soon we will add the modified version of the source code online that should be able to compile by just issuing make stan.


C/C++: How to round up a number

#include 
intergerVariable = ceil (floatVariable);

To compile with math.h library you MUST include the -lm flag.

gcc -lm main.c


C/C++: Syntactic Sugar for If Statement

A standard If Statement in C/C++ can become an one line statement by using the following structure

variable = (STATEMENT)?(RETURN VALUE IF TRUE):(RETURN VALUE IF FALSE)

which is the same as

if (STATEMENT){
  variable = (RETURN VALUE IF TRUE);
}else{
  variable = (RETURN VALUE IF FALSE);
}


C/C++: Capture stdout from a system() command

	FILE *results;
	int queen;
	if (!(results = popen("./precosat -f nqueens.cnf | tail -n +2 | head -n -1 | tr -d v | tr ' ' '\n' | grep -v '^$' | grep ^[0-9]", "r"))) {
		cout << "Unable to Execute Precosat" << endl << "./precosat -f nqueens.cnf | tail -n +2 | head -n -1 | tr -d v | tr ' ' '\n' | grep -v '^$' | grep ^[0-9]" << endl;
		exit(1);
	}
	for (i = 0; i < queens; i++) {
		fscanf(results,"%d",&queen);
		cout << "Queen #" << i+1 << " goes to [" << ((queen%queens)?(queen%queens):queens) << "]" << endl;
	}
	pclose(results);

Above, you will find an example that was used to extract data from the PrecoSAT SAT Solver in order to solve the N-Queens problem. It returns all positive variables, one per line.

You can see that after the call to popen, it creates a pointer to a file stream that can be used as a regular file to read the data from the called process.


Bash: grep: A couple of usefull applications

(How) to delete all empty lines from a file:

cat someFile | grep -v '^$'

(How) to get all numbers that have no sign in front of them (all positive numbers, from a file where on each line there is one number only):

cat someFile | grep ^[0-9]

(How) to extract all negative numbers (from a file where on each line there is one number only):
You can of course replace the minus ‘-‘ character with any other you want to use as a starting character for a line.

cat someFile | grep ^-


Bash: tr: A couple of usefull applications

(How) to delete all instances of a character from a file:
The following example deletes all instances of the character ‘v’

cat someFile | tr -d v

(How) to replace all instances of a character with another:
The following example replaces all space characters with the new line character

cat someFile | tr ' ' '\n'