converted entire docs to org mode
This commit is contained in:
202
README.md.tex
Normal file
202
README.md.tex
Normal file
@@ -0,0 +1,202 @@
|
||||
% Created 2025-01-19 Sun 00:17
|
||||
% Intended LaTeX compiler: pdflatex
|
||||
\documentclass[11pt]{article}
|
||||
\usepackage[utf8]{inputenc}
|
||||
\usepackage[T1]{fontenc}
|
||||
\usepackage{graphicx}
|
||||
\usepackage{longtable}
|
||||
\usepackage{wrapfig}
|
||||
\usepackage{rotating}
|
||||
\usepackage[normalem]{ulem}
|
||||
\usepackage{amsmath}
|
||||
\usepackage{amssymb}
|
||||
\usepackage{capt-of}
|
||||
\usepackage{hyperref}
|
||||
\author{Akilan}
|
||||
\date{\today}
|
||||
\title{}
|
||||
\hypersetup{
|
||||
pdfauthor={Akilan},
|
||||
pdftitle={},
|
||||
pdfkeywords={},
|
||||
pdfsubject={},
|
||||
pdfcreator={Emacs 29.1 (Org mode 9.6.6)},
|
||||
pdflang={English}}
|
||||
\begin{document}
|
||||
|
||||
\tableofcontents
|
||||
|
||||
\begin{center}
|
||||
\includegraphics[width=.9\linewidth]{/Users/akilan/.cache/org-persist/3a/9e0d0c-d34d-4242-92ac-49f332af6af0-8b003edff282ad2da5830ec63041260a.png}
|
||||
\end{center}]]
|
||||
|
||||
The main aim of this project was to create a custom peer to peer
|
||||
network. The user acting as the client has total flexibility on how to
|
||||
batch the tasks and the user acting as the server has complete
|
||||
flexibility on tracking the container's usages and killing the
|
||||
containers at any point of time.
|
||||
|
||||
\subsection{Latest tutorial}
|
||||
\label{sec:org9129ee1}
|
||||
\href{https://www.youtube.com/watch?v=OMwCpedu5cs\%22}{\includegraphics[width=.9\linewidth]{/Users/akilan/.cache/org-persist/17/01b895-4c8f-4c97-8b7a-76bde31f87cd-8dfdb3583a175929dac0d44b86acf5b3.jpg}}
|
||||
|
||||
\section{Table of contents in the Docs folder}
|
||||
\label{sec:org881a67e}
|
||||
\begin{enumerate}
|
||||
\item \href{Docs/Introduction.org}{Introduction}
|
||||
\item \href{Docs/Installation.org}{Installation}
|
||||
\item \href{Docs/Abstractions.org}{Abstractions}
|
||||
\item \href{Docs/Implementation.org}{Implementation}
|
||||
\begin{enumerate}
|
||||
\item \href{Docs/ClientImplementation.org}{Client Module}
|
||||
\item \href{Docs/P2PImplementation.org}{P2P Module}
|
||||
\item \href{Docs/ServerImplementation.org}{Server Module}
|
||||
\item \href{Docs/ConfigImplementation.org}{Config Module}
|
||||
\item \href{Docs/CliImplementation.org}{Cli Module}
|
||||
\item \href{Docs/PluginImplementation.org}{Plugin Module}
|
||||
\end{enumerate}
|
||||
\item Language bindings
|
||||
\begin{enumerate}
|
||||
\item \href{Docs/haskell/}{Haskell}
|
||||
\end{enumerate}
|
||||
\end{enumerate}
|
||||
|
||||
\subsection{Introduction}
|
||||
\label{sec:org00598fd}
|
||||
This project aims to create a peer to peer (p2p) network, where a user
|
||||
can use the p2p network to act as a client (i.e sending tasks) or the
|
||||
server (i.e executing the tasks). A prototype application will be
|
||||
developed, which comes bundled with a p2p module and possible to execute
|
||||
docker containers or virtual environments across selected nodes.
|
||||
|
||||
\subsubsection{Objectives}
|
||||
\label{sec:org385b937}
|
||||
\begin{itemize}
|
||||
\item Background review on peer to peer network, virtual environments,
|
||||
decentralized rendering tools and tools to batch any sort of tasks.
|
||||
\item Creating p2p network
|
||||
\item Server to create a containerised environment
|
||||
\item The client node to run tasks on Server containerised node
|
||||
\end{itemize}
|
||||
|
||||
\href{Docs/Introduction.md}{Read more on the introduction}
|
||||
|
||||
\subsection{Extend your application with P2PRC}
|
||||
\label{sec:orgcab50f2}
|
||||
\begin{verbatim}
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/Akilan1999/p2p-rendering-computation/abstractions"
|
||||
)
|
||||
|
||||
func main() {
|
||||
_, err := abstractions.Init(nil)
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
return
|
||||
}
|
||||
|
||||
// start p2prc
|
||||
_, err = abstractions.Start()
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
return
|
||||
}
|
||||
|
||||
// Run server till termination
|
||||
for {
|
||||
|
||||
}
|
||||
}
|
||||
\end{verbatim}
|
||||
|
||||
\subsubsection{Export once this is added export P2PRC as environment paths}
|
||||
\label{sec:orgd4e7f7c}
|
||||
\begin{verbatim}
|
||||
export P2PRC=<PROJECT PATH>
|
||||
export PATH=<PROJECT PATH>:${PATH}
|
||||
\end{verbatim}
|
||||
|
||||
\href{Docs/Abstractions.md}{Read more} \ldots{}
|
||||
|
||||
\subsection{Installation from source}
|
||||
\label{sec:org6f12be0}
|
||||
\begin{enumerate}
|
||||
\item Ensure the Go compiler is installed
|
||||
|
||||
\begin{verbatim}
|
||||
go version
|
||||
\end{verbatim}
|
||||
|
||||
\item Ensure docker is installed (Should run without sudo)
|
||||
|
||||
\begin{verbatim}
|
||||
docker ps
|
||||
\end{verbatim}
|
||||
|
||||
\item Clone this repository
|
||||
|
||||
\begin{verbatim}
|
||||
git clone https://github.com/Akilan1999/p2p-rendering-computation
|
||||
\end{verbatim}
|
||||
|
||||
\item Install and build the project
|
||||
|
||||
\begin{verbatim}
|
||||
make install
|
||||
\end{verbatim}
|
||||
|
||||
\item If you look closely you will get outputs such as:
|
||||
\texttt{// Add them to your .bashrc file export P2PRC=/<path>/p2p-rendering-computation export PATH=/<path>/p2p-rendering-computation:\$\{PATH\}}
|
||||
|
||||
\setcounter{enumi}{4}
|
||||
\item Test if it works
|
||||
|
||||
\begin{verbatim}
|
||||
p2prc -h
|
||||
\end{verbatim}
|
||||
|
||||
or
|
||||
|
||||
\begin{verbatim}
|
||||
./p2prc -h
|
||||
\end{verbatim}
|
||||
|
||||
\href{Docs/Installation.md}{Read more on the installation and
|
||||
usage}
|
||||
\end{enumerate}
|
||||
|
||||
\subsection{Design Architecture}
|
||||
\label{sec:org2e297a7}
|
||||
The design architecture was inspired and based on the linux kernel
|
||||
design. The project is segmented into various modules. Each module is
|
||||
responsible for certain tasks in the project. The modules are highly
|
||||
dependent on each other hence the entire codebase can be considered as a
|
||||
huge monolithic chuck which acts as its own library
|
||||
|
||||
\href{Docs/DesignArchtectureIntro.md}{Read more on the Design
|
||||
Architecture}
|
||||
|
||||
\subsection{Implementation}
|
||||
\label{sec:orgd4b0943}
|
||||
The programming language used for this project was Golang. The reason Go
|
||||
lang was chosen was because it is a compiled language. The entire
|
||||
codebase is just a single binary file. When distributing to other linux
|
||||
distributing the only requirement would be the binary file to run the
|
||||
code. It is easy to write independant modules and be monolithic at the
|
||||
sametime using Go. Using Go.mod makes it very easy to handle external
|
||||
libraries and modularise code. The go.mod name for the project is
|
||||
git.sr.ht/\textasciitilde{}akilan1999/p2p-rendering-computation.
|
||||
|
||||
\href{Docs/Implementation.md}{Read more on the Implementation}
|
||||
|
||||
\subsection{Find out more}
|
||||
\label{sec:orge8fec0a}
|
||||
As we are working on the open source project p2prc (i.e p2p network
|
||||
designed for computation).If you are interested in participating as a
|
||||
contributor or just providing feedback on new features to build or even
|
||||
just curious about new features added to the project. We have decided to
|
||||
create a discord group.
|
||||
\end{document}
|
||||
Reference in New Issue
Block a user