Category Archives: Software Engineering

Confluence license

How to find the Server ID

Confluence administration > go to “Administration” category  and select “License  Details” > Server ID

How to create the License Key

Log in to > Licences > Paste the Server ID > The License Key will be generated.


DevOps = Software Development (Dev) + Information Technology Operations (Ops). DevOps is the practice of operations and development engineers participating together in the entire service lifecycle, from design through the development process to production support.

Phases of automated software pipeline:

  • CI – Continuous Integration. Continuous integration (CI) is the practice of automating the integration of code changes from multiple contributors into a single software project. The CI process is comprised of automatic tools that assert the new code’s correctness before integration. A source code version control system is the crux of the CI process. The version control system is also supplemented with other checks like automated code quality tests, syntax style review tools, and more, [1].
  • CD – Continuous Delivery. Continuous Delivery is about making the product ready for deployment.
  • CD – Continuous Deployment. The final stage of a Continuous Integration (CI)/Continuous Delivery (CD) pipeline is Continuous Deployment (CD). In Continuous Deployment (CD), every change goes through an automated pipeline and a working version of the application is automatically pushed to production.

Automated testing is writing code to test your code.

Version control Check-out: To check out is to create a local working copy from the repository. When a file has been checked out from a shared file server, it cannot be edited by other users.


  • Jenkins is a Continuous Integration tool.
  • Selenium is an open source testing tool.
  • JUnit is a unit testing framework for Java.
  • Ansible is a Configuration Management System.
  • Chef is a Configuration Management System.
  • Puppet is a Configuration Management System.
  • Apache Maven is a Build tool for Java.
  • Release and update management,

How to create a virtual machine in VMware Workstation 15.5 Player

Host Operating system: openSUSE Leap 15.1

VMware Workstation Player is free for personal non-commercial use (business and non profit use is considered commercial use).

1. BIOS Settings

    • Example motherboard: Gigabyte AM4 with DualBIOS.
    • Main menu > MIT > Advanced CPU Core Settings > SVM Mode Enabled.
    • Main menu > Chipset > IOMMU Enabled.

DualBIOS means that the motherboard has both a ‘Main BIOS’ and a ‘Backup BIOS’, protecting users from BIOS failure due to virus, hardware malfunction or power failure during the update process. The motherboard has two chips. The M_BIOS (Main BIOS) and the B_BIOS (Backup BIOS).

MIT – Motherboard Intelligent Tweaker

SVM – Secure Virtual Machine

IOMMU – Input-Output Memory Management Unit.

2.  Create a Virtual Machine for Windows 10

VMware Workstation 15.5 Player is Type 2 hypervisor.

    • Open VMware Workstsation 15 Player.
    • Go to the Main menu > File > Create a New Virtual machine
    • Install operating system: you can select for example a Windows image (Win10_2004_EnglishInternational_x64.iso)
    • Virtual machine name: Windows 10 x64
    • Disk: Select the HDD or SDD. Enter the size e.g. 60 GB or larger
    • Hardware customization
      • Select the amount of memory in MB to be allocated to the virtual machine: 2 GB or more
      • Number of processor cores: 2
      • Display: Enable “Accelerate 3D graphics”

Oracle VM VirtualBox error message: Permission problem!

Operating system: openSUSE Leap 15.1

VirtualBox version: 6.0.18

Virtual box error message: You are not a member of the “vboxusers” group. Please add yourself to this group before starting VirtualBox. You could do it using: Yast / Security and Users / User and Group management. Don’t forget re-login your user account!


  • Open Yast Control Center
  • Open User and Group Management module (Category: Security and Users)
  • Select a User and then click Edit
  • Click the Details tab and select ‘vboxusers’
  • Click OK and logout
  • Login again

KeepPass error message: xdotool

Host operating system: openSUSE Leap 15.1

Application: KeePass ver.2.38

Error message: The ‘xdotool’ utility/package is required for auto-type.

What is xdotool? xdotool is a tool that lets you programatically (or manually) simulate keyboard input and mouse activity, move and resize windows, etc. It does this using X11’s XTEST extension and other Xlib functions.

Note: This message appears when you are trying to use the Auto-type function of KeePass.

Solution: Install xdotool (Fake keyboard/mouse input).

Hello World! in Python

First of all you need to install python if it is not already installed. Python download page:

Python installation path should be added as an system variable in Windows:

  • Open System Properties by typing sysdm.cpl in Command Prompt window
  • Go to the Advanced tab and click the Environment Variables
  • In System variables find the Path variable and click Edit
  • Add the path where Python is installed

In Windows you can open a command prompt and type the following command:

py --version

