Skip to main content

Posts

Showing posts from December, 2020

Creating a linked list

 I'm working my way through the mini courses on LeetCode to understand data structures and algorithms better. I am currently on linked lists. After a few slides, I was tasked with creating a linked list. I had no idea what to do and was stuck on this problem for days. I would look at it for a bit, not know what to do, and try to work on something else, and not be able to focus on that something else because I didn't know what to do about the linked list. Meh! It was a long 3-4 days. I finally figured it out and I have to say I feel very pleased with myseld :D  Step 1: Define a node class and a linked list class.  Each node has a value and a pointer to the next node. There is just a single pointer here because I chose to create a singly linked list. You can also have a pointer in the reverse direction point at the previous node. That would be a doubly linked list. I also had to define my actual linked list which held the value for the head node.  Step 2: Create a get method to g

Python Decorators from the Best Site Ever

 This is a topic that I keep encountering but have struggled to fully grasp. To be fair I haven't looked too deeply into it. And now I am doing so. Python-course has a great article  on the topic. They really go step by step. I've summarised what was in the article and re-written it in a way I understand it better. A few notes about Python functions: Function names are references to functions and you can assign multiple names to the same function          e.g.  def func(x):                         return x                    func2 = func                    ==>> Calling either func2(4) or func(4) would give the same output as they are just references to the same function   Functions can be nested inside functions. I have done this a handful of times. Functions can accept other functions as arguments.  Functions can return functions These features are important in understanding how a decorator works. A decorator allows you to add additional features to functions by modifyin

Inserting data from CSV into Postgres table with Python

I've been looking into how to insert data from a CSV file into a Postgres Table with code. Turns out it's pretty simple and straightforward. I personally prefer doing it in code than with a command, but I'm not sure what is more common in the industry.  So now I should be able to load data from a CSV file into a Postgres table to create a REST API. The next step is trying to figure out how to convert that data into JSON format. 🤔

Figuring out Postgres Part 2(Adding data)

 My database is set up. My table is set up. Now it's time to add some data. There are 2 main ways we can do it - add data from an external file, or add data with Python.  Adding data from an external file A colleague of mine introduced me to a website - Kaggle . You can download datasets in a few different formats from this site which is pretty amazing! I found one for cat breed characteristics. I don't put much stock in breeds and that sort of thing, but I thought it would be a nice data set to use. The table I created previously wasn't exactly a good match for this data so I created a new table. One that was specifically for domestic cats and not all cats, big and small.  In SQL Shell(psql) Using the copy command in the screenshot below, I copied data from the csv file to my domestic_cats table. Printing a simple query in my Python file revealed that the data was actually copied. It was pretty exciting to see it all there.  Data printed to the terminal Input data with Pyt

Figuring out Postgres Part 1(Setting it up)

 I've been meaning how to use Postgres for a while now and I've finally decided to dive into it. First step, installing Postgres from their website . I kept all the default settings which meant it installed PostgreSQL Server, pgAdmin4, Stack Builder, and Command Line Tools. It later prompted me to set up Stack Builder, but I took a look at this tutorial  and determined that I don't really need to do that right now. It also helped me figure out how to verify the installation using SQL Shell(psql). Everything looks good so far. I followed another tutorial on Linkedin learning to create a database. Next on the tutorial, create a virtual environment and install Psycopg2-binary in it. Apparently it's a Postgres database adapter.  And because I'm an idiot, I forgot where I saved the database. I opened up Postgres shell and used the command SHOW data_directory; But it turns out I didn't need it anyway 😁 I created a new Python file and added the following lines of cod

Free form

 I'm been trying to find a free form submission service for the longest time. I was using google forms for the longest time but it's really ugly. It doesn't offer much in the way of customisation either. I finally came across something called Formspree and it's hard to believe that it's so easy to use! And it's free for 50 submissions a month! There's no way I'm going to get more than 50 submissions on my wee little portfolio site, so this suits me perfectly! Unfortunately the success page is a formspree page but hey, it's free. I can't complain. It makes me feel great when I manage to find workarounds 😁

Shortcuts

 I saw one of my colleagues do something magical. He automatically fixed the alignment of student code on Visual Studio with just 1 little keyboard shortcut. Ctrl-k, followed by D. Holding down Ctrl the entire time Sometimes shortcuts really do work and make your life better!   

z-index epiphany

 It only recently occurred to me why a z-index is called a z-index. I've known about this CSS property for a little over a year now. And I'm completely embarrassed that I didn't realise this sooner. It refers to the z axis. As in x axis, y axis and z axis. When did I have this epiphany? In the shower. Proof that showers are good for more than just keeping yourself clean.

Python database migrations

 I've gotten extremely comfortable with the commands "manage.py makemigrations" and "manage.py migrate" but today I learnt a new database related command. manage.py migrate [insert app name] zero 😮😮😮😮😮 This simple command is the Ctrl-Z for migrations. It drops the tables for the app. All this while, whenever I have trouble with any of the tables I delete the entire database when I could have been deleting that table alone. oops 😁