Sunday, April 17, 2022

Install KVM on Ubuntu Jammy Jellyfish (Development branch)

 First run

$ sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virtinst virt-manager

Enable and start daemon libvirtd

$ sudo usermod -aG libvirt $USER
$ sudo usermod -aG kvm $USER

Set up WebCocpit Console 
 $ sudo vi  /etc/apt/sources.list
Add line
deb http://archive.ubuntu.com/ubuntu \
focal-backports main restricted universe multiverse
:wq
 $ sudo apt-get update
$ sudo apt install firewalld
$ sudo systemctl start firewalld
$ sudo systemctl enable firewalld
$ sudo systemctl status firewalld
$ sudo apt-get install -t focal-backports cockpit
$ sudo apt install -t focal-backports cockpit-machines
$ sudo systemctl start cockpit.socket
$ sudo systemctl status cockpit.socket
$ sudo systemctl enable cockpit.socket
$ sudo firewall-cmd --add-service=cockpit --permanent
$ sudo firewall-cmd --reload

 




KVM Hypervisor Host





















Thursday, December 23, 2021

Uploading dictionaries into SQLite tables via Pandas DataFrames on Python 3.9.9

 The following below is a not entirely trivial algorithm for students that creates a Python dictionary after scanning text according to the conditions of the problem, which gets converted into Pandas Dataframe and uploaded to SQLite database table to be analyzed via nested SQL Query.

Problem itself

A text file (beta-wide.txt) consists of many lines, each of which can contain letters from the set A, B, C, D, E, F. For the entire file, you need to determine which letter is most often forms substrings of maximum length. As an answer, you must enter a string consisting of the found letters, alphabetically without delimiters

(.env) [boris@fedora34server WORK]$ ll beta-wide.txt

-rw-rw-r--. 1 boris boris 59420 Dec 23 16:20 beta-wide.txt














Python code building dictionary to be uploaded into SQLite table

via pandas DataFrame

import pandas as pd

import sqlite3

connection = sqlite3.connect('data_pandas.db')

c = connection.cursor()

c.execute('CREATE TABLE IF NOT EXISTS results(symv_name text, symv_qnt number)')

connection.commit()

seqLetter = []

file = open('./beta-wide.txt')

for line in file:

    currLetrs = set()

    curLen = 0

    maxLen = 1

    prev = ' '

    for next in line:

        if prev == next:

            curLen +=1

            if curLen > maxLen:

                maxLen = curLen

                currLetrs = set([next])

            elif maxLen == curLen:

                currLetrs.add(next)

        else:

          curLen =1

        prev = next

    seqLetter = seqLetter + list(currLetrs)

d = {}

for i in set(seqLetter):

    key = i

    d[key] = d[key] = d.get(key,0) + seqLetter.count(i)

data_items = d.items()

data_list = list(data_items)

df = pd.DataFrame(data_list, columns= ['symv_name','symv_qnt'])

df.to_sql('results', connection, if_exists='replace', index = False)

query = "SELECT * FROM results  WHERE symv_qnt = (SELECT max(symv_qnt) FROM results)"

data = pd.read_sql_query(query,connection)

print(data)

SQLiteBrowser double check






































Monday, December 13, 2021

Exersing Python 3.10 on Fedora 25 via sorting Pandas DataFrame

 The following below is a not entirely trivial algorithm for students that creates a Python dictionary when scanning text according to the conditions of the problem, which is then processed as Pandas Dataframe to provide the output required

The original problem itself

The text file alpha-wide.txt contains only capital letters of the Latin alphabet (ABC… Z). Identify the character that most often occurs in the file immediately after the letter X. In the answer first write down this character, and then separate by blank how many times it occurred after letters X. If there are several such characters, you need to display the one that appears earlier in the alphabet.

The file alpha-wide.txt contains a pretty long string

Python code has been set up in a virtual environment with pandas installed via pip

import pandas as pd

with open("./alpha-wide.txt") as F:

  string = F.readline() # getting next line

