Author Archives: dmitriano

How to debug a PHP script

It could be useful sometimes to know what variables are defined at particular point of PHP script in order to have a better understanding of the code you are debugging. In contrast with C++, PHP has a magic function get_defined_vars ( void ) that  returns an array of all defined variables with their values so we can output all variable names with the following line of code:

print_r(array_keys(get_defined_vars()));

(more…)

How to start Apache OFBiz demo under Ubuntu Server 12.04

Install JDK 6 with the following command:

apt-get install default-jdk

Download the latest OFBiz version, extract it in your home directory and do the following steps described in the README file.

Having apache-ofbiz-XX.XX.XX as the current directory execute the following command:

./ant load-demo

(more…)

How to install Apache Tomcat 7 on Ubuntu Server 12.4 LTS

Today I successfully installed Tomcat 7 on Ubuntu Server 12.4 LTS with the following commands (executed as root):

apt-get install default-jdk
apt-get install tomcat7
apt-get install tomcat7-admin
apt-get install tomcat7-examples

(more…)

Basic Git commands

Git installs as a normal package on Ubuntu:

sudo apt-get install git

Configuring Git user is an optional step:

git config --global user.email "you@example.com"
git config --global user.name "Your Name"

Type the following command to create an empty repository wherever your code is:

cd ~
git init

(more…)

How to compile BOOST with MS Visual Studio 2010-2017

Fortunately, to compile BOOST with MS VC 2010 we need Visual Studio Command Prompt and five commands:

Navigate to BOOST directory, for example:

F:
cd F:\Projects\Lib\boost_1_53_0

(more…)

How to pass a Dictionary<Key, Value> from C# to PHP

I believe that the simplest way to pass complex data from C# to PHP is through WCF service. See my previous post How to implement WCF service in PHP for more details.

Let assume we have a WCF service contract that has the following method with some nested dictionary as a parameter:

[ServiceContract]
public interface IStore
{
    [OperationContract]
    void UpdateRows(Dictionary<int, Dictionary<string, object>> rows);
}

Below I provided the sample implementation of UpdateRows in PHP that iterates through nested dictionaries (first level called ‘rows’ and second level called ‘properties’):

(more…)

WPF TreeView does not support Data Virtualization

WPF implements UI Virtualization via VirtualizingStackPanel and it works great, but situation with Data Virtualization is a bit more complex.

After doing some experimentation I realized that VirtualizingStackPanel when used with WPF TreeView does not allow the data to be virtualized because it iterates through all the collection of data items from inside its MeasureOverride function. However, it access only visible data items when used with DataGrid or ListView, so it allows to use some paging or caching techniques in this case. See the following articles for more information:

If you interested on what I tried to do with TreeView, please read below.

(more…)

Generalization of auto_ptr<T> for working with Win32 API

A long time ago, STL had auto_ptr<Type> class that automatically deleted a dynamically allocated C++ object when control leaves a block. Personally, I believe that auto_ptr<Type> was typically used in simple scenarios as a local variable or a class member but theoretically it is even possible to declare a vector of auto_ptr<Type> because auto_ptr<Type> stores an ownership indicator and its copy constructor transfers the ownership from the instance being copied, so vector::push_back(…) and vector::resize(…) functions works correctly.

(more…)

Setting up Shared Hosting with Nginx on Ubuntu – step by step guide

This is a draft version of the post. It’ll be revised.

Installing Ubuntu Server

  1. Download the latest version of Ubuntu Server. Note that it is not possible to convert Ubuntu 32 bit to 64 bit. The only way is to do a clean install.
  2. Create a bootable USB stick using Pen Drive Linux’s USB Installer.
  3. Boot up from USB and install Ubuntu Server. During the installation you can switch to terminal mode by pressing Alt+F2 and switch back by pressing Alt+F1.

Update the server:

aptitude update
aptitude safe-upgrade

(more…)

Visual Studio 2012 supports Visual SourceSafe

If you installed Visual Studio 2012 and all its source control related menu items shows only TFS, do not panic, Visual Studio 2012 supports Visual SourceSafe very well! The only thing that you need to do is to select source control plug-in under Tools->Options menu:

Visual Studio 2012 supports Visual SourceSafe