Cracking the Lab! – 1

Being in the seventh semester has had its pros and cons. However, the labs in this semester haven’t been a good experience, in terms of all the trouble we had to go through just to get the software work at our home PCs for practice. I have tried hard and come close to what you might say, “a working” situation, where everything seems to work for me. Here are the steps I had to take to arrive at this very metastable state, you could try and follow the steps below to make things work for you; however, I do not guarantee that it will always work.

Also, here is the code for the programs I have written. Download it here. (Note: For database related programs, you will have to properly create databases/tables for it to work)

1. Fedora + Apache (for Perl, CGI, PHP, MySQL)

Get the latest fedora from http://fedoraproject.org and install it using all the packages selected (this is the safest way to do it; but if you know exactly what you are doing, you are free to select the right packages)

Once you are booted into Fedora, login using the root account (always do this – since you are on localhost, security should not be a problem for you.) and run apache and mysql.

  • Select “System” from the main menu, then click on “Services” in “Administration”.
  • Browse through the list and start (and enable) the “httpd” and “mysqld” services.
  • Now run the browser and point it to “http://localhost” to see if the apache service has started successfully. If it has, you will be able to see a Fedora Start Page in your browser.

You are now finished configuring. For working with apache you’ll have to know the following:

  • All “*.html, *.php, *. htm, *.shtml, *.xhtml” files go in “/var/www/html” directory.
  • All “*.pl, *.cgi” files go in “/var/www/cgi-bin” directory.
  • You’ll have to make the *.cgi, *.pl files executable by right-clicking on them and setting the permissions in their properties or by simply using the command in a terminal: “chmod 777 /var/www/cgi-bin/filename.cgi
  • If you find yourself looking at the “500 – Server Error” page, you might want to look into the logs to debug your errors. The logs are found at “/etc/httpd/logs/”

2. Tomcat + Java (for Java Servlet programming)

Get the JDK from the Java website here. And Apache Tomcat from here. Log into an account with administrative privileges and install them. Once you have installed both of them, you will need to set a few environment variables before you can start writing/compiling the code. I’m assuming that you have installed Java at “D:\j2sdk” and Tomcat at “D:\Tomcat”. (Make necessary changes in the below values as per your installation directories)

Variable Name

Value

CATALINA_HOME D:\Tomcat
PATH D:\j2sdk\bin
CLASSPATH D:\Tomcat\common\lib\servlet-api.jar

You can set these variables by, right-clicking on “My Computer”. Then, choose “Properties”, and in the “Advanced” tab, click on “Environment Variables”. If a variable by that name already exists, you can append the above value to it by using the delimiter semi-colon “;”.

Spot check! Write a sample Java code and try compiling it by opening Command Prompt (Start -> Run: “cmd.exe”) and using the following command: > javac filename.java

If you get any error stating that “javac” is a bad command or filename, then there is something wrong with your installation. Recheck the above steps again.

Start the Tomcat server: Start -> All Programs -> Apache Tomcat -> Configure Tomcat. Once the Tomcat tool is running, click “Start”.

Open your browser and point it to: “http://localhost:8080/”. If Tomcat has been properly installed, you will see default Apache Tomcat page. If not, recheck the above steps.

That’s (sadly) not all of the configurations that you have to change in order for things to work. Right now, you will be able to code in Java and also compile it. However, you will not be able to code servlets unless you change the default “web.xml” file or add a custom web.xml file for your servlet. I’m going to tell you how to modify the default web.xml file so that you can get things to work.

Open the web.xml file (Located at: D:\Tomcat\conf\web.xml) in a text editor, and look for the following codes and uncomment them. (Remove the ‘<!–‘ and ‘–>’ around the code)

<servlet>
        <servlet-name>invoker</servlet-name>
        <servlet-class>
          org.apache.catalina.servlets.InvokerServlet
        </servlet-class>
        <init-param>
            <param-name>debug</param-name>
            <param-value>0</param-value>
        </init-param>
        <load-on-startup>2</load-on-startup>
</servlet>

And this:

