Monday, November 14, 2016

Agile Management: Great Answer of Story Points

Great Answer of Story Points

It is a common agile practice to reason in terms of story points instead of hours. You can learn more about why we do so here.
The velocity concept, instead, is well explained in this blog post.
I don't want to complicate things, so I will answer to your question speaking in terms of hours.
Let's imagine that you are on the first iteration with a brand new team.
In such a case, you can assume that the team will be "really" working for about 70% of their available time. You are considering the fact that the remaining 30% will be taken up by other tasks not related with development (paperwork, e-mails, phone calls, etc.).
It is wise to start with a conservative estimate. The idea is to adjust your estimation in the next iteration and use it to determine how many hours of work can go in the next sprint.
Let's give a look at your example (a team with 3 developers, working 5 days per week, at 8 hours a day):
3 (number of developers) * 5 (days) * 8 (available working hours per day) * 0.7 (initial estimation) = 84("real" working hours that your team can handle in one week)
Based on your question, I think that it could be good for you to search more information about the concept of Definition of Done (DoD) as well. You can start from here.
I understand that in your organization testing is separate from development. This is not the best agile approach, but it is (sigh!) common. You can find some interesting information in this answer to the question "How to fit testing in Scrum sprints and how to write user stories in Scrum" on Programmers Stack Exchange. Give a look also at this blog post about testers working in an agile team.
It is complicated to tell you what is best for your team and organization based only on the information provided. My understanding is that you are working with one-week sprints. You wrote that, according to your experience, it is better to leave the last day for testers to do their job. In this case, if I were you, I would probably continue to consider 5 working days. The team needs to speak with the Product Owner and organize the Sprint Backlog to have user stories that fit into 4 working days to be done (so that they can be sent to the testers team in the same iteration) plus another story (or more) that can be done in the last day (to be sent to testers in the next iteration).

Reference:
http://pm.stackexchange.com/questions/15069/how-to-calculate-sprint-capacity
https://www.scrumalliance.org/community/articles/2015/march/determine-the-team%E2%80%99s-available-working-hours-to-en

Tuesday, November 8, 2016

Ubuntu: How to Install Tuleap Docker

Docker-Tuleap

Deploy a Tuleap inside a docker container
More info about Tuleap on tuleap.org

How to use it?

First run:
$> docker volume create --name tuleap-data
$> docker run -ti -e VIRTUAL_HOST=localhost -p 80:80 -p 443:443 -p 22:22 -v tuleap-data:/data enalean/tuleap-aio
Will run the container, just open http://localhost and enjoy!
p/s: replace localhost with your server ip.
You can get the site administrator credentials to log in the first time with:
$> docker exec -ti <container_name> cat /data/root/.tuleap_passwd
On other, regular runs:
$> docker run -d -p 80:80 -p 443:443 -p 22:22 -v tuleap-data:/data enalean/tuleap-aio

Ubuntu: How to Install Docker in Ubuntu 16.04 LTS VMWare

To Prepare Ubuntu
  1. Download Ubuntu version 16.04 from https://www.ubuntu.com/download/server
  2. Open VMWare and install Ubuntu with downloaded file.
To Install Docker


Update your apt sources

Docker’s APT repository contains Docker 1.7.1 and higher. To set APT to use packages from the Docker repository:
  1. Log into your machine as a user with sudo or root privileges.
  2. Open a terminal window.
  3. Update package information, ensure that APT works with the https method, and that CA certificates are installed.
    $ sudo apt-get update
    $ sudo apt-get install apt-transport-https ca-certificates
    
  4. Add the new GPG key.
    $ sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
  1. Run the following command, substituting the entry for your operating system for the placeholder <REPO>.
    $ echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" | sudo tee /etc/apt/sources.list.d/docker.list
    
  2. Update the APT package index.
    $ sudo apt-get update
    
  3. Verify that APT is pulling from the right repository.
    When you run the following command, an entry is returned for each version of Docker that is available for you to install. Each entry should have the URL https://apt.dockerproject.org/repo/. The version currently installed is marked with ***.The output below is truncated.
    $ apt-cache policy docker-engine
    
      docker-engine:
        Installed: 1.12.2-0~trusty
        Candidate: 1.12.2-0~trusty
        Version table:
       *** 1.12.2-0~trusty 0
              500 https://apt.dockerproject.org/repo/ ubuntu-trusty/main amd64 Packages
              100 /var/lib/dpkg/status
           1.12.1-0~trusty 0
              500 https://apt.dockerproject.org/repo/ ubuntu-trusty/main amd64 Packages
           1.12.0-0~trusty 0
              500 https://apt.dockerproject.org/repo/ ubuntu-trusty/main amd64 Packages
           1.11.2-0~trusty 0
              500 https://apt.dockerproject.org/repo/ ubuntu-trusty/main amd64 Packages
           1.11.1-0~trusty 0
              500 https://apt.dockerproject.org/repo/ ubuntu-trusty/main amd64 Packages
    
    From now on when you run apt-get upgradeAPT pulls from the new repository.

