python object oriented programming

: behavior of data types and operations for mutable and immutable objects in python language The examples and explanations in this post have the following specifications: environment: vagrant virtual machine with linux 14.04.5 LTS for Ubuntu language: Python 3.6.1 (default, Nov 17 2016, 01:08:31) compiler: gcc (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4 Python docs at docs.python.org describes: all data in a python program is represented by objects or by relations between objects. docs.python.org, further explains this concept in reference to PyObject and PyVarObject: PyObject All object types are extensions of this type. This is a type which contains the information Python needs to treat a pointer to an object as an object. In a normal “release” build, it contains only the object’s reference count and a pointer to the corresponding type object. It corresponds to the fields defined by the expansion of the PyObject_HEAD macro. PyVarObject This is an extension of PyObject that adds the ob_size field. […]

read more

arsine, a custom shell command line interpreter

:a step by step process of how the custom shell, arsine, processes the input command ‘ls -l‘ and returns output in a terminal emulator Co-Authored with: Bobby Yang, follow @glyif on twitter and github. For reference to the code of arsine, it is hosted on github (@glyif , repo simple_shell): https://github.com/glyif/simple_shell These beginning steps until the custom _getline() function all occur for all processes and all inputs into arsine including ls -l, and so therefore, there is no specific explanation of what happens in the case of ls -l until the _getline() function explanations. arguments inventory The major component of the initialization of arsine occurs in a function that builds a struct termed the arguments inventory. This arguments inventory has almost all of the major variables utilized within arsine; also, many of the functions in arsine take the arguments inventory as input parameters. It was a concept that was implemented in […]

read more

can’t see the forest through the trees

:on the kernel | linux vs. unix | operating system vs. ubuntu vs. virtual machine | shell vs. bash | command line vs. terminal As daunting as I imagined the task of writing this article would be, it wasn’t worse than the feeling I continually face of having to learn to program software without a solid grasp of the meaning of the aforementioned components and applications. In my Software Engineering training at Holberton School, when we utilize the above listed applications, I often feel confused as to the differences between each of the different components and systems. My main problem is that I miss the big picture of how my computer software that I utilize is structured and connected to the rest of my computer. This also creates problems for how I communicate about what I’ve coded on my computer, especially for people that use different software and different machines. Not being able […]

read more

links: hard vs. symbolic

:using the ln command in bash to distinguish between hard and symbolic links Stated below is an excerpt from the unix BSD General Commands Manual on ‘ln’. In the description, I have only copied one option, which is relevant to this tutorial, and I have left out the majority of the content from the manual. NAME: link, ln — make links SYNOPSIS: ln [-Ffhinsv] source_file [target_file] DESCRIPTION: The ln utility creates a new directory entry (linked file) which has the same modes as the original file. It is useful for maintaining multiple copies of a file in many places at once without using up storage for the “copies’’; instead, a link “points’’ to the original copy. There are two types of links; hard links and symbolic links. How a link “points’’ to a file is one of the differences between a hard and symbolic link. The options are as follows: […]

read more

how the terminal works: command line input

:do you ever wonder how a computer works? As a beginner software engineering student at Holberton School, we are being taught to use the terminal command line to use the functions of a computer. In this post I will explain a very basic concept of what happens with a computer when a user types input. In my work so far and in the ways that I explain a computer system, I will be referring to the bash shell program in Mac OS terminal using ubuntu and GNU linux (click the links for wikipedia references on those concepts). Additionally, to help with my explanation, I’ll use the input command ls *.c as an example of many of the concepts of how terminal and a computer work. This is how that command might look in your terminal: USER@computerNAME: ~/$ ls *.c commands To learn about commands from the manuals in terminal input […]

read more