From 2bb8a33db937360c20b05545601243f17a25a218 Mon Sep 17 00:00:00 2001 From: Siddharth Ravikumar Date: Fri, 5 Feb 2016 00:15:26 -0500 Subject: Drafted 4.2, 4.3, start 4.4. --- report/chapters/4-arch-d.tex | 62 ++++++++++++++++++++++++++++++++++++++------ 1 file changed, 54 insertions(+), 8 deletions(-) (limited to 'report/chapters/4-arch-d.tex') diff --git a/report/chapters/4-arch-d.tex b/report/chapters/4-arch-d.tex index 219b4f4..a0b28c2 100644 --- a/report/chapters/4-arch-d.tex +++ b/report/chapters/4-arch-d.tex @@ -1,4 +1,3 @@ - \chapter{Structure and Design} \epigraph{In general, when modeling phenomena in science and @@ -98,16 +97,63 @@ extreme brevity: files/directiores, hashing files, splitting a file into shards, glue shards into a file, manipulating directories inside combox and node directories. -\item[combox.gui] -\item[combox.log] -\item[combox.silo] -\item[combox.\_version] - +\item[combox.gui] Contains the \verb+ComboxConfigDialog+ class; it is + the graphical interface for configuring combox. The class uses the + Tkinter library\cite{pylib:tkinter} for spawing graphical + elements. Other graphical libraries include PyQt\cite{pylib:qt} + were considered Tkinter was chosen over others because it works on + all Unix systems and Microsoft's Windows and it is part of the core + python (version 3). +\item[combox.log] All the messages to \verb+stdout+ and \verb+stderr+ + are sent through the functions \verb+log_i+ and \verb+log_e+ + functions defined in this module. +\item[combox.silo] Contains the \verb+ComboxSilo+ class which is the + canonical interface for combox for managing information about the + files in the combox directory. Internally, the \verb+ComboxSilo+ + class uses the pickleDB library\cite{pylib:pickledb}. +\item[combox.\_version] This is \emph{private} module that contains + variables that contain the value of the present version and release + of combox. The \verb+get_version+ function in this module returns + the full version number; this function used by \verb+setup.py+. \end{description} -\section{Language choice and DRY} +\section{Language choice} + +Back in October of 2014, I was learning to write in python and when I +had to start working on combox, I chose to write combox in python. In +my first commit to the combox repository, I had say say this about +python: + +\begin{verbatim} +commit 2def977472b2e77ee88c9177f2d03f12b0263eb0 +Author: rsiddharth +Date: Wed Oct 29 23:24:58 2014 -0400 + + Initial commit: File splitter & File gluer done. + + ... + + I like to write python FWIW. But after reading a dialect of Lisp when + I come back to python, it does not look very beautiful. I guess I'm + pretty convinced that there is no language that can ape the beauty of + Lisp. +\end{verbatim} + +If I were to write that commit message today (\verb+2016-02-04+), I +would've phrased my reflections about python differently. While I've +not found a language that is as intrinsically beautiful as Lisp, I'm +not sure if it is not quite right to compare Lisp and Python. Python +is a very readable language and it tends to be very accessible to +beginners. Also, it is hard to write unreadable Python code. + +\section{DRY} + +The core functionality of combox is to split, encrypt file shards, +spread them across node directories (Google Drive and Dropbox) and +decrypt, glue shards and put them back to the combox directory when a +file is created/modified/deleted/moved in another computer. -\section{Operating system compatibility} +\section{Operating system compatibility}\label{4-os-compat} \section{combox as a python package} -- cgit v1.2.3