Customer Support of GOA: Double IP Boost, Unable to play due to server issues last night.

May 18, 2010 by Reboot · Leave a Comment 

> Customer 17/05/2010 08.59 AM
> Hi,
>
> I’ve bought a double IP boost for three days but was unable to play for the
> most of last night because there apparently were server issues.
> All my friends also gave up after several retries to log in and to join the
> queue, very disappointing performance last night :(
>
> Can you maybe extend my IP boost with a day or something?
>
>
> Best Regards,
> Onno


> Response (GOA.COM) – 17/05/2010 02.53 PM
> Dear Customer,
>
> While it is unfortunate that you were unable to get the full affect of your
> boost, we will not be offering compensation for the server maintenance.
> We are sorry for any inconvenience caused.
>
> Kind Regards,
>
> GOA Customer Support Team


Hi,

I’m very disappointed about this response, I don’t believe this event
should be categorized as server maintenance, there was no notification
whatsoever and the service simply failed. Thus if a paid time-based service
is provided and cannot be delivered, compensate it. We’re talking about a
really small amount here. As a paying customer, yes I was silly enough
to buy the game twice for an amount of 50 euros each (because I was unable
to migrate my US account), I was hoping for a little bit of customer
service.

Thus I’m extremely disappointed with this response, yet even more because
the EU server hasn’t been the brightest star in the sky up until now, still
hoping for that end-game-stats screen :)

Would be nice to enjoy an uninterrupted day of double IP and get the “warm”
treatment from the EU side of LoL.

Kind Regards,
Onno


As expected, they don’t mind that a customer paid credits for a service not (fully) rendered:

Dear Customer,

Thank you for contacting us in relation to your query.
As you have been told, we are not offering compensation for this.
We sincerely apologise for any inconvenience caused by this.

Kind Regards,
GOA Customer Support


I CC’ed Riot Support too ..

Hello,

I definitely understand where you’re coming from, but unfortunately, I can’t help you. We don’t administrate the EU servers at this time, which makes it impossible for me to add/remove/change anything on your account. I’m very sorry for the inconvenience. Please let me know if you have any questions about a US account, and I would be happy to help.

Thanks,
Steven
RIOT Games Support


Lolz, was actually hoping for a day of double IP on my US account instead cause it seems that GOA will probably let me down yet again :D

Thanks for the great response anyway!!!

Kind Regards,
Onno


More context:

As some might know I’ve been playing League of Legends quite extensively over the last couple of months. First at the US server but when some of my friends bought the game via Steam I discovered there was also an European server. Unfortunately account migration was not possible (booo booo) so I also bought it yet again. Now the US server being fantastic, except for maintenance hours being in the morning of the PST region, the EU server was a complete Epic Fail most of the time. I’ve never seen the end game statistics on the EU server, had an enormous amount of disconnects and a lot of crashes (also had to endure them longer because patches are released later), not to mention the never working chat and empty friends list. But this will hopefully come to an end soon when RIOT takes over from GOA.

Riot Games to Publish League of Legends in Europe

Riot Games in Europe: Details & FAQ

TestCase BaseClass for Zend Framework

May 4, 2010 by Reboot · Leave a Comment 

Just sharing some code here. If you’re planning to use the phpunit.xml then you would probably put all the setup logic in the bootstrap. I did a post before about setting up phpunit for Zend Server. Actually I configured the unit tests to run with the Zend Server executable in Zend Studio because it has a larger amount of extensions (Oracle connectivity to start with).

class TestCaseBase extends PHPUnit_Framework_TestCase
{
	/**
	 *	@var Zend_Application
	 */
	public $app;

	public function setUp()
    {
    	if (!defined('APPLICATION_PATH')){
    		define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../../application'));
    	}

    	set_include_path(implode(PATH_SEPARATOR, array(
    		realpath(APPLICATION_PATH . '/../library'),
    		get_include_path(),
			)
		));

		/** Zend_Application */
		require_once APPLICATION_PATH . '/../library/Zend/Application.php';

        $this->app = new Zend_Application('unittest',
        	realpath(APPLICATION_PATH . '/../tests/application/configs/application.ini'));

        $this->app->setBootstrap(realpath(APPLICATION_PATH . '/../tests/application/bootstrap.php'));
        $this->app->bootstrap();

        $bs = $this->app->getBootstrap();
    	/* @var $front Zend_Controller_Front */
    	$front = $bs->getResource("FrontController");
    	$front->addModuleDirectory(realpath(APPLICATION_PATH . '/modules'));

    	$bs->registerPluginResource("modules");
    	$bs->bootstrap("modules");
    }

    public function tearDown()
    {
        /* Tear Down Routine */
    }

    public function log($message, $label = null)
    {
    	if (null != $label) {
    		echo $label . ': ' . $message . "\n";
    	} else {
    		echo $message . "\n";
    	}
    }
}

Convert into Values in Zend_Config_Ini ?!?!?

May 3, 2010 by Reboot · Leave a Comment 

Anyone know why the

“convert the current values in $config into an array”

exists in Zend_Config_Ini (ZF 1.10.4)?

