Add Source

This commit is contained in:
jarjar 2023-08-01 15:07:11 +02:00
parent 888ed015f1
commit 0600c976fd
13 changed files with 562 additions and 0 deletions

433
source/bubblecv.sty Normal file
View File

@ -0,0 +1,433 @@
%========================================================================================
% PARAMETERS
%========================================================================================
%----------------------------------------------------------------------------------------
% CV SCALE
%----------------------------------------------------------------------------------------
\newcommand\cvscale{1}
%----------------------------------------------------------------------------------------
% FONT
%----------------------------------------------------------------------------------------
\newcommand\cvfont{ppl}
\newcommand\cvheadertitlefontscale{2.25}
\newcommand\cvheadersubtitlefontscale{1.5}
\newcommand\cvsectionfontscale{1.75}
\newcommand\cvnamefontscale{1.25}
\newcommand\cvdescriptionfontscale{1}
%----------------------------------------------------------------------------------------
% MARGIN
%----------------------------------------------------------------------------------------
\newcommand\cvheadermargin{5}
\newcommand\cvtopmargin{10}
\newcommand\cvbottommargin{10}
\newcommand\cvleftmargin{35}
\newcommand\cvrightmargin{10}
%----------------------------------------------------------------------------------------
% HEADER
%----------------------------------------------------------------------------------------
\newcommand\cvavatarradius{20}
\newcommand\cvavatarborderwidth{1}
\newcommand\cvheaderoffset{5}
%----------------------------------------------------------------------------------------
% TIMELINE
%----------------------------------------------------------------------------------------
\newcommand\cvtimelineoffset{25}
\newcommand\cvtimelinewidth{0.5}
%----------------------------------------------------------------------------------------
% MAIN
%----------------------------------------------------------------------------------------
\newcommand\cvmainspace{3}
\newcommand\cvmainbubbleradius{6}
\newcommand\cvmainbubbleborderwidth{1}
%----------------------------------------------------------------------------------------
% EVENT
%----------------------------------------------------------------------------------------
\newcommand\cveventdatewidth{16}
\newcommand\cveventbubbleradius{3}
\newcommand\cveventbubbleborderwidth{1}
%----------------------------------------------------------------------------------------
% SIDEBAR
%----------------------------------------------------------------------------------------
\newcommand\cvsidebarspace{3}
\newcommand\cvsidebarbubbleradius{6}
\newcommand\cvsidebarbubbleborderwidth{1}
\newcommand\cvsidebaroffset{2}
%----------------------------------------------------------------------------------------
% COLUMN
%----------------------------------------------------------------------------------------
\newcommand\cvcolumnratio{0.6}
\newcommand\cvspacebetweencolumns{12}
%----------------------------------------------------------------------------------------
% SEPARATOR
%----------------------------------------------------------------------------------------
\newcommand\cvseparatorscale{1}
%----------------------------------------------------------------------------------------
% COLORS
%----------------------------------------------------------------------------------------
\usepackage{xcolor}
\definecolor{cvcolor}{RGB}{20, 20, 20} % main color
\definecolor{cviconcolor}{RGB}{255, 255, 255} % icon color
\definecolor{cvbordercolor}{RGB}{255, 255, 255} % border color
\definecolor{cvavatarbordercolor}{RGB}{255, 255, 255} % avatar border color
\definecolor{cvtimelinecolor}{RGB}{0, 0, 0} % timeline color
\definecolor{cvlightcolor}{RGB}{245, 245, 245} % light color
%========================================================================================
% CONFIGURATION
%========================================================================================
%----------------------------------------------------------------------------------------
% RESCALE
%----------------------------------------------------------------------------------------
\usepackage{fp}
\FPeval{\cvavatarradius}{\cvscale*\cvavatarradius}
\FPeval{\cvavatarborderwidth}{\cvscale*\cvavatarborderwidth}
\FPeval{\cvmainspace}{\cvscale*\cvmainspace}
\FPeval{\cvmainbubbleradius}{\cvscale*\cvmainbubbleradius}
\FPeval{\cvmainbubbleborderwidth}{\cvscale*\cvmainbubbleborderwidth}
\FPeval{\cveventdatewidth}{\cvscale*\cveventdatewidth}
\FPeval{\cveventbubbleradius}{\cvscale*\cveventbubbleradius}
\FPeval{\cveventbubbleborderwidth}{\cvscale*\cveventbubbleborderwidth}
\FPeval{\cvsidebarspace}{\cvscale*\cvsidebarspace}
\FPeval{\cvsidebarbubbleradius}{\cvscale*\cvsidebarbubbleradius}
\FPeval{\cvsidebarbubbleborderwidth}{\cvscale*\cvsidebarbubbleborderwidth}
\FPeval{\cvseparatorscale}{\cvscale*\cvseparatorscale}
%----------------------------------------------------------------------------------------
% SETTINGS
%----------------------------------------------------------------------------------------
\newcommand\packagename{bubblecv}
\usepackage[a4paper]{geometry}
\geometry{top=\cvtopmargin mm, bottom=\cvbottommargin mm, left=\cvleftmargin mm, right=\cvrightmargin mm}
\setlength{\topskip}{0mm} % no top margin default
\setlength{\parindent}{0mm} % no indent default
\pagenumbering{gobble} % disable page numbering
\usepackage{enumitem}
\setlist[itemize]{noitemsep, nolistsep, leftmargin=*} % default list style
%----------------------------------------------------------------------------------------
% COMMON PACKAGES
%----------------------------------------------------------------------------------------
\usepackage[utf8]{inputenc} % for utf-8 encoding
\usepackage{xparse} % new document command
\usepackage{ifthen} % if then else
\usepackage{tabularx} % tabular for progress bar
\usepackage{hyperref} % hyper ref
%----------------------------------------------------------------------------------------
% COLUMNS
%----------------------------------------------------------------------------------------
\usepackage{paracol}
\setlength{\columnsep}{\cvspacebetweencolumns mm} % space between columns
\newcommand\iscvsidebar{0} % flag if sidebar is active
%----------------------------------------------------------------------------------------
% FONTS & ICONS
%----------------------------------------------------------------------------------------
\usepackage{relsize} % for font scaling
\usepackage{fontawesome}
% allow icons to scale
\DeclareFontFamily{U}{fontawesomeOne}{}
\DeclareFontShape{U}{fontawesomeOne}{m}{n}{<-> FontAwesome--fontawesomeone}{}
\DeclareRobustCommand\FAone{\fontencoding{U}\fontfamily{fontawesomeOne}\selectfont}
%----------------------------------------------------------------------------------------
% TIMELINE
%----------------------------------------------------------------------------------------
\usepackage{silence}
\WarningsOff[everypage] % disable warning about problems with background package
\usepackage{background}
\SetBgScale{1}
\SetBgAngle{0}
\SetBgColor{cvtimelinecolor}
\SetBgContents{\rule{\cvtimelinewidth mm}{\textheight}}
% start offset from left edge of a4 paper instead of center
\SetBgHshift{\dimexpr(\cvtimelineoffset mm - 105 mm)}
\newcommand{\timelinespace}{\the\numexpr\cvleftmargin - \cvtimelineoffset\relax}
%----------------------------------------------------------------------------------------
% FOOTNOTE
%----------------------------------------------------------------------------------------
\setlength{\skip\footins}{0.25\baselineskip}
%----------------------------------------------------------------------------------------
% RGB TO ARRAY
%----------------------------------------------------------------------------------------
% Convert RGB to decode array.
% Parameter 1: RGB color.
% Parameter 2: Variable to which the array will be assigned.
\newcommand{\rgbtoarray}[2]{%
\extractcolorspecs{#1}\ParseResultModel\ParseResultColor%
\convertcolorspec\ParseResultModel\ParseResultColor{rgb}\ParseRgb%
\let#2\@empty%
\@for\ParseValue:=\ParseRgb\do{%
\edef#2{%
#2%
\ifx#2\@empty%
\else%
\space%
\fi%
\ParseValue\space 1%
}%
}%
}%
%----------------------------------------------------------------------------------------
% DRAW CIRCLE
%----------------------------------------------------------------------------------------
% Draw a circle with the image inside.
% Parameter 1 (optional): Path to image resource.
% Parameter 2 (optional): Image scale.
% Parameter 3 (optional): Image color in RGB.
% Parameter 4: Circle radius in millimeters.
% Parameter 5: Circle border width in millimeters.
% Parameter 6: Circle background color in RGB.
% Parameter 7: Circle border color in RGB.
\NewDocumentCommand{\drawcircle}{O{} O{1} O{} m m m m}{%
\ifthenelse{\equal{#3}{}}{}{%
\rgbtoarray{#3}\customdecodearray%
}{}%
\begin{tikzpicture}%
\draw[%
draw=#7, fill=#6, line width=#5mm,%
path picture={%
\ifthenelse{\equal{#1}{}}{}{%
\node at (path picture bounding box.center){%
\ifthenelse{\equal{#3}{}}{%
\includegraphics[%
width=#2\dimexpr#4mm\relax,%
height=#2\dimexpr#4mm\relax]{#1}%
}{%
\includegraphics[%
width=#2\dimexpr#4mm\relax,%
height=#2\dimexpr#4mm\relax,%
decodearray={\customdecodearray}]{#1}%
}%
};%
}%
}%
] (0,0) circle (\dimexpr#4mm-#5mm/2\relax);%
\end{tikzpicture}%
}%
%========================================================================================
% PUBLIC FUNCTIONS
%========================================================================================
%----------------------------------------------------------------------------------------
% CV
%----------------------------------------------------------------------------------------
% Main CV function that prepares the entire layout.
% Parameter 1 (optional): Path to avatar resource.
% Parameter 2 (optional): Avatar scale.
% Parameter 3 (optional): Avatar color in RGB.
% Parameter 4: Name.
% Parameter 5: Description.
\NewDocumentEnvironment{cv}{O{} O{2} O{} m m}{%
\relscale{\cvscale}%
\fontfamily{\cvfont}%
\vspace*{\cvheadermargin mm}%
\vspace*{-\cvtopmargin mm}%
\hspace{-\timelinespace mm}%
\hspace{-\cvavatarradius mm}%
\begin{minipage}{\dimexpr(\cvavatarradius mm + \cvavatarradius mm)}%
\protect\ifthenelse{\equal{#1}{}}%
{\drawcircle{\cvavatarradius}{\cvavatarborderwidth}{cvcolor}{cvavatarbordercolor}}%
{\drawcircle[resources/#1][#2][#3]{\cvavatarradius}{\cvavatarborderwidth}{cvcolor}{cvavatarbordercolor}}%
\end{minipage}%
\hspace{\cvheaderoffset mm}%
\begin{minipage}{\dimexpr(\linewidth + \timelinespace mm - \cvavatarradius mm - \cvheaderoffset mm)}%
\textscale{\cvheadertitlefontscale}{#4}%
\cvseparator[3]%
\textscale{\cvheadersubtitlefontscale}{#5}%
\end{minipage}%
\columnratio{\cvcolumnratio}%
\begin{paracol}{2}%
}{%
\end{paracol}%
}%
%----------------------------------------------------------------------------------------
% CV SECTION
%----------------------------------------------------------------------------------------
% Groups events, items and skills inside one block.
% Parameter 1 (optional): Path to icon resource.
% Parameter 2 (optional): Icon scale.
% Parameter 3 (optional): Icon color in RGB.
% Parameter 4: Section title.
\NewDocumentCommand{\cvsection}{O{} O{1} O{cviconcolor} m}{%
\ifthenelse{\equal{\iscvsidebar}{0}}{%
\vspace{\cvmainspace mm}%
\hspace{-\timelinespace mm}%
\hspace{-\cvmainbubbleradius mm}%
\begin{minipage}{\dimexpr(\cvmainbubbleradius mm + \cvmainbubbleradius mm)}%
\ifthenelse{\equal{#1}{}}%
{\protect\drawcircle{\cvmainbubbleradius}{\cvmainbubbleborderwidth}{cvcolor}{cvbordercolor}}%
{\protect\drawcircle[resources/#1][#2][#3]{\cvmainbubbleradius}{\cvmainbubbleborderwidth}{cvcolor}{cvbordercolor}}%
\end{minipage}%
\hspace{\dimexpr(\timelinespace mm - \cvmainbubbleradius mm)}%
\begin{minipage}{\linewidth}%
\textscale{\cvsectionfontscale}{\textbf{#4}}%
\end{minipage}%
\cvseparator%
}{%
\vspace{\cvsidebarspace mm}%
\hspace{-\cvsidebarbubbleradius mm}%
\begin{minipage}{\dimexpr(\cvsidebarbubbleradius mm + \cvsidebarbubbleradius mm)}%
\protect\ifthenelse{\equal{#1}{}}%
{\drawcircle{\cvsidebarbubbleradius}{\cvsidebarbubbleborderwidth}{cvcolor}{cvbordercolor}}%
{\drawcircle[resources/#1][#2][#3]{\cvsidebarbubbleradius}{\cvsidebarbubbleborderwidth}{cvcolor}{cvbordercolor}}%
\end{minipage}%
\hspace{\cvsidebaroffset mm}%
\begin{minipage}{\dimexpr(\linewidth - \cvsidebarbubbleradius mm - \cvsidebaroffset mm)}%
\textscale{\cvsectionfontscale}{\textbf{#4}}%
\end{minipage}%
\cvseparator%
}%
}%
%----------------------------------------------------------------------------------------
% CV EVENT
%----------------------------------------------------------------------------------------
% Contains information about the event.
% Parameter 1 (optional): Start date of the event.
% Parameter 2 (optional): End date of the event.
% Parameter 3: Content.
\NewDocumentEnvironment{cvevent}{O{} O{} +b}{%
\ifthenelse{\equal{\iscvsidebar}{0}}{%
\hspace{-\cveventbubbleradius mm}%
\hspace{-\timelinespace mm}%
\hspace{-\cveventdatewidth mm}%
\begin{minipage}[t]{\cveventdatewidth mm}%
\begin{center}%
\ifthenelse{\equal{#2}{}}{%
\ifthenelse{\equal{#1}{}}{}{%
\textbf{#1}\par%
}%
}{%
\textbf{#2}\par%
\textbf{$\uparrow$}\par%
\textbf{#1}%
}%
\end{center}%
\end{minipage}%
\begin{minipage}{\dimexpr(\cveventbubbleradius mm + \cveventbubbleradius mm)}%
\protect\drawcircle{\cveventbubbleradius}{\cveventbubbleborderwidth}{cvcolor}{cvbordercolor}%
\end{minipage}%
\hspace{\dimexpr(\timelinespace mm - \cveventbubbleradius mm)}%
\begin{minipage}[t]{\linewidth}%
#3%
\end{minipage}%
\par%
}{%
\PackageError{\packagename}{The cvevent can be used only in the main column}{}%
}%
}{}%
%----------------------------------------------------------------------------------------
% CV SEPARATOR
%----------------------------------------------------------------------------------------
% Vertical space between paragraphs.
% Parameter 1 (optional): Space size in millimeters.
\NewDocumentCommand{\cvseparator}{O{1}}{\vspace{#1\dimexpr\cvseparatorscale mm\relax}\par}
%----------------------------------------------------------------------------------------
% CV NAME
%----------------------------------------------------------------------------------------
% The title of the event header.
% Parameter 1: Event title.
\newcommand{\cvname}[1]{\textscale{\cvnamefontscale}{\textbf{#1}}\cvseparator}
%----------------------------------------------------------------------------------------
% CV DESCRIPTION
%----------------------------------------------------------------------------------------
% The description of the event header.
% Parameter 1: Event description.
\newcommand{\cvdescription}[1]{\textscale{\cvdescriptionfontscale}{\textit{\textbf{#1}}}\cvseparator[2]}
%----------------------------------------------------------------------------------------
% CV SIDEBAR
%----------------------------------------------------------------------------------------
% Switches the main column to the sidebar.
\newcommand{\cvsidebar}[0]{%
\ifthenelse{\equal{\iscvsidebar}{0}}{%
\switchcolumn%
\renewcommand{\iscvsidebar}{1}%
}{%
\PackageError{\packagename}{The cvsidebar can be used only once}{}%
}%
}%
%----------------------------------------------------------------------------------------
% CV ITEM
%----------------------------------------------------------------------------------------
% List item with a label.
% Parameter 1 (optional): Icon name from fontawesome package.
% Parameter 2 (optional): Icon size in milimeters.
% Parameter 3: Content.
\NewDocumentEnvironment{cvitem}{O{Circle} O{2.5} +b}{%
\ifthenelse{\equal{\iscvsidebar}{1}}{%
\begin{minipage}{\cvscale\dimexpr#2mm\relax}%
\makebox(0, 0){\textcolor{cvcolor}{\fontsize{\cvscale\dimexpr#2mm\relax}{\cvscale\dimexpr#2mm\relax}\csname fa#1\endcsname}}%
\end{minipage}%
\hspace{\cvsidebaroffset mm}%
\begin{minipage}{\dimexpr(\linewidth - \cvsidebaroffset mm - \cvscale\dimexpr#2mm\relax)}%
#3%
\end{minipage}%
\par%
}{%
\PackageError{\packagename}{The cvitem can be used only in the sidebar column}{}%
}%
}{}%
%----------------------------------------------------------------------------------------
% CV SKILL
%----------------------------------------------------------------------------------------
% Renders a progress-bar to indicate a certain skill in percent.
% Parameter 1: Name of skill.
% Parameter 2: Skill level.
% Parameter 3: Percent of the progress-bar in range [0, 1].
\newcommand{\cvskill}[3]{%
\ifthenelse{\equal{\iscvsidebar}{1}}{%
\begin{tabularx}{\linewidth}{>{\raggedright\arraybackslash}X>{\raggedleft\arraybackslash}X}%
\textcolor{black}{\textbf{#1}} & \textcolor{cvcolor}{#2}%
\end{tabularx}%
\begin{tikzpicture}[scale=1,rounded corners=\cvscale*0.5mm,very thin]%
\fill [cvlightcolor] (0,0) rectangle (\linewidth, 0.15*\cvscale);%
\fill [cvcolor] (0,0) rectangle (#3\linewidth, 0.15*\cvscale);%
\end{tikzpicture}%
\cvseparator[2]%
}{%
\PackageError{\packagename}{The cvskill can be used only in the sidebar column}{}%
}%
}%
%----------------------------------------------------------------------------------------
% CV FOOTNOTE
%----------------------------------------------------------------------------------------
% Footnote without order number and hyperlink.
% Parameter 1: Footnote content.
\newcommand\cvfootnote[1]{%
\begingroup%
\renewcommand\thefootnote{}\NoHyper\footnote{#1}%
\addtocounter{footnote}{-1}%
\endgroup%
}%

129
source/main.tex Normal file
View File

@ -0,0 +1,129 @@
\documentclass{article}
\usepackage{bubblecv}
\begin{document}
\begin{cv}[avatar]{Jarod CAJNA}{Ingénieur Cloud Devops}
\cvsection[summary]{Présentation} %-----------------------------------------------------------
Passionné d'informatique et d'automatisation, j'ai accumulé 4 ans d'expérience en alternance, avec une attention particulière pour la cybersécurité. Autodidacte, j'entreprends fréquemment des projets personnels pour développer mes compétences. Je cherche un poste où je peux combiner ma maîtrise technique du cloud ainsi que du monde Devops et mon intérêt pour la sécurité afin de fournir des solutions robustes et sécurisées.
\cvsection[work]{Expériences} %------------------------------------------------------
\begin{cvevent}[2021][2023]
\cvname{Alternant - Ingénieur Cloud/Devops}
\cvdescription{Thales}
\begin{itemize}
\item Développement d'une solution Cloud (PAAS) en mode DEVOPS.
\item Utilisation des outils de l'univers kubernetes et automatisation avec des outils as code.
\item Gestion de projet en mode AGILE.
\end{itemize}
\end{cvevent}
\cvseparator[2]
\begin{cvevent}[2019][2021]
\cvname{Alternant - Développeur R\&D}
\cvdescription{SAP}
\begin{itemize}
\item Département R\&D Cybersécurité.
\item Développement en Python.
\item Développement d'un outil de scraping.
\end{itemize}
\end{cvevent}
\cvsection[education]{Formations} %------------------------------------------------------
\begin{cvevent}[2021][2023]
\cvname{Mastère Cybersécurité}
\cvdescription{IPSSI}
\end{cvevent}
\cvseparator[2]
\begin{cvevent}[2020][2021]
\cvname{Licence Professionnelle ASSR option \\Cybersécurité}
\cvdescription{IUT NICE CÔTE D'AZUR}
\textbf{Description :}
\begin{itemize}
\item Cette formation forme des techniciens supérieurs capables d'administrer et de superviser une architecture système et réseau sur lequel s'appuie le système d'information fiable etsécurisé de l'entreprise. C'est une formation d'un an, effectuée en alternance.
\end{itemize}
\end{cvevent}
\cvseparator[2]
\begin{cvevent}[2017][2020]
\cvname{DUT Réseaux et Télécommunications}
\cvdescription{IUT NICE CÔTE D'AZUR}
\textbf{Description:}
\begin{itemize}
\item Obtention DUT Réseaux et Télécommunications.Cette formation a pour objectif de former des professionnels à comprendre, installer,administrer et maintenir les réseaux informatiques et les réseaux de télécommunications.
\end{itemize}
\end{cvevent}
\cvsidebar %-----------------------------------------------------------------------------
\cvsection[contact]{Contact} %----------------------------------------------------------
\begin{cvitem}[Envelope][4]
\textbf{Email}\\
\href{mailto:contact@jarodcajna.fr}{\texttt{contact@jarodcajna.fr}}
\end{cvitem}
\cvseparator[3]
\begin{cvitem}[Phone][4]
\textbf{Téléphone}\\
\href{tel:+33 (0)782800525}{\texttt{+33 (0)782800525}}
\end{cvitem}
\cvseparator[3]
\begin{cvitem}[Globe][4]
\textbf{Website}\\
\href{https://www.github.com/j4rj4r/}{\texttt{www.github.com/j4rj4r}}
\end{cvitem}
\cvsection[skills]{Compétences} %-----------------------------------------------------------
\begin{cvitem}
Automatisation: \\Ansible, Terraform
\end{cvitem}
\cvseparator[3]
\begin{cvitem}
Versionnement de code et CI/CD: \\Git, GitlabCI, Argocd
\end{cvitem}
\cvseparator[3]
\begin{cvitem}
Conteneurisation: \\Docker, Kubernetes (Helm, Kustomize)
\end{cvitem}
\cvseparator[3]
\begin{cvitem}
Langages de programmation: \\Python, C, Bash, PHP
\end{cvitem}
\cvseparator[3]
\begin{cvitem}
Systèmes d'exploitation: \\Linux (Debian, Ubuntu ...)
\end{cvitem}
\cvseparator[3]
\begin{cvitem}
Réseaux et télécoms: \\Certification CCNA 1, 2, 3, 4 \\security \\Certification Stormshield
\end{cvitem}
\cvsection[languages]{Langues} %--------------------------------------------------------
\cvskill{Anglais}{Anglais professionel}{0.6}
\cvskill{Italien}{Basique}{0.3}
\end{cv}
\end{document}

BIN
source/resources/avatar.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
source/resources/cv.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
source/resources/person.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

BIN
source/resources/skills.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

BIN
source/resources/target.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

BIN
source/resources/work.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB