HOME BLOG

How to view what tables a user has privileges on in Oracle

Posted on: November 10th, 2022 by Olu No Comments

Hi folks,

In this post I talk about handy commands you can run to find out what tables a user has privileges on in an Oracle database.

To view privileges for all users, run the following query:

select * from dba_tab_privs;

 

To view privileges for the currently logged-in user, run the following query:

select * from role_tab_privs;

 

The result will show the role, owner, table name, column name, privilege, grantable and common fields for each privilege.

The above command could be very useful when debugging permissions issues.

That’s all for now. Till next time, happy software development.

How to create product demo videos using a Mac

Posted on: October 17th, 2022 by Olu No Comments

Hi folks,

In this article I briefly discuss an easy and inexpensive way to create product demonstration videos using a Mac. The information shared here is based on my experience creating such for our product, Yinkos Hymns Manager.

For screen recording, you can use QuickTime. It comes free of charge on Mac computers. With this software, you can create one of more recordings of your screen and add your voice as you do the demonstration.

If you want to add a splash screen at the beginning of your presentation or anywhere else within it, you can use an app like Gimp (which is free to download), PhotoShop (not free, but you may be able to try it for free) or similar software.

Once you have your images and screen recordings for all aspects of your presentation, you would need  a software to combine them into a single video, including nice transitions between the various videos. You can use iMovie for this. iMovie usually comes built-in on Mac. If it isn’t available you can get it from the App Store free of charge.

 

That’s all for now.

How to execute shell scripts that can throw an error without causing Jenkins build to fail

Posted on: October 1st, 2022 by Olu No Comments

Hi folks,

Usually, if a shell script in a Jankins build throws an error, the build fails automatically. In this post I talk briefly about a technique for running a shell script in your Jenkins CI pipeline without causing the build to fail if the shell script throws an error.
The technique is to use code like the following:

sh("""
set +e
/your/script/that/may-or-may-not-fail.sh
set -e
""")

 

set +e is the default way that bash runs. That is, if a command throws an error, bash displays it, but continues with the script.

set -e forces the script to exit if there’s an error.

That’s all for now. Till next time, happy software development.

How to fix error “my_config.h” file not found in MySQL-python on Mac OS

Posted on: September 30th, 2022 by Olu No Comments

Hi folks,

In this post I will briefly touch on how to fix the error that my_config.h could not be found when trying to install MySQL-python with pip on Mac OS 12.0.x with Python 2.7.x. We assume you installed MySQL via Homebrew.

The error looks like

    _mysql.c:44:10: fatal error: 'my_config.h' file not found
    #include "my_config.h"
             ^~~~~~~~~~~~~
    1 error generated.
    error: command 'clang' failed with exit status 1

 

First, download my_config.h using commands:

cd ~/Downloads
curl https://raw.githubusercontent.com/jacob5412/MySQL-Medium/main/my_config.h -o my_config.h

 

Next, find your MySQL version by running command

mysql --version

Let’s assume your version is 8.0.29.

Make sure the following directory exists /usr/local/Cellar/mysql/8.0.29/include/mysql/.

Then copy the downloaded my_config.h into the directory using command:

cp my_config.h /usr/local/Cellar/mysql/8.0.29/include/mysql/

That’s it. You can now install MySQL-python using command:

pip install MySQL-python

That’s all for now. Till next time, happy software development.

References

Fixing “my_config.h” file not found in MySQL-python (Mac OS). https://medium.com/the-rising-tilde/fixing-my-config-h-file-not-found-in-mysql-python-mac-os-ff97663a8042.

How to be able to switch to another user without entering password

Posted on: September 17th, 2022 by Olu No Comments

Hi folks,

In this post I explain how to switch to another user in Linux without needing to enter a password.

You can do this with the PAM authentication module.

Edit /etc/pam.d/su

vim /etc/pam.d/su

 

Then enter the following lines

auth       [success=ignore default=1] pam_succeed_if.so user = the-username
auth       sufficient   pam_succeed_if.so use_uid user ingroup the-groupname

Save and exit the file.

This will allow you to switch to the-user if you belong to the-group without needing to enter the password for the user using a command like

 su - the-user

 

That’s all for now. Till next time, happy software engineering.

 

References

How to Switch (su) to Another User Account without Password. https://www.tecmint.com/switch-user-account-without-password/

How to use sudo command without password

Posted on: September 17th, 2022 by Olu No Comments

Hi folks,

in this post I discuss how you can use sudo command without password on a Linux system.

Back up your sudoers file

cp /etc/sudoers /etc/sudoers.old

Then, run visudo command

visudo

 

Then enter an entry like

your-user-name ALL=(ALL) NOPASSWD: ALL

 

Then, if visuo uses nano, press Ctrl X to save. Then press enter to finish the save.

Please note: it’s not good security pracrice to let a non-root user run sudo without passwords, so you may want to limit it to some specific commands.

That’s all for now. Till next time, happy software development.

 

References

How to Use sudo Commands Without Password in Linux. https://www.makeuseof.com/using-sudo-without-password/

Some interesting docker commands

Posted on: September 17th, 2022 by Olu No Comments

Hi folks,

Here I will talk about a few interesting commads  to know when working with Docker.

First, what is Docker? According to wikipedia, Docker is a set of platform as a service (PaaS) products that use OS-level virtualization to deliver software in packages called containers. The service has both free and premium tiers. The software that hosts the containers is called Docker Engine. It was first started in 2013 and is developed by Docker, Inc. Docker can package an application and its dependencies in a virtual container that can run on any Linux, Windows, or macOS computer. This enables the application to run in a variety of locations, such as on-premises, in public (see decentralized computing, distributed computing, and cloud computing) or private cloud. When running on Linux, Docker uses the resource isolation features of the Linux kernel (such as cgroups and kernel namespaces) and a union-capable file system (such as OverlayFS) to allow containers to run within a single Linux instance, avoiding the overhead of starting and maintaining virtual machines. Docker on macOS uses a Linux virtual machine to run the containers.

 

