<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Techsalad]]></title><description><![CDATA[Senior DevSecOps Engineer]]></description><link>https://blog.olaibeun.com</link><image><url>https://cdn.hashnode.com/res/hashnode/image/upload/v1768929454075/f048462c-f85d-4280-a744-7d133dd5b4a8.png</url><title>Techsalad</title><link>https://blog.olaibeun.com</link></image><generator>RSS for Node</generator><lastBuildDate>Thu, 30 Apr 2026 13:21:48 GMT</lastBuildDate><atom:link href="https://blog.olaibeun.com/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Blogging 101]]></title><description><![CDATA[In recent years, weblogging popularly known as blogging has been a means for writers to create a relationship with their readers by self-publishing articles, photography, and other media contents online. 
The need to get feedback from these self-publ...]]></description><link>https://blog.olaibeun.com/blogging-101</link><guid isPermaLink="true">https://blog.olaibeun.com/blogging-101</guid><category><![CDATA[what successful blogging means to me]]></category><category><![CDATA[Developer Blogging]]></category><category><![CDATA[Programming Blogs]]></category><category><![CDATA[Data Science]]></category><category><![CDATA[#growth]]></category><dc:creator><![CDATA[Oladipupo Joseph Ibeun]]></dc:creator><pubDate>Sat, 14 Nov 2020 15:09:13 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1605366416059/NTto-I0tD.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In recent years, weblogging popularly known as blogging has been a means for writers to create a relationship with their readers by self-publishing articles, photography, and other media contents online. </p>
<p>The need to get feedback from these self-published articles has created an evaluation bottle-neck for beginners in blogging. Generally, the misconception would be that your blog will blow out when you publish your first article. Although this is a possibility, it’s rarely the case. </p>
<p>I started blogging this year, few months after I got into the world of data science, my primary goal is to share my acquired knowledge and make it easier for my readers to get things done faster than I was able to do them.</p>
<p>In this article, I’ll share “what successful blogging means to me” as a beginner in blogging. I’ll break successful blogging down into two categories:</p>
<ul>
<li><strong>Self-satisfaction</strong>: If I study a concept, solve a problem or create a project and I write an article that demystifies the work done to the level of a 5-year-olds intuition, then I consider that a success. Before I start thinking about the numbers return I get on my blog, I want to be sure that every concept and tool contained in that blog post is structured in the most basic and understandable way. I believe if I can achieve this level of demystification on every blog post, my audience will grow organically. </li>
</ul>
<blockquote>
<p>while you are here, check out my article on <a target="_blank" href="https://oladipupoibeun.hashnode.dev/automate-log-file-clearing">automation using python programming language.</a> it's a fun and work salad 😊</p>
</blockquote>
<p>The second and last category is:</p>
<ul>
<li><strong>One-feedback rule</strong>: A blog post is meant to communicate a concept with the readers. Communication in itself is not complete without feedback. I believe a blog post that’s well written will connect with at least one reader. If that one reader gives feedback in any form to signify that he/she has gotten value from the time invested in my article, then that’s a success!
Haven said these few things, it’s important to note that developing your writing skills will have a positive impact on the traffic you generate for your blog.
I hope you’ve learned a thing or two from this post. Do leave a comment if you feel obliged.</li>
</ul>
<blockquote>
<p>Knowledge nugget: while writing this blog post, I discovered a little functionality in Microsoft word 2016 that allows you to impute a border-line on the current cursor line by typing an asterisk three times or more and pressing enter. If you did not know that, you’re welcome 😊</p>
</blockquote>
]]></content:encoded></item><item><title><![CDATA[Automate log file clearing]]></title><description><![CDATA[Repetitive daily activities can get cumbersome and tiring. Recently, I found myself trying to navigate through all the folders in my personal computer searching for log files and deleting them one after the other. This process is tiring. For this rea...]]></description><link>https://blog.olaibeun.com/automate-log-file-clearing</link><guid isPermaLink="true">https://blog.olaibeun.com/automate-log-file-clearing</guid><category><![CDATA[automation]]></category><category><![CDATA[Python]]></category><category><![CDATA[Script]]></category><category><![CDATA[#⛺the-technical-writing-bootcamp]]></category><dc:creator><![CDATA[Oladipupo Joseph Ibeun]]></dc:creator><pubDate>Fri, 13 Nov 2020 23:26:43 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1605367251779/ZX6JSbmY3.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Repetitive daily activities can get cumbersome and tiring. Recently, I found myself trying to navigate through all the folders in my personal computer searching for log files and deleting them one after the other. This process is tiring. For this reason, I wrote a python scripts that does all my log clearing.</p>
<blockquote>
<p>Before we go on, if you are reading this and have always wondered what webscrapping is and want to learn how to scrape a website, my article on <a target="_blank" href="https://oladipupoibeun.hashnode.dev/5-steps-to-easy-web-scraping">5 steps to easy webscraping</a> is for you. Check it out!</p>
</blockquote>
<p>The solution implemented in the article can be found here:  <a target="_blank" href="https://github.com/josephdickson11/python_utilities">Github repo</a> </p>
<h3 id="tools-used">Tools used</h3>
<ol>
<li>Python programming language</li>
</ol>
<h3 id="packages-used">Packages used</h3>
<ol>
<li>Os.path : to access directories and files</li>
<li>Datetime: to create instance of data and time the files were last modified</li>
<li>Beepy: User notification alert</li>
</ol>
<h3 id="solution-process">Solution process</h3>
<p>To effectively solve the problems, every steps that is to be executed is functionalized. I will explain each function in this section. If you would rather skip the explanation and review the implemented solution, you can find the github link here.</p>
<ol>
<li>success_alert: to alert the user if the task was completed successfully<pre><code><span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">success_alert</span><span class="hljs-params">()</span></span>:
 beepy.beep(<span class="hljs-number">6</span>)
