Showing posts with label project. Show all posts
Showing posts with label project. Show all posts

Sunday, July 23, 2017

Deploy a Web Project with Maven without Eclipse!

Deploy a Web Project with Maven without Eclipse!


The purpose of this tutorial is the creation of a simple JEE Web Project without using an IDE. Maven will be used to manage the builds, and Tomcat will host the Web Application.


Assumptions

  1. Maven 3.2.3 
  2. Apache Tomcat Version 7.0.57
  3. Not using an IDE such as Eclipse
  4. JDK 1.7.0_71
  5.  $ java -version 
    java version "1.7.0_71"
    Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
    Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixed mode)

    $ mvn -ver
    Apache Maven 3.2.3 (33f8c3e1027c3ddde99d3cdebad2656a31e8fdf4; 2014-08-11T13:58:10-07:00)
    Maven home: A:Javapackagesmaven3.2.3 in..
    Java version: 1.7.0_71, vendor: Oracle Corporation
    Java home: C:Program FilesJavajdk1.7.0_71jre
    Default locale: en_US, platform encoding: Cp1252
    OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows"
Everything in this tutorial should be compatible with Java 8, Tomcat 8 and Linux, but has not been tested on this environments.


Outline

  1. Create a POM for the JEE Web Project
  2. Add a Servlet
  3. Configure Tomcat
  4. Deploy to Tomcat
  5. Test the Servlet



Create a JEE Web Project using Maven


Im going to create a workspace for my Web Project called "mywebws".  Within this workspace, Ill create the JEE Web Project.  Ill call this "myweb".  Within this folder, Ill create any empty text file called pom.xml.

So far, everything is this simple:
 Directory of A:Javaworkspacesothermywebwsmyweb 
12/05/2014 01:38 PM <DIR> .
12/05/2014 01:38 PM <DIR> ..
12/05/2014 01:41 PM 1,104 pom.xml
1 File(s) 1,104 bytes



Update the POM


The most important file within this web project is the Maven POM file.  Were going to start by defining a bare minimum POM file.

We could run a maven archetype that will generate the required folder structure for us automatically, but in reality, this saves very little time.  If you understand the POM layout, its just as easy to get started this way.


Simple Web POM

 <project   
xsi_schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.mycompany.simple</groupId>
<artifactId>simple-webapp</artifactId>
<version>1.0</version>
<packaging>war</packaging>

<build>
<sourceDirectory>src</sourceDirectory>
<finalName>simple-webapp</finalName>
</build>

<properties>

<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>

<failOnMissingWebXml>false</failOnMissingWebXml>

<javax.version>7.0</javax.version>

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>

<dependencies>

<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>${javax.version}</version>
<scope>provided</scope>
</dependency>

</dependencies>
</project>


I want to validate what I have so far, so I type this on the command line
mvn validate -e
and get this output:
 A:Javaworkspacesothermywebwsmyweb>mvn validate -e  
[INFO] Error stacktraces are turned on.
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building mycompany-web 7.0
[INFO] ------------------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO]
BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.085 s
[INFO] Finished at: 2014-12-05T13:57:20-08:00
[INFO] Final Memory: 15M/981M
[INFO] ------------------------------------------------------------------------

This demonstrates that the POM file is set up correctly, so far.  The Maven POM Tutorial explains each part of this file.


Adding a Servlet


Im going to add a simple variation of the servlet defined here.

My Servlet looks like this:
 package com.mycompany.web.servlets; 

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet(
description = "My Simple Servlet",
urlPatterns = {
"/HS",
"/myservlets/Hello.do"
}
)

public class HelloWorld extends HttpServlet {

private static final long serialVersionUID = 1L;

public HelloWorld() {
super();
}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("Hi There!");
out.close();
}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}
}

Run the
mvn clean package -e
command once this is complete.

Successful operational output looks something like this:
 ~mywebwsmyweb>mvn clean package -e 
[INFO] Error stacktraces are turned on.
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building mycompany-web 7.0
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ mycompany-web ---
[INFO] Deleting ~mywebwsmyweb arget
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ mycompany-web ---
[INFO] Using UTF-8 encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory ~mywebwsmywebsrcmain esources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ mycompany-web ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 1 source file to ~mywebwsmyweb argetclasses
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ mycompany-web ---
[INFO] Using UTF-8 encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory ~mywebwsmywebsrc est esources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ mycompany-web ---
[INFO] No sources to compile
[INFO]
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ mycompany-web ---
[INFO] No tests to run.
[INFO]
[INFO] --- maven-war-plugin:2.2:war (default-war) @ mycompany-web ---
[INFO] Packaging webapp
[INFO] Assembling webapp [mycompany-web] in [~mywebwsmyweb argetmycompany-web]
[INFO] Processing war project
[INFO] Webapp assembled in [22 msecs]
[INFO] Building war: ~mywebwsmyweb argetmycompany-web.war
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.487 s
[INFO] Finished at: 2014-12-05T14:06:40-08:00
[INFO] Final Memory: 26M/981M
[INFO] ------------------------------------------------------------------------



