Thursday, April 17, 2014

Repair Windows Store

If after cleanup you accidentally deleted Windows store files from your profile directory - the store will not work anymore. Here is how I repaired mine:
  1. Create a new user
  2. Log in as the new user (you will need to wait a little)
  3. Go to store
  4. Install an app
  5. Sign out
  6. Log in as your regular user
  7. Copy folder starting with WinStore_xxxxxxxx from the new user profile located in C:\Users\<New User>\AppData\Local\Packages to corresponding location in your profile directory.
  8. Check if the store is working
  9. Reinstall all your store applications
  10. Delete the new user (optional)

Thursday, January 16, 2014

How to enable APC caching for Doctrine Zend 2 module

  
 array(
        'connection'    => array(
            // connection configuration
        ),
        'configuration' => array(
            'orm_default' => array(
                'generate_proxies' => false,
                'metadata_cache'   => 'apc',
                'query_cache'      => 'apc',
                'result_cache'     => 'apc',
            ),
        ),
    )
);

You can see list of other types of supported caches in the doctrine module source.

How to generate doctrine entities from database

Following command is executed from /home/projects/zend-skeleton/vendor/bin folder:
  
./doctrine-module orm:convert-mapping --from-database annotation --namespace="Application\Entity\\" 
/home/projects/zendskeleton/module/Application/src
Note: In the latest version of doctrine module you can also run it from project root directory like this:
  php public/index.php orm:convert-mapping --from-database annotation --namespace="Application\Entity\\" 
/home/projects/zendskeleton/module/Application/src
Generated entities will be in folder /home/projects/zendskeleton/module/Application/src/Application/Entity/ and will have namespace Application\Entity. If you have enum types in the database you have to add following lines to application configuration:

 'doctrine_type_mappings' => array(
  'enum' => 'string'
 );
  
so it looks like this:

 array(
        'connection' => array(
            'orm_default' => array(
               'driverClass'=>'Doctrine\DBAL\Driver\PDOMySql\Driver',
               'params'      => array(
                   'host'     => 'localhost',
                   'dbname'   => 'xxxx',
                   'user'     => 'xxxx',
                   'password' => 'xxxx'
               ),
               'doctrine_type_mappings' => array(
                   'enum' => 'string'
               )
            ),
        )
    )
);
  

Saturday, November 2, 2013

How to setup Phalcon framework under Windows 8 for PHP 5.5 and Netbeans

Compiling PHP extension

  1. Download and install Microsoft Visual Studio Express 2012. Microsoft removed it from downloads - for the moment you can find it at Softpedia .
  2. Create the folder C:\php-sdk
  3. Unpack the binary-tools archive (php-sdk-binary-tools-20110915.zip) into this directory, there should be one sub-directory called bin and one called script
  4. Open VS2012 x86 Native Tools Command Prompt (it's available from the start menu group)
  5. Execute the following commands:
    cd c:\php-sdk\
    bin\phpsdk_setvars.bat
    bin\phpsdk_buildtree.bat php
    
  6. Create C:\php-sdk\php\vc11 directory and copy content from vc9 one
  7. Extract PHP source code for Windows (you can download it from http://windows.php.net/downloads/releases/) in C:\php-sdk\php\vc11\x86
  8. Download  libraries required to build PHP and extract them in C:\php-sdk\php\vc11\x86\deps
  9. Create directory C:\php-sdk\php\vc11\x86\php\ext\phalcon 
  10. Download Phalcon source from Github
  11. Copy files from Phalcon source build\32bits directory in C:\php-sdk\php\vc11\x86\php\ext\phalcon 
  12. Run following commands:
    cd C:\php-sdk\php\vc11\x86\php
    buildconf
    configure --disable-all --enable-cli --enable-phalcon=shared
    nmake
    
  13. The php_phalcon.dll after the compilation is located in C:\php-sdk\php\vc11\x86\Release_TS\
Note: Above steps are based on https://wiki.php.net/internals/windows/stepbystepbuild and http://internals.phalconphp.com/en/latest/reference/compilation.html . They are for building 32-bit version of extension . Precompiled version for PHP 5.5.5 is here .

Enable Phalcon extension

In php.ini add following:
extension=php_phalcon.dll

Configure code completion for Netbeans

  1. Download Phalcon Developer Tools . How to setup them is described in documentation 
  2. In ide directory there is gen-stubs.php script. You have to point 'CPHALCON_DIR' to where your extracted phalcon source is, then run:
    php ide/gen-stubs.php
    This will create ide subdirectory in which you will find directory with your Phalcon version as name. In latter there is Phalcon subdirectory - copy it in your Netbeans php\phpstubs\phpruntime directory. Now you will have code completion for Phalcon.

Monday, October 21, 2013

Codeception: Phantomjs setup for WebDriver when using self-signed SSL certificate

When using phantomjs as browser for acceptance tests with WebDriver in Codeception - if the targeted site is using self-signed SSL certificate tests will fail. To avoid that - phantomjs must be started with --ignore-ssl-errors=true command line option. Here is an example acceptance.suite.yml configuration:

# Codeception Test Suite Configuration
# suite for acceptance tests.
# perform tests in browser using the Selenium-like tools.
# powered by Mink (http://mink.behat.org).
# (tip: that's what your customer will see).
# (tip: test your ajax and javascript by one of Mink drivers).

# RUN `build` COMMAND AFTER ADDING/REMOVING MODULES.

class_name: WebGuy
modules:
    enabled: [WebDriver, WebHelper]
    config:
        WebDriver:
            url: 'https://example.com/'
            browser: phantomjs
            capabilities:
                phantomjs.cli.args: ['--ignore-ssl-errors=true']
Another alternative is to use method from Ghostdriver documentation - Register GhostDriver with a Selenium Grid hub

Thursday, July 18, 2013

First post. Setting up syntax highlighting.

I am using highlightjs. Go to Design->Template->Edit HTML. Add following snippet to the end of head section:

  <head>
        ...
     <link href='http://yandex.st/highlightjs/8.0/styles/sunburst.min.css' rel='stylesheet'/>
     <script src='http://yandex.st/highlightjs/8.0/highlight.min.js'/>
     <script type='text/javascript'>
         hljs.configure({tabReplace: '    '});
         hljs.initHighlightingOnLoad();
     </script>
  </head>
The result:

<?php
  echo 'Hello world!';