Prerequisites by Ubuntu Version

  • Ubuntu Xenial 16.04 (LTS)
For Ubuntu Trusty, and Xenial, it’s recommended to install the linux-image-extra-* kernel packages. The linux-image-extra-* packages allows you use the aufs storage driver.
To install the linux-image-extra-* packages:
  1. Open a terminal on your Ubuntu host.
  2. Update your package manager.
     $ sudo apt-get update
    
  3. Install the recommended packages.
     $ sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual

Install

Make sure you have installed the prerequisites for your Ubuntu version.
Then, install Docker using the following:
  1. Log into your Ubuntu installation as a user with sudo privileges.
  2. Update your APT package index.
     $ sudo apt-get update
    
  3. Install Docker.
     $ sudo apt-get install docker-engine
    
  4. Start the docker daemon.
     $ sudo service docker start
    
  5. Verify docker is installed correctly.
     $ sudo docker run hello-world
    
    This command downloads a test image and runs it in a container. When the container runs, it prints an informational message. Then, it exits.


You can find more docker installation step for other ubuntu version from this link https://docs.docker.com/engine/installation/linux/ubuntulinux .

The most common issue to install in other Ubuntu version is "Cannot locate docker-engine". It is because docker packge has been existed inside Ubuntu repo, you can try the following command to install docker.

sudo apt-get install docker.io


Ref:
https://docs.docker.com/engine/installation/linux/ubuntulinux/
http://stackoverflow.com/questions/39645118/docker-unable-to-locate-package-docker-engine

Monday, May 16, 2016

Excel: Procedure to export a text file with both comma and quote delimiters in Excel