d={} # declare dictionary of letters 

while "X" in string:

    n = string.find("X") # index "X"

    key = string[n+1]    # create key = Letter

    d[key] = d.get(key,0)+1

    string = string[n+1:] # slice, form a new line

# print(d)

data_items = d.items()

data_list = list(data_items)

df = pd.DataFrame(data_list,columns = ['X1','Y1'])

df.sort_values("Y1", axis = 0, ascending = True, inplace = True, na_position ='last')

print("DataFrame has been sorted by Y1")

print(df)





Sunday, December 12, 2021

Exerising Python 3.10 on Fedora 25 via sorting Pandas DataFrame

The following below is a not entirely trivial algorithm for students that creates a Python dictionary when scanning text according to the conditions of the problem, which is then processed as Pandas Dataframe to provide the output required

The original problem itself

The text file alpha-wide.txt contains only capital letters of the Latin alphabet (ABC… Z). Identify the character that most often occurs in the file immediately after the letter X. In the answer first write down this character, and then separate by blank how many times it occurred after letters X. If there are several such characters, you need to display the one that appears earlier in the alphabet.

The file alpha-wide.txt contains a pretty long string












Python code has been set up in a virtual environment with pandas installed via pip

import pandas as pd

with open("./alpha-wide.txt") as F:

  string = F.readline() # getting next line

d={} # declare dictionary of letters 

while "X" in string:

    n = string.find("X") # index "X"

    key = string[n+1]    # create key = Letter

    d[key] = d.get(key,0)+1

    string = string[n+1:] # slice, form a new line

# print(d)

data_items = d.items()

data_list = list(data_items)

df = pd.DataFrame(data_list,columns = ['X1','Y1'])

df.sort_values("Y1", axis = 0, ascending = True, inplace = True, na_position ='last')

print("DataFrame has been sorted by Y1")

print(df)



System information


Tuesday, October 12, 2021

Python Wrapper to find all primes from a given interval via sieve of Eratosthenes released as C++ procedure

 We intend to rely on https://github.com/mathbunnyru/python-cpp-extension . We also would to convert lists to sets and vice-versa and utilize method set1.difference(set2) . Sometimes Python tricks make you really excited 

Download and extract tarball on Fedora 34 with "C Development tools" and python-devel installed . Setup python venv in your working directory

 $ python3 -m venv .env

 $ source .env/bin/activate

and run straight away:-

$ python setup.py install


(.env) [boris@fedora34server python-cpp-extension-delta]$ cat deltaBetween.py

import cpp_python_extension
uplimit,downlimit =0,0
znBig = []
znSmall = []

uplimit = int(input("Input upper bound :"))
downlimit = int(input("Input lower bound :"))

znBig = cpp_python_extension.sieve_of_eratosthenes(uplimit)
znSmall = cpp_python_extension.sieve_of_eratosthenes(downlimit)

setSmall = set(znSmall)
setBig = set(znBig)

deltaSet = setBig.difference(setSmall)
deltaList = list(deltaSet)
deltaList.sort()

print(deltaList)


Sunday, October 10, 2021

Python C++ Wrapper for another YandexQ question via sieve of eratosthenes released as C++ procedure

This post is an immediate follow up for http://lxer.com/module/newswire/view/306255/index.html  what will result significant performance boost vs python's version of the sieve of Eratosthenes procedure.

We intend to rely on https://github.com/mathbunnyru/python-cpp-extension . Download and extract tarball on Fedora 34 with "C Development tools" and python-devel installed . Setup python venv in your working directory

 $ python3 -m venv .env

 $ source .env/bin/activate

and run straight away:-

$ python setup.py install

(.env) [boris@fedora34server python-cpp-extension-delta]$ ll

total 36

drwxrwxr-x. 5 boris boris   89 Oct 10 09:37 build

drwxrwxr-x. 2 boris boris   90 Oct 10 09:37 cpp_python_extension.egg-info