How to log in to a Docker artifacts repository

docker login -u someuser -p somepassword the-login-url

 

To build an image, you do

docker build -t name_of_container /path/to/directory-with-dockerfile/

To use a different docker file, you do

docker build -t name_of_container --file=name-of-docker-file /path/to/directory-with-dockerfile/

So, if you’re in the directory with the Dockerfile, just do

docker build -t name_of_container .

 

How to tag your image

docker tag your-image:latest the-repo-url/path/to/your/your-image:latest

 

How to push your image to a repository

docker push the-repo-url/path/to/your/image:latest

 

How to list Docker containers using command

docker ps

 

How to list Docker images using command

docker image ls

 

How to start a container for a particular image, making it run in the background and keeping it running indefinitely (in case it doesn’t already run that way)

docker run -d  tail -f /dev/null

How to log into a container and have a shell (good for debugging)

docker exec -it  /bin/sh

 

How to kill a container

docker kill <container-id>

 

That’s all for now. Till next time, happy software development.

References

Docker (software). < href=”https://en.wikipedia.org/wiki/Docker_(software)”>https://en.wikipedia.org/wiki/Docker_(software),

How to view the list of registered tasks in Celery

Posted on: August 27th, 2022 by Olu No Comments

Hi folks,

In this post I talk about a nice tip that could come in handy while working with Celery. It is how to get all registered Celery tasks. You can use code like:

from celery import current_app
all_task_names = current_app.tasks.keys()
all_tasks = current_app.tasks.values()
foo_task = current_app.tasks['tasks.foo']

all_task_classes = [type(task) for task in current_app.tasks.itervalues()]

The task registry is only populated as the modules containing tasks are imported. If you have not imported all modules you can do like the celery worker does, and import all configured task module sources:

current_app.loader.import_default_modules()

That’s all for now. Till next time, happy software development.

 

References

How to get all tasks and periodic tasks in Celery [duplicate]. https://stackoverflow.com/a/12652113

How to set environment variables on Docker containers via docker-compose file

Posted on: August 18th, 2022 by Olu No Comments

Hi folks,

In this post I briefly go over how to set environment variables in your docker container which is managed by a docker-compose.yaml file.

You can use the env_file flag. Suppose you set environment variables in a file .env, you can read environment variables into a container, service_name as follows:

services:
    service_name:
        container_name: service_name
        ...
        env_file:
          - .env

That’s all for now. Till next time, happy software development.

How to install Python 3.6 on MacOS 12 using pyenv

Posted on: August 17th, 2022 by Olu No Comments

Hi folks,

Here’s a quick note on how to install Python 3.6 on MacOS 12 using pyenv.

I needed to do this while workingon a legacy app. Note that Python 3.6 has reached its end-of-life so you should normally be using a more recent version of the langauge as a developer.

Here is the error I was getting:

python-build: use readline from homebrew
Installing Python-3.6.0...
python-build: use tcl-tk from homebrew
python-build: use readline from homebrew
python-build: use zlib from xcode sdk

BUILD FAILED (OS X 12.0.1 using python-build 20180424)

Inspect or clean up the working tree at /var/folders/q9/s5s1hzrd6m1_0by3tx5j6sh40000gn/T/python-build.20220815235540.47954
Results logged to /var/folders/q9/s5s1hzrd6m1_0by3tx5j6sh40000gn/T/python-build.20220815235540.47954.log

Last 10 log lines:
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include   -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include   -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers   -I. -I./Include -I/usr/local/opt/readline/include -I/usr/local/opt/readline/include -I/Users/olu/.pyenv/versions/3.6.0/openssl/include -I/Users/olu/.pyenv/versions/3.6.0/include  -I/usr/local/opt/readline/include -I/usr/local/opt/readline/include -I/Users/olu/.pyenv/versions/3.6.0/openssl/include -I/Users/olu/.pyenv/versions/3.6.0/include   -DPy_BUILD_CORE  -c ./Modules/pwdmodule.c -o Modules/pwdmodule.o
./Modules/posixmodule.c:8146:15: error: implicit declaration of function 'sendfile' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
        ret = sendfile(in, out, offset, &sbytes, &sf, flags);
              ^
./Modules/posixmodule.c:10340:5: warning: code will never be executed [-Wunreachable-code]
    Py_FatalError("abort() called from Python code didn't abort!");
    ^~~~~~~~~~~~~
1 warning and 1 error generated.
make: *** [Modules/posixmodule.o] Error 1
make: *** Waiting for unfinished jobs....

After a lot of research, a solution was found on StackOverflow as follows:

CFLAGS="-I$(brew --prefix openssl)/include -I$(brew --prefix bzip2)/include -I$(brew --prefix readline)/include -I$(xcrun --show-sdk-path)/usr/include" 

LDFLAGS="-L$(brew --prefix openssl)/lib -L$(brew --prefix readline)/lib -L$(brew --prefix zlib)/lib -L$(brew --prefix bzip2)/lib"

pyenv install --patch 3.6.13 < <(curl -sSL https://github.com/python/cpython/commit/8ea6353.patch\?full_index\=1)

Hopefully this helps others. Till next time, happy software development.

 

References

1. Problems installing python 3.6 with pyenv on Mac OS Big Sur. https://stackoverflow.com/a/68227540.