Search This Blog

The Idea of #Decentralizing the #SocialMedia


Came across the below image while exploring the Threads app to see what the fuss was about and, it indicated something about the Open Social Media Protocol.

Low Code Application Development in 2023

A few years ago, I was introduced to low-code application development (LCAD) with Oracle APEX and instantly liked the concept of coding less. The product stint did not last long because the product lacked key critical features at the time. I felt it was easier to code with the known frameworks than foray into a product with restrictions.


Extract Table Data Using Python

This is a very simple example. But you will know the dynamics to alter for achieving the right results. 

from time import sleep
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
options = Options()
options.headless = True
driver = webdriver.Chrome(options=options)
driver.maximize_window()
driver.get('https://www.w3schools.com/html/html_tables.asp')

# Make Python sleep for some time
sleep(2)

rows = len(driver.find_elements("xpath","/html/body/div[7]/div[1]/div[1]/div[3]/div/table/tbody/tr"))

# Obtain the number of columns in table
cols = len(driver.find_elements("xpath","/html/body/div[7]/div[1]/div[1]/div[3]/div/table/tbody/tr/td"))

# Printing the data of the table
for r in range(2, rows+1):
for p in range(1,4):
#obtaining the text from each column of the table
value = driver.find_element("xpath","/html/body/div[7]/div[1]/div[1]/div[3]/div/table/tbody/tr["+str(r)+"]/td["+str(p)+"]").text
print(value)



Execute Selenium in Jupyter Notebook - Headless Mode

In the previous example, when you run the script, you will be able to see the chrome browser getting activated and follows the command in the script. 

Headless mode runs the code without the need of the physical browser. It executes the same script behind the scenes, without opening the browser window at all. 

This makes automation much easier and efficient in a way. Speed and performance is amazing in this scenario. You can run multiple tests in parallel without the overhead of multiple browsers being open all through the execution time frame. 

Below is what how you can run the code from the previous post in the headless mode. 

from time import sleep
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
options = Options()
options.headless = True
driver = webdriver.Chrome(options=options)

driver.maximize_window()
driver.get('https://google.com')
driver.find_element("name", "q").send_keys("Elon Musk")
driver.find_element("xpath","/html/body/div[1]/div[3]/form/div[1]/div[1]/div[4]/center/input[1]").send_keys(Keys.ENTER)
print(driver.find_element(By.XPATH,"/html/body/div[7]/div/div[11]/div[3]/div[2]/div/div/div[2]/div/div/div/div[1]/div/div/div/div/span[1]").text)
sleep(3)
driver.close()

Result will be the same, but no browsers are opened. 



Execute Selenium in Jupyter Notebook

Installing and running selenium is so simple with Jupyter Notebook. Follow the below steps to create a sample program. Creating POCs will be superfast with this method. Steps to run Selenium with Python on Jupyter notebook below:

Install Selenium in Jupyter

!pip install selenium

If its successful, you will get the below message

Install Chrome Webdriver

Install from this link: https://chromedriver.chromium.org/

Make sure that you are downloading the version that matches with your chrome browser version. 

Run the sample program below

Intent of this code sample is to search for a person in Google and retreive the Wiki text displayed on the right side of the page. 

from time import sleep
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.maximize_window()  
driver.get('https://google.com')
driver.find_element("name", "q").send_keys("Elon Musk")  
driver.find_element("xpath","/html/body/div[1]/div[3]/form/div[1]/div[1]/div[4]/center/input[1]").send_keys(Keys.ENTER) 
print(driver.find_element(By.XPATH,"/html/body/div[7]/div/div[11]/div[3]/div[2]/div/div/div[2]/div/div/div/div[1]/div/div/div/div/span[1]").text)

sleep(3)
driver.close()

Run the code and you will get the below result. 

Access PeopleSoft (or anything) from Slack



Within the team, we started using slack for one reason.

Continuous, non-interrupted and managed communication.

There is yet another reason why this is my favorite recommended application for collaboration:

De-orchestrated productivity

You place a resource targeted request in the channel and, someone will pick it up to cater your need. No bottlenecks or unproductive waiting periods, like when you request something via email and it sits in the queue for several reasons.

This isn't going to happen without the team effort and, is something that I like within the team to it's best. Productivity shot up by 40%.

Below is one example. The integration team, who is new to the PeopleSoft world, had a query about a PeopleSoft record. Using PS_ is a part of the PeopleSoft life, but not for any other teams and might end up in a query which says, "table doesn't exist".


What if, similar queries can be answered by an automated app within Slack? Much more efficient right.

So came up with the below solution. Serving PeopleSoft details via Slack using the event driven mechanism.




This is what the integration does:
  1. Slash command triggers the event
  2. Post the request to the server
  3. Server reads the request
  4. Triggers PeopleSoft Rest API for fetching the information and parse the response
  5. goog_2079004393Respond back to Slack using Web Hooks

This is just one simplified example. You can serve data from any database and the implementation scope is limitless.

Let's take another example. Tracking the PeopleSoft scheduled job information within the slack channel. You will get notified on the program start and end timings with any other information, say, quick log access with Success and Error counts etc.


Analytics, HR services, Workflows Approvals - there are no limits to the use cases that can be served with slack integration.


Oracle Cloud Eloqua Rest API using PHP 

This is an example for  Eloqua Rest API using PHP, which demonstrates how you can access the REST API's to read and retrieve the data from Eloqua.

SQL Performance Issue Checks and Tuning

First checks:
  • Check the statistics to make sure that they are the latest
  • No missing indexes

How To Identify The PeopleTools Dependency For A PUM Upgrade

Have seen several times, people confused about gathering PUM information from Oracle Support. This post is to help the people with the much-required information to keep track of the PUM features and dependencies. 

If you want to know the PeopleTools dependencies much ahead of the PUM upgrade, this is the place to see the information.

Providing JSON From PeopleSoft Using Document Technology

It is possible to provide JSON from PeopleSoft without using JavaScript. This works with the help of Document Technology, Integration Broker and PeopleCode.

Below are the steps to provide JSON from PeopleSoft.

Add Custom Code Without Customization - Event Mapping Framework

Finally, something which let's you to fire PeopleCode on delivered components without customizing the delivered one. This is pretty handy and neat.

How to do this? Below are the steps.

Good bye SES

With respect to PeopleSoft Campus Solutions, Oracle SES is for enabling a rich search features. It is much better than Verity and provides more options for your search, related actions etc. etc. Yes, the options looked great and robust. All enterprises require a better, efficient way of data mining capabilities and Oracle SES was the out of the box solution. I was excited and posted about its features way back when SES was released.