Before you work with the following sample code, follow these steps:
  1. Open a new workbook.
  2. In Microsoft Office Excel 2003 or in Microsoft Excel 2002, point to Macro on the Tools menu, and then clickVisual Basic Editor. Alternatively, press ALT+F11.

    In Microsoft Office Excel 2007, click the Developer tab, and then click Visual Basic in the Code group. Alternatively, press ALT + F11.

    Note To show the Developer tab in the Ribbon, click the Microsoft Office Button, click Excel Options, click the Popular category, click to select the Show Developer tab in the Ribbon check box, and then clickOK.
  3. In the Visual Basic Editor, click Module on the Insert menu.
  4. Type or paste the following sample code in the module sheet.
    
    Sub QuoteCommaExport()
       ' Dimension all variables.
       Dim DestFile As String
       Dim FileNum As Integer
       Dim ColumnCount As Integer
       Dim RowCount As Integer
    
       ' Prompt user for destination file name.
       DestFile = InputBox("Enter the destination filename" _
          & Chr(10) & "(with complete path):", "Quote-Comma Exporter")
    
       ' Obtain next free file handle number.
       FileNum = FreeFile()
    
       ' Turn error checking off.
       On Error Resume Next
    
       ' Attempt to open destination file for output.
       Open DestFile For Output As #FileNum
    
       ' If an error occurs report it and end.
       If Err <> 0 Then
          MsgBox "Cannot open filename " & DestFile
          End
       End If
    
       ' Turn error checking on.
       On Error GoTo 0
    
       ' Loop for each row in selection.
       For RowCount = 1 To Selection.Rows.Count
    
          ' Loop for each column in selection.
          For ColumnCount = 1 To Selection.Columns.Count
    
             ' Write current cell's text to file with quotation marks.
             Print #FileNum, """" & Selection.Cells(RowCount, _
                ColumnCount).Text & """";
    
             ' Check if cell is in last column.
             If ColumnCount = Selection.Columns.Count Then
                ' If so, then write a blank line.
                Print #FileNum,
             Else
                ' Otherwise, write a comma.
                Print #FileNum, ",";
             End If
          ' Start next iteration of ColumnCount loop.
          Next ColumnCount
       ' Start next iteration of RowCount loop.
       Next RowCount
    
       ' Close destination file.
       Close #FileNum
    End Sub
         
  5. Before you run the macro, select the data that you want to export, and then run the QuoteCommaExportsubroutine.
Ref: https://support.microsoft.com/en-us/kb/291296

Wednesday, May 11, 2016

Set fix IP for Ubuntu running on VMWare Player

You have to edit your /etc/network/interfaces file to read like this

auto eth0
iface eth0 inet static
        address 192.168.246.137
        netmask 255.255.255.0
        network 192.168.246.0
        broadcast 192.168.246.255
        gateway 192.168.246.1

         dns-nameservers 192.168.246.1

Ubuntu: Update Packages


sudo apt-get update        # Fetches the list of available updates
sudo apt-get upgrade       # Strictly upgrades the current packages
sudo apt-get dist-upgrade  # Installs updates (new ones)

Thursday, May 5, 2016

Jira: How to Find Day Count


currentUser() AND status = "On Hold" AND updated <= -5d
Created in the last 5 days would be:
created >= -5d
Resolved in the last 7 days would be:
resolved >= -7d
OR
resolved >= -1w

Report Aging more than 10 days
createdDate >= -10d

Ref: 
http://stackoverflow.com/questions/8362323/how-do-i-query-jira-to-search-for-all-issues-that-have-been-resolved-within-a-le
https://confluence.atlassian.com/jira064/advanced-searching-720416661.html
https://answers.atlassian.com/questions/42077/jira-4.4-searchfilter-how-to-find-issues-resolved-in-last-seven-days
https://answers.atlassian.com/questions/59922/creating-filter-on-tickets-by-age

Friday, April 29, 2016

Ubuntu: How to find out motherboard,BIOS info and CPU ID in Ubuntu

There are a couple of commands that can find out your machine’s motherboard manufacturer,name and other informations,list CPU ID and serial number,BIOS information.

This command gives your CPU ID:

sudo dmidecode -t 4 | grep ID
and serial number:

sudo dmidecode | grep Serial
The CPU information:

sudo dmidecode -t 4
BIOS Information:

sudo dmidecode -t 0
Motherboard information:

sudo dmidecode -t 2
and OEM:

sudo dmidecode -t 11
Reference: http://ubuntuguide.net/howto-find-out-motherboardbios-info-and-cpu-id-in-ubuntu

Thursday, April 14, 2016

Ubuntu: Step by Step Setup SVN Server



References:
http://www3.nd.edu/~zzhang4/doku.php?id=blog:install_and_use_subversion_svn_and_viewvc_on_ubuntu

http://tecadmin.net/how-to-install-and-configure-svn-server-on-ubuntu-linuxmint/#

Issue:
SVN permission denied -txn-current-lock:
solution:
under linux operating system run these commands:# chown -R www-data:www-data /var/svn/*
# chmod -R 770 /var/svn/*

assume that /var/svn/ is where are all your repositories

Thursday, April 7, 2016

Ubuntu tar.gz Command


To create a tar.gz archive from a given folder you can use the following command 

tar -zcvf tar-archive-name.tar.gz source-folder-name 


To extract a tar.gz compressed archive you can use the following command 

tar -zxvf tar-archive-name.tar.gz 

Tuesday, March 29, 2016

Solution for 403-Forbidden Issue

403 error usually refer to incorrect setting in .htaccess or incorrect read right permission with the project folder.

There is a possible happen due to incorrect alias of folder too. So, go to /var/www/html and use the following command to check folder's alias:

ll -Z

To change folder alias, use the following code

chcon -R -t httpd_sys_content_t foldername

Wednesday, March 9, 2016

Linux Command of Backup DB and Compress Files



Export:

mysqldump -u root -p --all-databases > alldb.sql
Look up the documentation for mysqldump. You may want to use some of the options mentioned in comments:
mysqldump -u root -p --opt --all-databases > alldb.sql
mysqldump -u root -p --all-databases --skip-lock-tables > alldb.sql

Import:

mysql -u root -p < alldb.sql

Monday, March 7, 2016

LINUX Command COPY FILE



You can do this with the scp command. scp uses the SSH protocol to copy files across system by extending the syntax of cp.
Copy something from this system to some other system:
scp /path/to/local/file username@hostname:/path/to/remote/file          
Copy something from some system to some other system:
scp username1@hostname1:/path/to/file username2@hostname2:/path/to/other/file   
Copy something from another system to this system:
scp username@hostname:/path/to/remote/file /path/to/local/file

Step by Step Setup Ubuntu Server and LAMP Workstation Package

Chapter 1: How to Create Bootable Ubuntu USB Flash Drive 

  1. Prepare a USB Flash Drive at least 2GB free space. 
  2. Download Universal-USB-Installer
  3. Go to http://releases.ubuntu.com/ and download latest version of Ubuntu iso file.
  4. Go to this guide and install image into USB Flash Drive.
  5. Once finished loaded the image, you can use it as bootable drive.
Chapter 2: How to Setup LAMP Workstation Package

1. To install LAMP, run this command at a terminal:
sudo apt-get install apache2 php5 php5-mysql php5-gd mysql-server

2. To install optional extensions, run this command at a terminal:
sudo apt-get install php5-curl php5-imagick phpmyadmin mysql-workbench php5-cli php5-mcrypt php5-ffmpeg

3. Enable apache modules:
sudo a2enmod vhost_alias rewrite

4. To enable openSSH (allowed putty access from other terminal)
sudo apt-get install openssh-server

5. To Share Folder Between Windows and Ubuntu
sudo mkdir /mnt/hgfs
sudo vmhgfs-fuse .host:/ /mnt/ -o allow_other -o uid=1000

---- outdated ---
You will find directory path /mnt/hgfs if successfully mount, otherwise you have to follow below command to resolved the issue.

sudo vmware-config-tools.pl

or 

$ git clone https://github.com/rasa/vmware-tools-patches.git
$ cd vmware-tools-patches
$ ./patched-open-vm-tools.sh
-----------------


Chapter 3: How to Configure Vhost

1. Configure apache webserver access to your workspace and a catch-all vhost by adding the following to /etc/apache2/httpd.conf:
Copy the following snippet into httpd.conf

<Directory "/var/www/vhosts/">
        Options FollowSymLinks
        AllowOverride All

        Order allow,deny
        Allow from all
</Directory>

NameVirtualHost *
ServerName localhost

Add below to allow perl script or cgi script to be executed

<Directory "var/www/your-cgi-bin-path">
    Options ExecCGI
    AddHandler cgi-script .cgi .pl
</Directory>


Create vhosts folder:
sudo mkdir /var/www/vhosts

If you can't save the httpd.conf, you should be editing it as a user with root permissions - i.e. something like

sudo nano /etc/apache2/httpd.conf

Chapter 4: How to Setup Multisite in Vhost

1. Configure a vhost for each sites by creating a file in /etc/apache2/sites-available as shown below and by updating the file /etc/hosts

Save the following as /etc/apache2/sites-available/001-site1.conf:

<VirtualHost *>
        ServerName site1.com
        ServerAlias dev.site1.com
        DocumentRoot /var/www/vhosts/dev.site1.com
</VirtualHost>


Then edit the file /etc/hosts and add this line at the top:
127.0.0.1       site1.com

2. Enable each vhosts site as needed (definitely the first three lines):
sudo a2dissite default
sudo a2ensite sites1.com

*specify full path of config file if sites not found
sudo a2ensite /etc/apache2/sites-available/xxxx.conf

3. Restart Apache:
sudo service apache2 restart

4. Check your ubuntu IP with following comand
ifconfig

4. Go back to window and edit file C:\Windows\System32\drivers\etc\hosts with following line
192.168.122.1 dev.site1.com


References:
https://groups.drupal.org/node/6266
https://help.ubuntu.com/community/SSH/OpenSSH/Configuring
https://xpressubuntu.wordpress.com/2015/05/11/resolving-no-shared-folders-with-vmware-player-7-and-ubuntu-15-04-guest/comment-page-1/#comment-708
https://phpraxis.wordpress.com/2016/05/16/install-php-5-6-or-5-5-in-ubuntu-16-04-lts-xenial-xerus/
https://superuser.com/questions/1072317/vmware-tools-for-ubuntu-16-04-lts-xenial
https://ericsysmin.com/2017/05/24/allow-hgfs-mount-on-open-vm-tools/