-rw-rw-r--. 1 boris boris  751 Oct 10 11:57 delta16.py

-rw-rw-r--. 1 boris boris  414 Oct 10 12:01 deltaBetween.py

drwxrwxr-x. 2 boris boris   61 Oct 10 09:37 dist

-rw-rw-r--. 1 boris boris   85 Oct 10 09:18 MyProg.py

-rw-rw-r--. 1 boris boris 1192 Oct 10 09:18 README.md

-rw-rw-r--. 1 boris boris  682 Oct 10 09:18 setup.py

-rw-rw-r--. 1 boris boris  450 Oct 10 09:18 sieve.cpp

-rw-rw-r--. 1 boris boris  140 Oct 10 09:18 sieve.h

-rw-rw-r--. 1 boris boris 1542 Oct 10 09:18 sieve_python_wrapper.cpp

-rw-rw-r--. 1 boris boris  200 Oct 10 09:18 test_benchmark.py

(.env) [boris@fedora34server python-cpp-extension-delta]$

Now update delta16.py from post  http://lxer.com/module/newswire/view/306255/index.html

Then update delta16.py as follows

(.env) [boris@fedora34server python-cpp-extension-delta]$ cat delta16.py

import cpp_python_extension

def sumDigits(N,k):

    sum = 0

    while (N != 0):

        sum = sum + N % k

        N = N // k

    return sum

def SearchNumber(uplimit,sdg):

   imax = 0

   zn = []

   # Here we invoke cpp_python_extension.sieve_of_eratosthenes 

   # been written in C++ via Python C API which returns python's 

   # object list containing all prime numbers <= uplimit

   zn = cpp_python_extension.sieve_of_eratosthenes(uplimit) 

   spisok = set(zn)

   for i in range(2,uplimit):

        # Look for highest prime number <= uplimit 

        # and summa of digits <= sdg

        if (i in spisok)  and sumDigits(i,10) <= sdg:

            if i > imax:

                 imax = i

   print("Maximum = ",imax)

def main():

   uplimit,sdg = 0,0

   uplimit = int(input("Input range of scan :"))

   sdg = int(input("Input sum of digits :"))

   SearchNumber(uplimit,sdg) 

if __name__ == "__main__":

   main()




















Saturday, October 9, 2021

Solution another YandexQ question via sieve of eratosthenes in Python

 Problem itself 

What is the maximum natural number X satisfies the condition: X - prime AND NOT X> 1000 AND the sum of the digits X ≤ 25 ?

The major target of this approach is performance improvement when looking for the highest prime number less than 10.000.000 with a given sum of decimal digits. In general, the problem  requires  implementation of sieve of Eratosthenes

Python code implementing  sieve of Eratosthenes

[boris@fedora34server YANDEXQ]$ cat delta16.py

def sumDigits(N,k):

    sum = 0

    while (N != 0):

        sum = sum + N % k

        N = N // k

    return sum

def eratosphen(n,a):

   prime = [True for i in range(n + 1)]

   prime[0] = prime[1] = False

   i = 2

   while i * i <= n:

        if prime[i]: 

            j = i * i

            while j <= n:

                prime[j] = False

                j += i

        i += 1

   for i in range(2, n + 1):

         if prime[i]:

                a.append(i)

   return a

def SearchNumber(uplimit,sdg):

   imax = 0

   # Declare list to be submitted to  eratosphen( )

   zn = []

   eratosphen(uplimit,zn)

   # Converting list "zn" into set 

   spisok = set(zn)

   for i in range(2,uplimit):

        # Look for highest prime number <= uplimit 

        # and summa of digits <= sdg

        if (i in spisok)  and sumDigits(i,10) <= sdg:

            if i > imax:

                 imax = i

   print("Maximum = ",imax)

def main():

   uplimit,sdg = 0,0

   uplimit = int(input("Input range of scan :"))

   sdg = int(input("Input sum of digits :"))

   SearchNumber(uplimit,sdg) 

if __name__ == "__main__":

   main()