/**
     * Assign the key's value to the property list. Handles the
     * nest separator for sub-properties.
     *
     * @param  array  $config
     * @param  string $key
     * @param  string $value
     * @throws Zend_Config_Exception
     * @return array
     */
    protected function _processKey($config, $key, $value)
    {
    	/*
		var_dump($config);
		var_dump($key);
		var_dump($value);
		echo '--';
		*/    	

        if (strpos($key, $this->_nestSeparator) !== false) {
            $pieces = explode($this->_nestSeparator, $key, 2);
            if (strlen($pieces[0]) && strlen($pieces[1])) {
                if (!isset($config[$pieces[0]])) {
                    if ($pieces[0] === '0' && !empty($config)) {
                        // convert the current values in $config into an array

                        /* Example ini section.
                        	[initest]
							thats.nice = 'then'
							thats.0.converted = 'ok'
                         */
                    	echo 'converted, but why';

                    	$config = array($pieces[0] => $config);
                    } else {
                        $config[$pieces[0]] = array();
                    }
                } elseif (!is_array($config[$pieces[0]])) {
                    /**
                     * @see Zend_Config_Exception
                     */
                    require_once 'Zend/Config/Exception.php';
                    throw new Zend_Config_Exception("Cannot create sub-key for '{$pieces[0]}' as key already exists");
                }
                $config[$pieces[0]] = $this->_processKey($config[$pieces[0]], $pieces[1], $value);
            } else {
                /**
                 * @see Zend_Config_Exception
                 */
                require_once 'Zend/Config/Exception.php';
                throw new Zend_Config_Exception("Invalid key '$key'");
            }
        } else {
            $config[$key] = $value;
        }

        // dump the result
        var_dump($config);

        return $config;
    }

the result is:

array(1) {
  ["thats"]=>
  array(1) {
    [0]=>
    array(2) {
      ["nice"]=>
      string(6) "'then'"
      ["converted"]=>
      string(4) "'ok'"
    }
  }
}

What a nice Oracle feature: RETURNING INTO Clause

April 27, 2010 by Reboot · Leave a Comment 

Is handy to fetch the number of rows affected by an insert, update or delete statement!

RETURNING INTO Clause

Phrase of the Day: One-Trick Pony.

April 27, 2010 by Reboot · Leave a Comment 

Wiktionary: “One-Trick Pony”

And a colleague of mine likes to wear this priceless t-shirt: More Dots

Installing PHPUnit to run phpunit.xml for Zend Server 5.3.1

April 22, 2010 by Reboot · Leave a Comment 

1. Install PEAR by running go-pear.bat

if it starts to complain about: “… does not have a signature …” change the go-pear.bat to the following:

@ECHO OFF
set PHP_BIN=php.exe
%PHP_BIN% -d output_buffering=0 -d phar.require_hash=0 PEAR\go-pear.phar
pause

In windows the last part of the output will be something like:

Would you like to alter php.ini ? [Y/n] :

php.ini include_path updated.

Current include path : .
Configured directory : D:\Zend Server 5.3.1\ZendServer\bin\pear
Currently used php.ini (guess) : D:\Zend Server 5.3.1\ZendServer\etc\php.ini
Press Enter to continue:

** WARNING! Old version found at D:\Zend Server 5.3.1\ZendServer\bin, please remove it or be sure to use the new d:\zend
server 5.3.1\zendserver\bin\pear.bat command

The ‘pear’ command is now at your service at d:\zend server 5.3.1\zendserver\bin\pear.bat

* WINDOWS ENVIRONMENT VARIABLES *
For convenience, a REG file is available under D:\Zend Server 5.3.1\ZendServer\bin\PEAR_ENV.reg .
This file creates ENV variables for the current user.

Double-click this file to add it to the current user registry.

2. Update pear:

pear channel-update pear.php.net

and

pear upgrade pear

3. Install PHPUnit via PEAR by running:

pear channel-discover pear.phpunit.de

and

pear install phpunit/PHPUnit

see also: Chapter 3. Installing PHPUnit

TIP: Get the proper code completion in Zend Framework.

April 19, 2010 by Reboot · Leave a Comment 

Some of the standard code completions don’t work properly because various Zend Framework classes redirect method calls by using the magic method “__call($method, array $options)”. For example Zend_Translate does not include the addTranslation method but redirects the call to the applied adapter. You can add a document property which enables the correct code completion. Unfortunately it will only complete the adapter’s methods then, but the adapter does include the methods which you probably want to see completed/documented. The question remains if the whole magic method redirection is a nice way to implement an adapter pattern.

/* @var $translate Zend_Translate_Adapter_Array */
$translate = new Zend_Translate('Zend_Translate_Adapter_Array', $us, 'en_US');
$translate->addTranslation($nl, 'nl');

TIP: Missing Zend Framework Errors?!?

April 19, 2010 by Reboot · Leave a Comment 

If you happen to use Zend tool to create a project and globally turn off the view rendering in your control logic, the error controller will also neglect to show a stack-trace or error details. Add the following code to the error controller just in case.

public function __construct(Zend_Controller_Request_Abstract $request, Zend_Controller_Response_Abstract $response, array $invokeArgs = array()) {
	parent::__construct($request, $response, $invokeArgs);
	$this->getFrontController ()->setParam ( "noViewRenderer", false );
}

It’s also better to disable the view rendering for specific controller actions and not globally, hence the Zend Framework documentation explains it best:

Class FooController extends Zend_Controller_Action {
	public function init() {
		// Local to this controller only; affects all actions,
		// as loaded in init:
		$this->_helper->viewRenderer->setNoRender ( true );

		// Globally:
		$this->_helper->removeHelper ( 'viewRenderer' );

		// Also globally, but would need to be in conjunction with the
		// local version in order to propagate for this controller:
		Zend_Controller_Front::getInstance ()->setParam ( 'noViewRenderer', true );
	}
}

More detailed information at:
Action Controllers

« Previous PageNext Page »