or just type py and press Enter. You must see Python start up:

If you are using Visual Studio Code do one of the following:

  • Right click anywhere in the editor window > Run Python file in Terminal
  • Main menu > View > Command Palette… > Python: Start REPL > Type the lines of code and press Enter
  • Select the Lines of code > right click > Run Selection/Line in Python Terminal
print "Hello World!\n"

Inkscape – RGBA

R – Red

G – Green

B – Blue

A – Alpha (transparency)

Example 1 (A = 255)

Draw a rectangle. Select the rectangle > Fill and Stroke… > select the Fill tab > choose Flat color > enter RGBA values.

Inkscape RGBA (1)

Example 2 (A = 150)

Inkscape RGBA (2)

Εμφάνιση του Κάδου Ανακύκλωσης στην Επιφάνεια Εργασίας

Windows Vista Greek > Πίνακας Ελέγχου > Εξατομίκευση > Αλλαγή εικονιδίων επιφάνειας εργασίας > Check “Κάδος Ανακύκλωσης”.

Windows 7 English > Control Panel > Appearance and Personalization > Personalization > Change the theme >  Change desktop icons > Check the ‘Recycle Bin’.

How to install Windows 7 on a Mac mini (Late 2009) with Yosemite

1. MAC OS X Yosemite > Applications > Utilities > Boot Camp Assistant


2. Choose the option “Download the lated Windows support software from Apple”. The downloaded software (drivers) should be saved on a USB Drive.

3. Open the Boot Camp Assistant again and choose the options “Create Windows 7 install disk” and “Install Windows 7”.


4. Create a bootable USB Drive for Windows Installation. Choose the path where the Windows 7.iso image is located and then select the destination disk (a new empty USB drive).




5. Create a partition for Windows. Then you have to install Windows by booting from the USB drive (step 4) and the drivers you have downloaded and saved on a USB (Step 2).



6. Dual boot MAC OS X Yosemite – Windows 7. You have to install rEFInd Boot Manager software by running the on the MAC OS X console.



  • Step 4 –  Create a bootable USB Drive for Windows Installation. In case that the Windows7.iso image has not been created properly you will receive the error “Non-system disk”. We recommend that you create a bootable USB Drive for Windows Installation on a Windows machine using “Windows 7 USB/DVD Download Tool”.
  • There is a possibility when running Boot Camp Assistant that the option “Create Windows 7 install disk” does not exist. Some changes need to be made in Boot Camp Assistant in order to overcome this issue. These modifications require Xcode to be installed.

history command in Unix

The history command can be used to determine the log of commands we have typed in the bash shell.

If you want to clear the history of commands, the following option can be used:

history -c

If you want to search for a command in history, we can use the grep command

history | grep cp

The following command will show the last n commands:

history n

cp command in Unix

cp is the copy command in Unix environment.

Example: cp -fRvp source destination

-f = For each existing destination pathname, remove it and create a new file, without prompting for confirmation regardless of its permissions.

-R = If source designates a directory, cp copies the directory and the entire subtree connected at that point.

v = Verbose mode, shows files while they are copied

p = Cause cp to preserve the following attributes of each source file in the copy: modification time, access time, file flags, file mode, ACL, user ID and group ID, as allowed by permissions.

source = e.g. /Volumes/HDD1/Project2015

destination = e.g. /Volumes/HDD2/Project2015_Backup

The cp utility exits 0 on success, and >0 if an error occurs.

How to build a simple “Hello World!” Cocoa OS X Application in Swift

Start Xcode (Version 6.1.1). Xcode is an Integrated Development Environment for mac OS.

Main Menu > File > New Project

Under “OS X” choose “Application” and then “Cocoa Application” (this template creates a Cocoa application for the OS X platform).

Enter the “Product Name” and choose the Swift Programming Language.

Go to the “Project Navigator” area and select the “Main.storyboard”.

Search for a “Label” in the Object Library:

Xcode, Object Library, Label

Figure: Xcode, Object Library

Drag & Drop a Label from the Library to the Window.

You can use the so called Inspector, located right above the Library, in order to change the name of the window and the name of the Label to “Hello World!”.

If you click on the window the Inspector will show the attributes of the window.

Xcode, Attributes Inspector, Window

Figure: Xcode, Inspector, attributes of a window

If you click on the label the Inspector will show the attributes of the label.

Xcode, Attributes Inspector, Label

Figure: Xcode, Inspector, attributes of a label

Xcode, Main.storyboard

Figure: Xcode, Main.storyboard

Run the application: Main Menu > Product > Run

The output is:

Xcode, Window, Hello World!

The sizeof Operator in C

