summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSiddharth Ravikumar <sravik@bgsu.edu>2016-02-05 00:15:26 -0500
committerSiddharth Ravikumar <sravik@bgsu.edu>2016-02-05 00:15:26 -0500
commit2bb8a33db937360c20b05545601243f17a25a218 (patch)
tree523ed36c2cba43d6b168a0205d8d5777c1f66aac
parentbaad1e8c36e9f14fd703cfc19eeb76ba46b8a921 (diff)
Drafted 4.2, 4.3, start 4.4.
-rw-r--r--report/bib/combox.bib15
-rw-r--r--report/chapters/4-arch-d.tex62
-rw-r--r--report/combox-report.pdfbin243581 -> 254038 bytes
3 files changed, 69 insertions, 8 deletions
diff --git a/report/bib/combox.bib b/report/bib/combox.bib
index 0d5dce8..b21f556 100644
--- a/report/bib/combox.bib
+++ b/report/bib/combox.bib
@@ -7,6 +7,21 @@ publisher = "MIT Press",
year = "1996",
}
+@misc{pylib:tkinter,
+title = "Tkinter - Python interface to Tcl/Tk",
+url = "https://docs.python.org/2/library/tkinter.html",
+}
+
+@misc{pylib:qt,
+title = "PyQt - Python binding of the cross-platform GUI toolkit Qt",
+url = "https://riverbankcomputing.com/software/pyqt/intro",
+}
+
+@misc{pylib:pickledb,
+title = "pickleDB - lightweight and simple key-value store",
+url = "https://pythonhosted.org/pickleDB",
+}
+
% 5
@techreport{dijkstra69,
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 <rsiddharth@ninthfloor.org>
+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}
diff --git a/report/combox-report.pdf b/report/combox-report.pdf
index e9163ad..6f121bd 100644
--- a/report/combox-report.pdf
+++ b/report/combox-report.pdf
Binary files differ