Posts

Showing posts with the label python

Realtime Distributed Deduplication: How storagebox Works

Image
StorageBox is a Python module that allows you to put items inside a storagebox (commonly referred to as the "Item Bank") and take items outside of the "Item Bank". As is the case with any physical storage box, the number of items you put in, is exactly the number of items you can take out. Nothing is lost and/or duplicated due to multiple distributed nodes doing simultaneous read/writes. StorageBox is ideal for projects that need to be developed really quickly without needing to worry about all potential race conditions. From a running cost prespective, It's also ideal for projects that receive a burst of requests at a specific point in time and then things start calming down. At the current state, StorageBox works with Amazon's DynamoDB but the same algorithm can be used with other databases! How does it work behind the scenes? Think of a Digital Box Let's start simple and imagine your run a movie store! You have 3 voucher codes you'd like to give t

Binding Class Attributes In Python (Part 2)

Image
Hello everyone, sorry I haven’t blogged for a while but I was busy with other matters and barely managed to allocate enough time over the weeks to write this article. My last article was about how you can use Python to bind to class attributes together so that updating one automatically updates the other. I also demonstrated how we used this method in a college project to implement a MIPS processor by defining each block, defining its inputs and outputs (in terms of inputs) and then, using the demonstrated method, tell Python that the output of this block is connected to the input of the other block and just letting everything evaluate itself automatically. This was, by far, the most viewed article on my blog, so if you haven’t read this article, I recommend you go do that now, just follow this link . The old article also contains a lot of essential background which is required for understanding this article, so if you want to make the most of this article, read the old one firs

Binding Class Attributes In Python

Image
You can also read this article from my LinkedIn here . If you’re not interested in my personal motivation to do this, you can skip right to the Essential Python Background section. Introduction During my last semester, my friends and I were studying a course called Computer Architecture . This course covered topics concerning how a computer processor works and how it is built and wired up internally. As a project, we were asked to build a software simulator that should be given input in the same manner a computer processor is given input, and then it produces the same output as the processor. After a lot of discussion, and despite facing some opposition, we decided that Python was the right tool for the job. The thing is, we had something in mind, that would make the whole process a trivial piece of cake but that something was not offered by default in Python. We had to build it ourselves. I was given the task of making this magic happen and I will explain what this magic wa

Using Squid, Apache and Python To Develop a Captive Portal Solution

Image
You can also read this article from my LinkedIn from this URL  https://www.linkedin.com/pulse/using-squid-apache-python-develop-captive-portal-solution-peter-emil When I was a student in high school, I was always fascinated with captive portals. It always felt like a super-secret powerful thing to redirect someone’s traffic to a website of my choice. Despite having this weird fascination, I never knew that this was called a captive portal until I went to my network security internship. During my internship, I was introduced to lots of concepts but never really learnt how to combine the ones I need to produce something like a captive portal page. Before we dive into this article you must first Have squid installed and configured as a transparent proxy. There are lots of guides on the internet that will i ns truct you on how to complete this step. Have Apache (or similar) installed and configured to use CGI (in our case, for a python script). [OPTIONAL] Have a local DNS