The sizeof operator is used to determine the number of bytes required to store a value of a specific data type.

#include <stdio.h>

int main() {
    int result, int_array[10];
    double double_array[10];
    printf("size of int = %2d bytes \n", result=sizeof(int));
    printf("size of int_array[10] = %2d bytes \n", result=sizeof(int_array));
    printf("size of float = %2d bytes \n", result=sizeof(float));
    printf("size of double = %2d bytes \n", result=sizeof(double));
    printf("size of double_array[10] = %2d bytes \n", result=sizeof(double_array));
    printf("size of long double = %2d bytes \n", result=sizeof(long double));
    return 0;

The output is :

The sizeof operator in C

IDE: Xcode Version 6.1.1

Compiler: Apple LLVM version 6.0 (clang-600.0.56) (based on LLVM 3.5svn)

Operating system: OS X Yosemite Version 10.10.1 (64-bit kernel)

Processor: Intel Core 2 Duo (64-bit processor).

What is Ajax?


  • is not a programming language.
  • is an approach to web interaction. This approach involves transmitting only a small amount of information to and from the server in order to give the user the most responsive experience possible, [1].
  • is an approach for developing dynamic Web sites, [2].
  • is not an acronym but in literature it can be in found also as AJAX, meaning Asynchronous JavaScript And XML.
  • enables us to pass information between a Web browser and a Web server without refreshing the entire Web page, [2].

Ajax is a group of technologies working together:

For presentation:

  • HyperText Markup Language (HTML) – content representation language.

  • Cascading Style Sheets (CSS) – provides stylistic formatting to XHTML.

For data display and interaction:

  • Document Object Model (DOM) – necessary to change portions of an XHTML page without reloading it.

For data interchange:

  • Extensible Markup Language (XML) – protocol used to transfer data back and forth betwen client and server.

  • JavaScript Object Notation (JSON)

For asynchronous communication:

  • XMLHttpRequest Object (XHR)

Other technologies:

  • Extensible HyperText Markup Language (XHTML) – content representation language.
  • JavaScript – scripting language used to program an Ajax engine.
  • Extensible Stylesheet Language Transformation (XSLT) – transforms XML into XHTML (with CSS linked to it).
  • RSS
  • Atom.

Two different styles of Ajax, [2]:

  • Partial-page rendering
  • JSON service

Ajax Frameworks:

  • ASP.NET is Microsoft’s Ajax Framework. ASP stands for Active Server Pages.
  • Jboss RichFaces is a Framework for integrating Ajax capabilities into applications using JavaServer Faces (JSF).

Ajax example:

Google Suggest – as we type, Google Suggest requests suggestions from the server, showing us a drop-down list of search terms that we may be interested in.

Pre-increment and post-increment operators in C

#include <stdio.h>

int main(void) {
	int a=0, b=1, c=-8;
	int result=0;
	printf("1. a=%2d, b=%2d, c=%2d, result=%2d\n", a, b, c, result);
	printf("2. a=%2d, b=%2d, c=%2d, result=%2d\n", a, b, c, result);
	printf("3. a=%2d, b=%2d, c=%2d, result=%2d\n", a, b, c, result);
	printf("4. a=%2d, b=%2d, c=%2d, result=%2d\n", a, b, c, result);
	printf("5. a=%2d, b=%2d, c=%2d, result=%2d\n", a, b, c, result);
	return 0;

a++ post increment (it increments the value of a after the operation is over)

++b  pre increment (it increments the value of b before the operation)

The output is:

Pre-increment and post-increment operators in C

Computing and displaying the cubes and the sums of cubes of the first 10 integers in C

#include <stdio.h>
#include <stdlib.h>
#define CUBE(x) ((x)*(x)*(x))
int main(void) {
	int i1, running_sum=0;
	while (i1<=10)
	{       // running_sum=running_sum+CUBE(i1)  
		printf("%2d  :   cube=  %4d ;   running_sum=  %4d\n", i1, CUBE(i1) , running_sum);
	return 0;

The above program computes and displays cubes and sums of cubes of the first 10 integers. This program also illustrates the use of while loop.
e.g. for i1=1 the running_sum=0+1=1, for i2=2 the running_sum=1+8=9

The output is:

Computing and displaying cubes and sums of cubes of the first 10 integers in C

The Dart programming language

Dart is a structured programming language developed by Google so as to help developers build web applications. It was unveiled in 2011. Dart is purely object-oriented.

A Dart plugin exist for Visual Studio Code to develop Dart applications.

dart2js is a tool to compile Dart code to JavaScript. The latter means that we should be able to run Dart to any modern browser.

A Dart plugin for the Eclipse Platform is also available.