Compiler Validation


Its a good idea to become familiar with the output that Maven produces.


You should have a compiled class file here:
myweb argetclassescommycompanywebservletsHelloWorld.class
A more important directory corresponds the artifactId in the POM file, and is the JEE-compliant directory structure that will become the basis for our deployed WAR file:
mycompany-web
In this directory is the WEB-INF and META-INF folders, and eventually the WebContent folder will be generated here as well.

Configure POM for Tomcat Deployment


Now we want to configure the POM file to automatically create a WAR file and deploy to Tomcat.

This will require us to add three plugins to our POM file.
 <project   
xsi_schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.mycompany.web</groupId>
<artifactId>mycompany-web</artifactId>
<version>7.0</version>
<packaging>war</packaging>

<build>
<sourceDirectory>src</sourceDirectory>
<finalName>mycompany-web</finalName>

<plugins>

<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>src</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>

<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>

<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration>
<warSourceDirectory>WebContent</warSourceDirectory>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>

<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<url>http://localhost:8080/manager/text</url>
<server>TomcatServer</server>
<path>/test</path>
<username>craig</username>
<password>password</password>
</configuration>
</plugin>

</plugins>
</build>

<properties>

<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>

<failOnMissingWebXml>false</failOnMissingWebXml>
<javax.version>7.0</javax.version>

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

</properties>

<dependencies>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>${javax.version}</version>
<scope>provided</scope>
</dependency>
</dependencies>

</project>

After modifying the POM, its a good idea to validate the structure using
mvn validate -e

Modify Tomcat Settings for Maven


Add a  Maven specific configuration to the TOMCAT_HOME/conf directory.

add a settings.xml file with this information
 <?xml version="1.0" encoding="UTF-8"?> 
<settings>
<servers>
<server>
<id>TomcatServer</id>
<username>craig</username>
<password>password</password>
</server>
</servers>
</settings>

This file is part of the maven settings and is not specific to tomcat, though the tomcat-maven-plugin uses the servers defined there


Within your Maven POM file of the Web application you are deploying
 <plugin> 
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<url>http://localhost:8080/manager/text</url>
<server>TomcatServer</server>
<path>/test</path>
<username>craig</username>
<password>password</password>
</configuration>
</plugin>



Deploying the Servlet


Assuming our configuration is correct, we can create and deploy a WAR using a single command
mvn tomcat7:deploy

Successful operational output for me looks like this:
 A:Javaworkspacesothermywebwsmyweb>mvn tomcat7:deploy -e 
[INFO] Error stacktraces are turned on.
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building mycompany-web 7.0
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] >>> tomcat7-maven-plugin:2.2:deploy (default-cli) > package @ mycompany-web >>>
[INFO]
[INFO] --- build-helper-maven-plugin:1.7:add-source (default) @ mycompany-web ---
[INFO] Source directory: A:Javaworkspacesothermywebwsmywebsrc added.
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ mycompany-web ---
[INFO] Using UTF-8 encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory A:Javaworkspacesothermywebwsmywebsrcmain esources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ mycompany-web ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 1 source file to A:Javaworkspacesothermywebwsmyweb argetclasses
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ mycompany-web ---
[INFO] Using UTF-8 encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory A:Javaworkspacesothermywebwsmywebsrc est esources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ mycompany-web ---
[INFO] No sources to compile
[INFO]
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ mycompany-web ---
[INFO] No tests to run.
[INFO]
[INFO] --- maven-war-plugin:2.4:war (default-war) @ mycompany-web ---
[INFO] Packaging webapp
[INFO] Assembling webapp [mycompany-web] in [A:Javaworkspacesothermywebwsmyweb argetmycompany-web]
[INFO] Processing war project
[INFO] Copying webapp resources [A:JavaworkspacesothermywebwsmywebWebContent]
[INFO] Webapp assembled in [23 msecs]
[INFO] Building war: A:Javaworkspacesothermywebwsmyweb argetmycompany-web.war
[INFO]
[INFO] <<< tomcat7-maven-plugin:2.2:deploy (default-cli) < package @ mycompany-web <<<
[INFO]
[INFO] --- tomcat7-maven-plugin:2.2:deploy (default-cli) @ mycompany-web ---
[INFO] Deploying war to http://localhost:8080/test
Uploading: http://localhost:8080/manager/text/deploy?path=%2Ftest
Uploaded: http://localhost:8080/manager/text/deploy?path=%2Ftest (4 KB at 3176.8 KB/sec)
[INFO] tomcatManager status code:200, ReasonPhrase:OK
[INFO] OK - Deployed application at context path /test
[INFO] ------------------------------------------------------------------------
[INFO]
BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.582 s
[INFO] Finished at: 2014-12-05T14:34:23-08:00
[INFO] Final Memory: 32M/981M
[INFO] ------------------------------------------------------------------------