</code></pre></li>
<li>error_alert: to alert the user if there was an error in execution<pre><code><span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">error_alert</span><span class="hljs-params">()</span></span>:
 beepy.beep(<span class="hljs-number">2</span>
</code></pre></li>
<li>check_path: to check if the path specified by the user exists on the personal computer<pre><code><span class="hljs-comment"># create a function to check if log_directory path exists</span>
<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">check_path</span>(<span class="hljs-params">path</span>):</span>
 <span class="hljs-keyword">if</span> os.path.exists(path):
     print(<span class="hljs-string">"file path exists"</span>)
 <span class="hljs-keyword">else</span>:
     error_alert()
     print(<span class="hljs-string">f'<span class="hljs-subst">{path}</span> does not exist'</span>)
</code></pre></li>
<li>confirm_directory: to check if the existing path is a directory or not. This is because the scripts require a directory in which it loops the directory to select specific files<pre><code><span class="hljs-comment"># create function to check if path is a directory</span>
<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">confirm_directory</span>(<span class="hljs-params">path</span>):</span>
 <span class="hljs-keyword">if</span> os.path.isdir(path):
     print(<span class="hljs-string">f'<span class="hljs-subst">{path}</span> is a directory, we are good to go'</span>)
 <span class="hljs-keyword">else</span>:
     error_alert()
     print(<span class="hljs-string">f'<span class="hljs-subst">{path}</span> is not a directory, change path and try again'</span>)
</code></pre></li>
<li><p>create_file_path: check for sub folders and iterate through them to create file_path and delete all log files created today.</p>
<pre><code><span class="hljs-comment"># check for sub folders and iterate through them to create file_path and delete all log files created today</span>
<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">create_file_path</span>(<span class="hljs-params">path</span>):</span>
 <span class="hljs-keyword">for</span> base_folder, folder, files <span class="hljs-keyword">in</span> os.walk(path):
     <span class="hljs-comment"># check for files</span>
     <span class="hljs-keyword">for</span> file <span class="hljs-keyword">in</span> files:
         <span class="hljs-comment"># create file_path</span>
         file_path = os.path.join(base_folder, file)

         <span class="hljs-comment"># getting file extension</span>
         file_extension = os.path.splitext(file_path)[<span class="hljs-number">1</span>]

         <span class="hljs-comment"># compare file extension with log_extension</span>
         <span class="hljs-keyword">if</span> log_extension == file_extension:
             <span class="hljs-comment"># check file properties for set condition</span>
             <span class="hljs-comment"># get date file was last modified</span>
             timestamp = date.fromtimestamp(path.stat().st_ctime)

             <span class="hljs-keyword">if</span> date.today() == timestamp:
                 <span class="hljs-keyword">if</span> <span class="hljs-keyword">not</span> os.remove(file_path):
                     success_alert()
                     print(<span class="hljs-string">f'<span class="hljs-subst">{file_path}</span> removed successfully'</span>)
                 <span class="hljs-keyword">else</span>:
                     print(<span class="hljs-string">f'Unable to delete <span class="hljs-subst">{file_path}</span>'</span>)
         <span class="hljs-keyword">else</span>:
             print(<span class="hljs-string">f'<span class="hljs-subst">{file_path}</span> is not a log file'</span>)
</code></pre></li>
</ol>
<p>Usage: to make use of the solution, simply download and install python from this <a target="_blank" href="https://www.python.org/downloads/">link</a>, run pip install requirements.txt and run the python scripts available in the github repo provided <a target="_blank" href="https://github.com/josephdickson11/python_utilities">here</a>.</p>
<blockquote>
<p>Furthermore: Feel free to contribute your own python utility scripts to this <a target="_blank" href="https://github.com/josephdickson11/python_utilities">repo</a>, lets build a community together. I look forward to your pull request!.</p>
</blockquote>
]]></content:encoded></item><item><title><![CDATA[5 Steps to easy web Scraping]]></title><description><![CDATA[What is web scraping? How do I scrape a webpage? What are the tools used for scraping a webpage? These are questions that have been asked by aspiring data analysts, data scientists, data engineers and data practitioners. This article will provide eas...]]></description><link>https://blog.olaibeun.com/5-steps-to-easy-web-scraping</link><guid isPermaLink="true">https://blog.olaibeun.com/5-steps-to-easy-web-scraping</guid><dc:creator><![CDATA[Oladipupo Joseph Ibeun]]></dc:creator><pubDate>Tue, 08 Sep 2020 15:11:09 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1605367382373/teVxH2wuQ.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>What is web scraping? How do I scrape a webpage? What are the tools used for scraping a webpage? These are questions that have been asked by aspiring data analysts, data scientists, data engineers and data practitioners. This article will provide easy, functional and actionable explanations to what web scrapping is and how to perform web scraping in 5 easy steps in python.</p>
<p>Let’s get started:</p>
<h2 id="what-is-web-scraping"><strong>What is web scraping?</strong></h2>
<p>Web scraping refers to the process of retrieving data that is stored on websites. If you have ever gone to a website to collect data about a particular topic, you have scraped the web. However, manually going to a search engine to download all the result you got from your “images of cat” query can be extremely tedious and time consuming. The process you used to collect this data can be automated for when you need to collect large amounts of data, like the result of your “images of a cat” query.</p>
<p>Web scraping is a name given to the process of automating the manual task of retrieving information from a website. Web scraping is perceived to be a daunting task that can only be performed by senior programmers through countless lines of code, this assumption is not accurate. Although, scraping a website requires you to have a coding background, the task is relatively easy with tools like python, request, BeautifulSoup, selenium and many others. Textual data, image files, video files can all be retrieved through web scraping.</p>
<p>Now that we know what web scraping is, how exactly do we scrape a webpage?</p>
<p>Note, the code used in this article is provided  <a target="_blank" href="https://github.com/josephdickson11/web_scrapers.git">here</a> </p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://github.com/josephdickson11/web_scrapers.git">https://github.com/josephdickson11/web_scrapers.git</a></div>
<h2 id="how-to-scrape-a-webpage"><strong>How to scrape a webpage?</strong></h2>
<p>These are 5 easy steps to scrape a webpage using python:</p>
<p><strong>1. Identify desired webpage:</strong> Identifying a web page that contains the data one wants to retrieve is the first step in web scraping. For example, if you want to retrieve ratings and genre of movies released from the year 2018–2020, you can get this data from the IMDB website. Head-on to the site, set the filters on the search query to the desired output and the web engine will display all desired data. Where do you go from here?</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1599576632053/u_MhBCY4k.png" alt="Screenshot (48).png" /></p>
<p><strong>2. Study the structure of the webpage:</strong> In this step, you will need to view the source code of the page and study the html elements. There are built in tools in modern web browsers that enables users to interact with the backend of the webpage. In Chrome, you can simply right-click anywhere on the webpage and click on “view page source” or “inspect” this will launch the developers console, giving you access to the webpage backend.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1599577183049/-CTkefFeH.png" alt="Screenshot (49).png" /></p>
<p><strong>3. Locate data and HTML element tree:</strong> After carefully studying the structure of the webpage, you should be able to identify the location of the actual data you wish to retrieve. Another way to do this is to simply move the cursor to the position of your desired data, right-click and click on “inspect”, and this will take you directly to the containing html element tag. Now that we have located the desired data, we can proceed to write the efficient code to get us the data.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1599577185390/FvdTWOT6x.png" alt="Screenshot (51).png" /></p>
<p><strong>4. Write the code to retrieve the data:</strong> You are almost done, now automate all the steps from one through three, in other to achieve this, one has to be familiar with the tools used for web scraping;</p>
<h3 id="tools-for-web-scraping">Tools for web scraping</h3>
<p>There are several python modules that can be used for scraping websites. These modules include Request, BeautifulSoup, Selenium, Scrapy and many others. For the purpose of this course, the focus will be on Request and BeautifulSoup as they are both sufficient to achieve our aim.</p>
<ul>
<li><p>Request: Request is a python module that enables users to send HTTP request such as GET and POST using python code. The module is preinstalled with the python base environment and offers features such as sessions with cookies, multipart file uploads, streaming downloads, connection timeouts and many more.</p>
</li>
<li><p>BeautifulSoup: BeautifulSoup a native module that enables python to parse the HTML and XML documents retrieved through the request get method. The module needs to be installed with the command pip install beautifulsoup4 before it can be used.  <a target="_blank" href="https://github.com/josephdickson11/web_scrapers.git">some of the offered features can be seen here</a> </p>
</li>
</ul>
<p>Now that we have the tools, we can put them to use and write the code!</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1599577601357/wH7fHhKeB.png" alt="Screenshot (52).png" /></p>
<p><strong>5. Store retrieved data:</strong> Now that you have the data, the data can be stored in any desired format. For the purpose of this article, the data will be stored in a pandas dataframe.</p>
<p>feel free to give feed backs about the article. Ask questions about ambiguous concepts, and suggestions will be highly appreciated</p>
]]></content:encoded></item></channel></rss>