From 29036930617490e50a2b00922a7a4119c7225b7b Mon Sep 17 00:00:00 2001 From: Siddharth Ravikumar Date: Tue, 22 Mar 2016 09:47:11 -0400 Subject: space before \cite. --- report/chapters/3-arch-d.tex | 75 +++++++++++++++++++++++++------------------- 1 file changed, 43 insertions(+), 32 deletions(-) (limited to 'report/chapters/3-arch-d.tex') diff --git a/report/chapters/3-arch-d.tex b/report/chapters/3-arch-d.tex index fb0b5be..e1a84fd 100644 --- a/report/chapters/3-arch-d.tex +++ b/report/chapters/3-arch-d.tex @@ -5,7 +5,7 @@ examine things in greater detail, these simple models become inadequate and must be replaced by more refined models.}{\textit{Structure and Interpretation of Computer Programs, - Section 1.1.5}\cite{sicp}} + Section 1.1.5} \cite{sicp}} \section{Structure of combox} @@ -39,9 +39,9 @@ encrypted shards to their respective directories. Once the encrypted shards are synced to the node directories, combox will pick the encrypted shards -- \verb+humans.txt.shard0+, \verb+humans.txt.shard1+ -- decrypt them and reconstruct into \verb+humans.txt+ and place it in -the respective location under the combox directory; figure -\ref{fig:3-combox-structure} illustrates this. The process is similar -for file modification, deletion and rename/move. +the respective location under the combox directory; +Fig. \ref{fig:3-combox-structure} illustrates this. The process is +similar for file modification, deletion and rename/move. \subsection{combox configuration}\label{sec:3-combox-config} @@ -54,8 +54,8 @@ directories. The combox configuration is written to \verb+$HOME/.combox/config.yaml+. This YAML configuration file can be manually edited by the user. -The -\verb+config_cb+\footnote{https://git.ricketyspace.net/combox/tree/combox/config.py?id=fb7fdd21\#n90} +The \verb+config_cb+ +\footnote{https://git.ricketyspace.net/combox/tree/combox/config.py?id=fb7fdd21\#n90} function in the \verb+combox.config+ module is responsible for carrying out the combox configuration. Prior to version \verb+0.2.0+, the combox configuration was purely done through the Command Line @@ -66,15 +66,16 @@ switch. A demo of combox configuration using the graphical interface on GNU/Linux can be viewed -\url{https://ricketyspace.net/combox/combox-config-gui-glued-gnu.webm}{here}. +\url{https://ricketyspace.net/combox/combox-config-gui-glued-gnu.webm}. T he same demo of combox configuration using the graphical interface on OS X can be viewed -\url{https://ricketyspace.net/combox/combox-config-gui-glued-osx.webm}{here}. +\url{https://ricketyspace.net/combox/combox-config-gui-glued-osx.webm}. \subsection{combox directory monitor}\label{sec:3-combox-cdirm} combox directory monitor is an instance of -\verb+combox.events.ComboxDirMonitor+\footnote{https://git.ricketyspace.net/combox/tree/combox/events.py?id=fb7fdd21\#n42} +\verb+combox.events.ComboxDirMonitor+ +\footnote{https://git.ricketyspace.net/combox/tree/combox/events.py?id=fb7fdd21\#n42} monitoring the combox directory for changes. When changes are made to the combox directory, the combox directory monitor is responsible for correctly detecting the type of change and doing the right thing at @@ -105,7 +106,8 @@ and store the hash of file under its new name. \subsection{Node directory monitor}\label{sec:3-combox-nodirm} Node directory monitor is an instance of -\verb+combox.events.NodeDirMonitor+\footnote{https://git.ricketyspace.net/combox/tree/combox/events.py?id=fb7fdd21\#n352} +\verb+combox.events.NodeDirMonitor+ +\footnote{https://git.ricketyspace.net/combox/tree/combox/events.py?id=fb7fdd21\#n352} that monitors a node directory. When changes are made to the node directory, the node directory monitor is responsible for correctly detecting the type of change and doing the right thing at that @@ -188,13 +190,13 @@ remote file movement/deletion/creation/modification and triggering file reconstruction from the encrypted shards at the right time. The data store is a JSON file on the disk, stored by default at \\ -\verb+$HOME/.combox/silo.db+. The -\verb+combox.silo.ComboxSilo+\footnote{https://git.ricketyspace.net/combox/tree/combox/silo.py?id=v0.2.2\#n29} +\verb+$HOME/.combox/silo.db+. The \verb+combox.silo.ComboxSilo+ +\footnote{https://git.ricketyspace.net/combox/tree/combox/silo.py?id=v0.2.2\#n29} is the sole interface to read from and write to the data store. The data store is primarily accessed and modified by the combox directory monitor (\verb+ComboxDirMonitor+) and the node directory monitor (\verb+NodeDirMonitor+) through a shared \verb+threading. Lock+ that -ensures that only one entity\footnote{An entity can be the combox +ensures that only one entity \footnote{An entity can be the combox directory monitor or one of the node directory monitors} can access/modify the database at a time. @@ -248,7 +250,8 @@ This section gives an overview of each of the combox modules with extreme brevity. \begin{description} -\item[combox.cbox]\footnote{https://git.ricketyspace.net/combox/tree/combox/cbox.py?id=fb7fdd21} +\item[combox.cbox] + \footnote{https://git.ricketyspace.net/combox/tree/combox/cbox.py?id=fb7fdd21} This module contains \verb+run_cb+ function that starts/initiates combox; this function creates an instance \verb+threading.Lock+ for combox data store access and another instance of @@ -261,7 +264,8 @@ extreme brevity. function that parses commandline arguments, starts combox configuration if needed or loads the combox configuration file to start running combox. -\item[combox.config]\footnote{https://git.ricketyspace.net/combox/tree/combox/config.py?id=fb7fdd21} +\item[combox.config] + \footnote{https://git.ricketyspace.net/combox/tree/combox/config.py?id=fb7fdd21} Accommodates two import functions -- \verb+config_cb+ and \verb+get_nodedirs+. The \verb+config_cb+ is the combox configuration function that allows the user to configure combox; @@ -270,7 +274,8 @@ extreme brevity. combox. The \verb+get_nodedirs+ function returns, as a list, the paths of the node directories; this function use used in numerous places in other combox modules. -\item[combox.crypto]\footnote{https://git.ricketyspace.net/combox/tree/combox/crypto.py?id=fb7fdd21} +\item[combox.crypto] + \footnote{https://git.ricketyspace.net/combox/tree/combox/crypto.py?id=fb7fdd21} This has functions for encrypting and decrypting data; encrypting and decrypting shards (\verb+encrypt_shards+ and \verb+decrypt_shards+); a function for splitting a file into shards, @@ -284,7 +289,8 @@ extreme brevity. functions in this module are pretty much helper functions for \verb+split_and_encrypt+ and \verb+decrypt_and_glue+ functions and are not used by other modules. -\item[combox.events]\footnote{https://git.ricketyspace.net/combox/tree/combox/events.py?id=fb7fdd21} +\item[combox.events] + \footnote{https://git.ricketyspace.net/combox/tree/combox/events.py?id=fb7fdd21} This module took the most time to write and test and it is the most complex module in combox at the time of writing this report. It contains just two classes -- \verb+ComboxDirMonitor+ and @@ -298,28 +304,33 @@ extreme brevity. change happens in the node directory; subjectively, \verb+NodeDirMonitor+ is slightly more complex than the \verb+ComboxDirMonitor+. -\item[combox.file]\footnote{https://git.ricketyspace.net/combox/tree/combox/file.py?id=fb7fdd21} +\item[combox.file] + \footnote{https://git.ricketyspace.net/combox/tree/combox/file.py?id=fb7fdd21} This is the second largest module in combox. It contains utility functions for reading, writing, moving files/directories, hashing files, splitting a file into shards, gluing shards into a file, manipulating directories inside combox and node directories. -\item[combox.gui]\footnote{https://git.ricketyspace.net/combox/tree/combox/gui.py?id=fb7fdd21} +\item[combox.gui] + \footnote{https://git.ricketyspace.net/combox/tree/combox/gui.py?id=fb7fdd21} Contains the \verb+ComboxConfigDialog+ class; it is the graphical - interface for configuring combox. The class uses the Tkinter - library\cite{pylib:tkinter} for spawning graphical elements. Other - graphical libraries including PyQt\cite{pylib:qt} were considered, + interface for configuring combox. The class uses the Tkinter library + \cite{pylib:tkinter} for spawning graphical elements. Other + graphical libraries including PyQt \cite{pylib:qt} were considered, Tkinter was chosen over others due to compatibility with all Unix, Unix-like systems and Microsoft Windows and it is part of the standard python library from python version 3 on wards. -\item[combox.log]\footnote{https://git.ricketyspace.net/combox/tree/combox/log.py?id=fb7fdd21} +\item[combox.log] + \footnote{https://git.ricketyspace.net/combox/tree/combox/log.py?id=fb7fdd21} All the messages to \verb+stdout+ and \verb+stderr+ are sent through the \verb+log_i+ and \verb+log_e+ functions defined in this module. -\item[combox.silo]\footnote{https://git.ricketyspace.net/combox/tree/combox/silo.py?id=fb7fdd21} +\item[combox.silo] + \footnote{https://git.ricketyspace.net/combox/tree/combox/silo.py?id=fb7fdd21} 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]\footnote{https://git.ricketyspace.net/combox/tree/combox/\_version.py?id=fb7fdd21} + pickleDB library \cite{pylib:pickledb}. +\item[combox.\_version] + \footnote{https://git.ricketyspace.net/combox/tree/combox/\_version.py?id=fb7fdd21} 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 @@ -337,7 +348,7 @@ the realm of the ``core functionality of combox''. The main reason behind this decision was to not indulge in trying to solve problems that others have already solved. -Accordingly, the \verb+watchdog+\cite{pylib:watchdog} library was +Accordingly, the \verb+watchdog+ \cite{pylib:watchdog} library was chosen for file monitoring. This library is compatible with Unix, Unix-like systems and Microsoft Windows. The \verb+pycrypto+ library \cite{pylib:pycrypto} was used for encrypting data. Combox uses AES @@ -405,17 +416,17 @@ Python has a package registry called CheeseShop \footnote{code name for Python Package Index, see https://wiki.python.org/moin/CheeseShop}. All packages registered at the CheeseShop can be installed using \verb+pip+ -- Python's -platform independent package management system\cite{py:pip} -- with: +platform independent package management system \cite{py:pip} -- with: \begin{verbatim} pip install packagename \end{verbatim} To make it easier for (python) users to install combox on their -machine, an effort was made to make it a python -package\cite{py:package-guide}. From version \verb+0.2.0+, combox has -been registered as a python package at the CheeseShop. (Python) Users -can now easily get a copy of combox on their machine with: +machine, an effort was made to make it a python package +\cite{py:package-guide}. From version \verb+0.2.0+, combox has been +registered as a python package at the CheeseShop. (Python) Users can +now easily get a copy of combox on their machine with: \begin{verbatim} pip install combox -- cgit v1.2.3