The web application can be undeployed by typing
mvn tomcat7:undeploy -e



Testing the Servlet


I used these annotations to define the deployment path:
 @WebServlet( 
description = "My Simple Servlet",
urlPatterns = {
"/HS",
"/myservlets/Hello.do"
}
)

and I can test in a browser by typing:
http://localhost:8080/test/myservlets/Hello.do



References

  1. Server Configuration and Deployment
    1. [Maven Documentation] Maven Server Configuration
      1. The repositories for download and deployment are defined by the repositories and distributionManagement elements of the POM. However, certain settings such as username and password should not be distributed along with the pom.xml. This type of information should exist on the build server in the settings.xml.
    2. [Java Thinking] Deploying to Tomcat 7 with Maven
      1. Short and Simple Tutorial
    3. [Stackoverflow] Settings.xml
      1. The settings.xml file is part of the maven settings and is not specific to tomcat, though the tomcat-maven-plugin uses the servers defined there.
  2. POM Editing and Conventions:
    1. [Maven Documentation] Naming Conventions
      1. Guide to naming conventions on groupId, artifactId and version.
    2. The POM Editor
      1. I prefer to use Notepad++ for XML editing.
      2. Eclipse also has a form-based POM editor.



Troubleshooting

  1. Connection Refused
     [INFO] ------------------------------------------------------------------------ 
    [INFO] BUILD FAILURE
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 9.099 s
    [INFO] Finished at: 2015-01-05T12:49:10-08:00
    [INFO] Final Memory: 14M/384M
    [INFO] ------------------------------------------------------------------------
    [ERROR] Failed to execute goal org.apache.tomcat.maven:tomcat7-maven-plugin:2.2:deploy (default-cli) on project sandbox-simple: Cannot invoke Tomcat manager: Connection refused: connect -> [Help 1]
    org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.tomcat.maven:tomcat7-maven-plugin:2.2:deploy (default-cli) on project sandbox-simple: Cannot invoke Tomcat manager
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:216)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:120)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:347)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:154)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:582)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:214)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:158)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:483)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
    Caused by: org.apache.maven.plugin.MojoExecutionException: Cannot invoke Tomcat manager
    at org.apache.tomcat.maven.plugin.tomcat7.AbstractCatalinaMojo.execute(AbstractCatalinaMojo.java:141)
    at org.apache.tomcat.maven.plugin.tomcat7.AbstractWarCatalinaMojo.execute(AbstractWarCatalinaMojo.java:68)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:132)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
    ... 19 more
    Caused by: java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.connect0(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:345)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:589)
    at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:117)
    at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:178)
    at org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:304)
    at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:610)
    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:445)
    at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:863)
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
    at org.apache.tomcat.maven.common.deployer.TomcatManager.invoke(TomcatManager.java:742)
    at org.apache.tomcat.maven.common.deployer.TomcatManager.deployImpl(TomcatManager.java:705)
    at org.apache.tomcat.maven.common.deployer.TomcatManager.deploy(TomcatManager.java:388)
    at org.apache.tomcat.maven.plugin.tomcat7.deploy.AbstractDeployWarMojo.deployWar(AbstractDeployWarMojo.java:85)
    at org.apache.tomcat.maven.plugin.tomcat7.deploy.AbstractDeployMojo.invokeManager(AbstractDeployMojo.java:82)
    at org.apache.tomcat.maven.plugin.tomcat7.AbstractCatalinaMojo.execute(AbstractCatalinaMojo.java:132)
    ... 22 more
    [ERROR]
    [ERROR] Re-run Maven using the -X switch to enable full debug logging.
    [ERROR]
    [ERROR] For more information about the errors and possible solutions, please read the following articles:
    [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
    1. Solution:
      1. Make sure the Tomcat Server is started locally
      2. eg. $TOMCAT_HOME instartup.sh
  2.  FAIL - Deployed application at context path /sample but context failed to start
    1.  This is a common error message with a variety of possible solutions.  
      1. The assumption is that the project build and the server deployment were successful, but the WAR artifact was unable to start on the server.  
      2. This means that both the project (by itself) and the server (by itself) are working properly, but when taken together, there is some incompatibility.
    2. Possible Solution:
      1. My Maven POM configuration had the JDK version 1.8 in the source and target element text areas.  
        1. [StackOverflow] Tomcat 7 is only compatible with JDKs 6 and 7.

    Read more »

    Monday, July 3, 2017

    Deathnugget Project about to come to a close

    Deathnugget Project about to come to a close


    I posted about ... well ... two times about my spellpower deathknight project. The idea was mainly to see how much hostility Id be subjected to just for wearing spellpower gear on a deathknight. The second part of the project was to see if it ever actually got hard to level.

    The second part is easiest to answer: No, it didnt. Even wearing the entirely wrong set of shoulders, chest armour and two trinkets didnt lead to impossible quests, unbeatable mobs and lots of quiet crying. In fact, this was the fastest character I ever leveled to 80.


    2 days and 22 hours isnt all bad. Most of the time was taken up by getting mining and flowerpicking to high levels anyway. I dont like moving through the outlands without being able to grab everything harvestable on the floor. Obviously, starting at 55 does give a tad of a boost there.

    (image taken from here - just in case you want to buy one now)

    Now, how was progress up to 80, though? Pretty much the same as Ive posted about before. I got mostly comments on the robe, very occasionally on the matching shoulders. No one in all the leveling ever commented on the "spellpower/restore mana on kill" trinkets. Two of them. Most of the time I didnt really get around to spouting some nonesense about how much I prefered the colour and the cut and a fresh breeze around my undead privates - some other member of the party would usually speak up and say something like "Oh, its all about the experience bonus". A shame really.

    I met some oddities on the way to Northrend as well. Like this druid who, err, apparently had bought his account. Now Im not about to fling that accusation around randomly, but there are a few hints.

    Let me post a picture to clarify:



    This is a level 80 druid (and to the best of my knowledge it is not actually possible to level to 80 in the old lands), who has at least some Icecrown Citadel faction and has actually been inside. Yet, the boat to Northrend was a new discovery. Sure, there are a few possible solutions - the player could have leveled entirely through the dungeon finder and always been summoned to ICC. The player could have taken the boat from Menethil Harbour and never actually set foot in Stormwind Harbour. It did all sound very fishy, though. More fishy than the normal harbour smell.

    (image taken from here)

    Right. Back on topic, though. Hostility even through the Northrend instances was actually low. I didnt once get kicked from a group (although proper dps probably played a role) and there were only two people that were remarkable in the whole experiment. Let me show you the details:


    The usual reply to "why are you wearing a robe" apparently prompted a comment on my sexual orientation. I assume this just shows that around 11.12 in the mornings too many teenagers are online. Odd, though.

    Note the other party member once again coming to my defence for no good reason at all. Just explaining that this is a perfectly accetable set, apparently. Or maybe thats just Lightbringer *suspicious of the server, suddenly, nodnod*.



    More along the lines of what I had expected was this masterpiece of conversation. Here I was in the middle of explaining to him that he didnt even notice the spellpower trinkets and he threatened real life physical violence. Interesting. I have not had that before. And on my very own server, too. With a very cunningly chosen name - although I can hardly complain about that now, can I?

    So ... it all came to a close near the end. I did actually reach level 80. I wanted to do one last thing before grabbing a fresh mining pick and settling down to wait for Cataclysm. One Northrend Heroic. Any of them. Really - I wasnt picky.

    Unfortunately the problems were not players - it was the bloody game itself.


    Apparently my leveling gear was too bad to even try a heroic. Any of them. Utgarde Keep was out. Seriously?

    Oh well... a little bit of shopping made it all work out in the end. I had to buy a few green rings of the auctionhouse and craft boots, belt and gloves of the iLevel 187 pvp set.

    Upped my Gearscore immensely, too.


    Which finally got me an instance. Heroic Draktharon Keep - my personal Oculus. I hate the instance and I get it a lot more than anything else.


    The party took almost all the way to Trollgore before the commenting started - and it then held on a little. A bit more hostile than previously - but still not really bad. Spinks and Poek (in the comments) had apparently a lot worse happen to them in normal groups.


    There were even sensible suggestions on how to improve the gear. Not entirely friendly - and certainly not what a real noob would deserve - but not horrid.

    And hey - for the first time since I started this project I was not actually at the top of the epeen-meters.

    Look ... just barely above the tank.

    Read more »

    Monday, June 19, 2017

    Dead Or Alive 5 XB360 Unlike project Epsilon this was not a failure

    Dead Or Alive 5 XB360 Unlike project Epsilon this was not a failure


    The first time I played Dead or Alive was Dead or Alive 2: Hardcore for the PS2. Fairly sure it was the first PS2 game I ever owned, and man did I play the shit out of that one. A fairly simplistic one on one fighter with some interesting characters, fun and fast combat, and tons of costumes to unlock. It also had a story, but good fucking luck trying to make sense of it. Despite it being fully voice acted, even if you played all the stories it didnt really help clear things up.

    In any case, Ive followed the game gradually as it worked its way from console to console. Despite the addition of new characters in each game, there didnt seem to be a whole lot of innovation to the franchise. Some of the story got even more muddled from what little they gave you, and it has some bizarre spin offs where you play beach volleyball and oogle the characters boobies. That being said, I still love it as a fighting game so I picked up the new one after the holiday to see how it holds up.

    DEAD OR ALIVE 5: (XB360)

    As I fired the game up, I immediately took note that not much seemed to change right out the gate. I was able to fire it up and jump right into the arcade mode and basically it felt like all the other installments of the game. First thing I really want to make note of in this review, is that the graphics in this game have been immensely improved from the previous installments. All of the characters have have lost kind of the animeish looking eyes that they used to have to favor a more realistic and human looking facial features. I actually really liked the change. 

    Although, the ladies in this game still move around like they stuffed a pair of water balloons down their shirts and they are standing on the deck of a boat in the storm. The devs actually wanted to tone down the jiggle physics in the game to try to give it a more realistic an serious bent, but the fans pissed and cried about it till they changed it back (something I will now refer to as "Mass Effecting" the game and devs).


    I would like to give a  massive thank you to the people at Tecmo for adjusting the difficulty a bit in this one. Dead or Alive 4s was downright murderous on pretty much any difficulty setting you chose. Now at least in this game you have some options. 

    For all the major play modes outside of story mode, they are broken up into courses ranging from Rookie to Legend. With each step up in rank, so does the difficulty and in the case of the survival mode so does the number of people to fight.

    Thank you to DOA5 for bringing that back, by the way. In one on one fighters if you dont play games online like I do, then you will find yourself getting bored sooner than later when you complete the story. Survival mode should be a standard that is in on every one on one fighter. It should be executed like DOA5 does it where as soon as you beat an enemy, the next one jumps in immediately  No load times, no screen transition, the action just keeps moving. 


    All of the other modes are fairly unremarkable. Arcade mode, which is just 8 fights in a row 2 rounds.  Time attack mode: which is the same as arcade but it keeps your total play time. Both of which of those modes you can play single or tag team. And the aforementioned survival mode. There is also a spectator mode where you can watch too computer players go at it as well while you take pictures. But lets face it, people use this mode to get upskirt shots or freeze them in peculiar positions, such as Kasumis face straddling throws. 

    The actual combat of the game hasnt changed much since DOA2: Hardcore but they have polished and sharpened things up. The game is ideal because any button masher can pick the game up and start wailing away on people, but every character has a massive repertoire of moves that you can run through in training mode. So there can be a lot of technically pleasings ways to play as well. Im a big fan of using Helena because her combos switch from low to high constantly and they are tricky to counter.

    As the new girl, Milas move set is kinda a limited compared to everyone else
    But god damn is she fun to use. 
    Speaking of which, the countering system is probably the most polished its ever been. In DOA2  you could pretty much hit back and hold and it would reverse pretty much any move the enemy threw at you. Fun against the computer but in 2 player it just resulted with two players constantly grabbing at air. 

    Now their "Rock, Paper, Scissors" system of combat actually as some substantial balance to it. You can actually fling some punches or kicks because the countering system requires more precision to execute, namely by hitting a direction to correspond to high, med, and low attacks. They had this in DOA4 but it always felt more like a roll of the dice. I feel like I have better control here.


    Its roster is bigger than its ever been. With pretty much all of the 17 main characters returning for the 5th installment, it introduces 2 new characters in Mila: the foxy MMA style fighter and Rig: who uses Taekwondo. Both of them bring in fighting styles not previously in the game, which make them both fun alternatives to the already extensive cast.

    Also, this edition of Dead or Alive marks another first as it started to cross over with competing fighting game Virtua Fighter as some of that series established veterans in Sarah, Akira, and Pai Chan make an appearance. I havent unlocked Pai yet but Sarah and Akira both fit in seamlessly. It had been a while since I last played a Virtua Fighter but it took little time to re-acclimate to using Sarah. Where is Jacky though?


    This is kind of a nit picky thing to keep complaining about, but seriously? Fuck downloadable content. Im really getting tired of pissing and moaning about this but it makes me angry each time. One of my favorite reasons for playing DOA2: Hardcore was all the of the cool and different costumes you can unlock by continually playing your favorite characters. Some of the girls have upwards 6 or 7 different costumes a piece. That to me is awesome, fun to do, and gives me a reason to keep playing the game.

    And while DOA5 boasts a pretty sizable number of costumes, a lot of the nifty and fun cosplay types arent in there. Why? because you have to pay extra for them in DLC. Doing the math? To get all the extra costumes for the game you have to pay upwards 5000 or more Microsoft points, which is like an additional 50 bucks. Im sorry, but thats absolute bullshit. Costumes for characters shouldnt be anything more than 50 cents tops.  

    Make DLC have sizable and significant changes to the game. I will download the free ones you have offered (and I might bite on the maid pack since I dig that look, {Dont judge me}) you can go fuck yourself with your stupid downloadable content. 

    I uh... Yep, totally playing this game for the fighting. Yep...
    Credible game journalist.. thats me. 
    Now, youll notice that I didnt start this review going into the story line like I usually do. There are two reasons why I did it this way. One, the story in this game is so muddled up and complex that I cant really find a way to narrow it to one paragraph. And two, its because I wanted to save this for last because this is the area of the game where DOA5 has made some DRASTIC improvement. 

    Usually in fighting games, the story mode usually consists of some small prologue when you start then you play the game via arcade mode. Occasionally youll get a cut scene mid game and then an ending after you beat the last boss. I would say the Tekken Series and the Street Fighter Alpha series probably perfected this style. For this genre of game, it worked for the most part. But if you really wanted the whole "story" of this type of game, youd really need to play through it with every character. For some of these games, thats pretty daunting. 

    Persona 4 Arena did an interesting try with the story where it functioned a lot like its RPG roots where you had a lot of character interaction and story telling between the fight sequences  Ill admit it did a great job in telling a story, but there was WAY too much of it for the amount of fighting you do. Ended much too quickly and it could get boring. 

    Dead or Alive 5 has shaken up this formula. Since many of the characters in the DOA universe are connected you dont get to select a character and jump right in. The game sets you on a timeline, and shows you many animated fully voice acted cut scenes that pick up after the end of 4. It gives the story some real meat to it, and none of the cut scenes run on so long that it gets too excessive between the fights. At least not like Persona 4 Arena did. 

    The timeline jumps from character to character and you play about 3 fights with each of them. Some of them are looking to win the DOA tournament, some are looking to hone their fighting abilities, but the real linchpin of the story focuses on the ninja characters and their battles against DOATEC. 

    When using characters not tied to the main story, the pacing can get light  hearted
     or downright silly, but it doesnt really affect the overall story too badly
    To give a brief summary, Helena tried to destroy DOATEC for their work with weapons at the end of 4 before she was rescued by Zack (who still sucks). Two years later she has assumed control of the company and is trying to right its goals to more peaceful aspirations and has partnered up with Kasumi on her hunt for the clones of her(Kasumi) created by DOATEC to be sold as elite ninja weapons. Hayate, Ayane, and Ryu Hayabusa continue their hunt for Kasumi for abandoning the clan, although there appears to be a desire amongst them and Helena to see this misunderstanding come to close so Kasumi may return home.

    Some of the cut scenes can drag on. If you watch the youtube of all them cut together (see below if you dont wanna get the game), its the length of a full feature film. That being said, this is probably the best story telling that this franchise has ever done. Now the dialog between the characters actually makes sense because I am getting the exposition to explain what the fuck is actually going on. I still dont know what project epsilon is or why it was a failure, but at least I have a better idea than I did in DOA2: Hardcore.


    But with such a intricate story line focused on the ninja chracters, I have to wonder why they never tried to do a Ninja Gaiden spin off featuring the DOA characters? A fast paced hack and slasher where you jump from the perspectives of Kasumi, Ayane, Hayate, and other DOA characters? I would totally play that, if it was based of Ninja Gaiden 1 and 2 of course. Never 3. 

    Fuck this got wordier than I wanted it too. Alright, to wrap this up I can acknowledge that this game will never be seen on the same tier of fighters than say Street Fighter, Tekken, or even Soul Calibur. But this is a franchise that Ive always had a soft spot for, and this installment has done a lot to work out many of the problems I had with the franchise. 

    If you are new to the series, or a seasoned veteran you can take my opinion for what its worth. Dead or Alive 5 is a fast, fun to play fighter with tightened, simple controls and a massive story and graphic overhaul. This installment is easily the best in the series. It will be hard for the next installment to top this one. 

    Read more »

    Monday, April 24, 2017

    Day Camp 4 Developers Project Management

    Day Camp 4 Developers Project Management


    Just over three of weeks ago I attended the third online Day Camp 4 Developers event, which this time focused on the subject of project management. The DC4D events are aimed at filling the "soft skills" gap that software developers can suffer from, and rather than being a "how-to" on project management (arguably there are already plenty of other places you can learn the basics) the six speakers covered a range of topics around the subject - some of which I wouldnt initially have thought of in this context (for example, dealing with difficult people). However as one of the speakers noted, fundamentally project management is as much about people as it is about process, and all of them delivered some interesting insights.

    The first talk (which unfortunately I missed the start of through my own disorganisation) by Brian Prince about "Hands-on Agile Practices" covered the practical implementation of Agile process in a lot of detail. Ive never worked with Agile myself, but I have read a bit about it in the past and Brians presentation reminded me of a few Agile concepts that sound like they could be usefully adopted elsewhere. For example: using "yesterdays weather" (i.e. statistically the weather tomorrow is likely to be the same as todays) as a way to plan ahead by considering recent performance; and the guidelines for keeping stand-up meetings concise could also be applied to any sort status meeting (each person covers the three points "what I did yesterday", "what Im doing today and when it will be done", and "what issues I have"). The idea of focusing on "not enough time" rather than "too much to do" also appealed to me.

    The next presentation "Dealing with Difficult People" by Elizabeth Naramore turned out to be an expected delight. Starting by asking what makes people you know "difficult" to interact with, she identified four broad types of behaviour:
    • "Get it done"-types are focused on getting information and acting on it quickly, so their style is terse and to-the-point,
    • "Get it right"-types are focused on detail, so their style is precise, slow and deliberate,
    • "Get along"-types are focused on making sure others are happy, so their style is touchy-feely and often sugar-coated, and
    • "Get a pat on the back"-types are focused on getting their efforts recognised by others, so their style is more "person-oriented".
    The labels are instantly memorable and straight away Im sure we can all think of people that we know who fit these categories (as well as ourselves of course). Elizabeth was at pains to point out that most people are a mixture of two or more, and that none of them are bad (except when someone is operating at an extreme all of the time). The important point is that they affect how people communicate, so if you can recognise and adapt to other peoples styles, and learn to listen to them, then youll stand a better chance of reducing your difficult interactions.

    Rob Allen was next up with "Getting A Website Out Of The Door" (subtitled "Managing a website project"), and covered the process used at Big Room Internet for specing, developing and delivering website projects for external clients. Rob included a lot of detail on each part of the process, what can go wrong, and how they aim to manage and reduce the risks of that happening. One specific aspect that I found interesting was the change control procedure, which is used for all change requests from their clients regardless of the size of the change, essentially:
    • Write down the request
    • Understand the impact
    • Decide whether to do it
    • Do the work!
    I think that the second point here is key: you need to understand what the impact will be, and how much work its really going to be (Im sure weve all agreed at one or another to make "trivial" changes to code which have turned out in practice to be far more work than anyone first imagined). A more general point that Rob made was the importance of clear communication, particularly in emails (which should have a subject line, summary, action and deadline).

    Rob was followed by Keith Casey talking about how "Project Management is More Than Todo Lists". One of the interesting aspects of Keiths talk was that he brought an open source perspective to the subject. In open source projects the contributors are unpaid and so understanding how their motivations differ from doing work paid work is important for the projects to successful: as Keith said early on in his talk, in this case "its about people".

    He argued that people managing open source projects should pay attention to the uppermost levels of Maslows Hierarchy of Needs (where the individual focuses on "esteem" and "self-actualisation"), but there was also a lot of practical advice: for example, having regular and predictable releases; ensuring that bugs and feature requests are prioritised regularly, and that developements should be driven input and involvement by the community. I particularly liked the practical suggestion that frequently asked questions can be used to identify areas of friction that need to be simplified or clarified. He also recommended Karl Fogels book "Producing Open Source Software", which looks like it would be a good read.

    Thursday Brams presentation "Project Management for Freelancers" was another change of direction (and certainly the subtitle "How Freelancers Can Use Project Management to Make Clients Happier than Theyve Ever Been Before" didnt lack ambition). She suggested that for freelancers, project management is at least in part about helping clients to recognise quality work - after all theyre not experts in coding (thats why they hired you), so inevitably they have an issue with knowing "what does quality look like?". (If youve ever paid for a service such as car servicing or plumbing then Im sure you can relate to this.) So arguably one function of project management is to provide a way to communicate the quality of your work. The key message that I took away from Thursdays talk was that "what makes people happy is seeing progress on their projects". Again I felt this was an idea that I could use in my (non-freelancer) work environment.

    The last session of the day was Paul M. Jones talking about "Estimating and Expectations". Essentially we (i.e. everyone) are terrible at making estimates, as illustrated by his "laws of scheduling and estimates":
    • Jones Law: "if you plan for the worst, then all surprises are good surprises"
    • Hofstadters Law: "it always takes longer than you expect - even when you take Hofstadters Law into account"
    • Brooks Law: "adding more people to a late software project will make it even later"
    However there are various strategies and methods we can use to try and make our estimates better: for example, using historical data and doing some design work up front can both provide valuable knowledge for improved estimates. In this context Paul also had my favourite quote of the day: "Its not enough to be smart; you actually have to know things" (something that I think a lot of genuinely clever people can often forget, especially when they move into a domain thats new to them).

    It felt like Paul packed an immense amount of material into this talk, covering a wide range of different areas and offering a lot of practical advice drawn from various sources (Steve McConnells Code Complete, Fred Brooks The Mythical Man Month and Tom DeMarco and Timothy Listers Peopleware: Productive Projects & Teams were all mentioned) both for estimation techniques and for expectation management - where ultimately communication and trust are key (a message that seemed to be repeated throughout the day).

    In spite of a few minor technical issues (the organisers had opted to use a new service called Fuzemeeting, which I guess was still ironing out some wrinkles), overall everything ran smoothly, and at the end I felt Id got some useful ideas that I feel I can apply in my own working life - in the end surely thats the whole idea. It was definitely worth a few hours of my weekend, and Im looking forward to being able to see some of the talks again when the videocasts become available. In the meantime if any of this sounds interesting to you then Id recommend checking out the DC4D website and watching out for the next event!
    Read more »

    Wednesday, April 15, 2015

    Duke Nukem Manhattan Project Download Free Offline PC Game Full


    Genre : Action, Shooting
    Platform : PC
    Language : English
    Size :  202 MB


    Minimum System Requirements

    OS: Windows XP/Vista/7
    Processor: INTEL 2 GHz Dual Core
    RAM: 1 GB
    Sound Card: DirectX Compatible
    DirectX: 9.0c
    Hard Drive: 500 MB free

    Recommended System Requirements

    OS: Windows XP/Vista/7
    Processor: INTEL 2.4 GHz Dual Core
    RAM: 1.5 GB
    Sound Card: DirectX Compatible
    DirectX: 9.0c
    Hard Drive: 500 MB free


    Click On Below Link To Download

    Duke Nukem: Manhattan Project Full Version PC Game Free Download



    Screenshots









    Read more »

    Friday, March 13, 2015

    Project CARS Download Torrent PC PS 4 Wii U Xbox One



    Project CARS is one of the most anticipated racing games of the year. It looks beautiful, it has great physics and will provide lots of options to chose from. It is made by the studio that brought NFS Shift to us, do you remember that great in car camera ?
    Below you can download Project CARS for PC,PS 4,Wii U,Xbox One.

    Project CARS Minimum Requirements

    CPU: Intel Core 2 Quad Q8400 or 3.0 GHz AMD Phenom II X4 940

    RAM: 4 GB

    OS: Windows Vista

    HDD: 20 GB

    Video Card: NVIDIA GeForce GTX 260 or ATI Radeon HD 5770 (1 GB VRAM)

    PC
    PS 4                                                   XBOX ONE
     
    Wii U



    Read more »