<servlet-mapping>
        <servlet-name>invoker</servlet-name>
        <url-pattern>/servlet/*</url-pattern>
</servlet-mapping>

!!! One piece of warning !!! Uncommenting these lines will prove to be a security threat if you are doing it on a commercial web server. You shouldn’t really worry about it if you are using it at your home computer.

Once you are done with the above steps, you can be glad to know that nothing stands between you and coding the servlets now. (Phew!) Anyhow, you must know these for the things to actually work: (I’m assuming that you will be using the “ROOT” directory for your servlets, if not, make changes in the following paths accordingly)

  • All the “*.class” files go into “D:\Tomcat\webapps\ROOT\WEB-INF\classes” directory.
  • All “*.html, *.jsp, *.htm, *.shtml, *.xhtml” files go into “D:\Tomcat\webapps\ROOT” directory.
  • Use the “javac.exe” application (in “D:\j2sdk\bin”) to compile your code, which will create a classname.class file for you.
  • Now copy the .class to the classes directory and you can access the servlet using “http://localhost:8080/servlet/classname

Well, that’s it for now. Its sad that we have to go through all this just to practice five programs for our labs. Anyway, I hope all the settings work for you. If not, let me know; I hope I can help you.

P.S: Configuration for Networks Lab (Fedora + NCTUns) will be out tomorrow. 🙂

Advertisements

Eliminating Piracy – A long shot?

Updated: Revisiting Piracy (24/01/2012)

Piracy

Piracy basically is theft. Stealing can be broadly split into two kinds:

  • Stealing to fill one’s stomach.
  • Stealing for any other reason.

We are not talking of the sea-faring pirates, whose sins might just be pardonable when compared to the modern day pirates who follow a form of piracy more significantly put as copyright infringement.

Piracy: Why? (– Why not?)

Hunger here, signifies the inability to access content due to monetary or other situational constraints. This form of piracy is acceptable to a certain degree; more like compassion shown upon a man who steals to save himself from dying of hunger.

This form of piracy is practiced by ‘youth’. (Youth is a heavy word. Pardon me) The younger lot, of which I’m pretty much a part of, have a lot of things to spend on: weekend parties, fueling their vehicles, girlfriends, and a lot more! Wouldn’t it be obnoxiously painful to us when expected to pay for software too? And a few software like the Adobe Photoshop being so heavily priced, is unreachable by us; and isn’t it like curbing our creativity if good software like that are not available to us for free (or a reasonable price: $100? For the record, Adobe Photoshop CS3 Extended costs $999! About 10 times the price I quoted for it!)

I’d say, the worst type of piracy is music. Most of the times, though the albums are reasonably priced, people tend to download them for free either from websites like ‘yourmp3.net’, ‘mp3raid.com’, ‘mp3pk.com’, or thousands of other such websites. The P2P in itself may seem like an ‘innocent’ advancement in technology (–like the nuclear power plants, which also gave us the atomic bomb!) but it is surely helping the phenomenal rise in music Piracy.

Sometimes, movie piracy is justifiable. For instance, living in India, I have access to only a few hollywood movies that are released here, compared to a lot that gets released around the world. I’m not complaining about new movies which can be easily bought (and shipped) at some online store like Amazon; I’m actually thinking about good old movies, which are out of cinemas a long time ago and you cannot possibly find it on any online store (and even if you could, the search is never easy).

The most unfortunate form of piracy is the piracy of books. Writers put their heart and soul into their works and go through a lot of trouble which they truly deserve merit for.

Eliminating Piracy

Thinking of eliminating global piracy is like trying to be heard in a crowd of a million people. No matter how many initiatives you take to curb piracy, there will always be a ‘small’ group of people who would resort to piracy in any case. Reducing piracy is a more realistic goal that the ‘concerned people’ must take up, rather than aiming to eliminate it completely.

Here are a few suggestions I’d make:

  • Ban websites primarily targeting to provide downloads of pirated content. Trying to get the country (in which the server is located) to take action is a foolish way of trying to stop the culprits. Instead, all countries must come up with an agreement that a universal list of domains (and IP addresses) will be maintained by a non-government and non-profit organization, all of which must be banned from being accessible to public by all ISPs.
  • Governments must initiate the funding of good open source software especially the alternatives to the expensive ones in the market. This encourages people to create good open source software, and also urges many to use more open source applications.
  • 90% of all movies make their share of money within 15-24 months of their release. The film makers must come to an agreement that the movies must be made available for download (for free or for a reasonable price) after 24 months of its release. This not only ensures that the movies reach out to a bigger group of people, also guarantees that the movie isn’t forgotten very soon.
  • Urge software companies to create a ‘student’ version of all software that they make and it must be available for students for free, if used for non-commercial purposes.

All good things in life comes free; for everything else, there’s piracy!

Disclaimer: The links provided to certain websites are for knowledgeable purposes only and are not intended to promote piracy of any sort or any method.