Update
This commit is contained in:
@@ -0,0 +1,694 @@
|
||||
\NeedsTeXFormat{LaTeX2e}
|
||||
\ProvidesPackage{doxygen}
|
||||
|
||||
% Packages used by this style file
|
||||
\RequirePackage{alltt}
|
||||
%%\RequirePackage{array} %% moved to refman.tex due to workaround for LaTex 2019 version and unmaintained tabu package
|
||||
\RequirePackage{calc}
|
||||
\RequirePackage{float}
|
||||
%%\RequirePackage{ifthen} %% moved to refman.tex due to workaround for LaTex 2019 version and unmaintained tabu package
|
||||
\RequirePackage{verbatim}
|
||||
\RequirePackage[table]{xcolor}
|
||||
\RequirePackage{longtable_doxygen}
|
||||
\RequirePackage{tabu_doxygen}
|
||||
\RequirePackage{fancyvrb}
|
||||
\RequirePackage{tabularx}
|
||||
\RequirePackage{multicol}
|
||||
\RequirePackage{multirow}
|
||||
\RequirePackage{hanging}
|
||||
\RequirePackage{ifpdf}
|
||||
\RequirePackage{adjustbox}
|
||||
\RequirePackage{amssymb}
|
||||
\RequirePackage{stackengine}
|
||||
\RequirePackage{enumitem}
|
||||
\RequirePackage{alphalph}
|
||||
\RequirePackage[normalem]{ulem} % for strikeout, but don't modify emphasis
|
||||
|
||||
%---------- Internal commands used in this style file ----------------
|
||||
|
||||
\newcommand{\ensurespace}[1]{%
|
||||
\begingroup%
|
||||
\setlength{\dimen@}{#1}%
|
||||
\vskip\z@\@plus\dimen@%
|
||||
\penalty -100\vskip\z@\@plus -\dimen@%
|
||||
\vskip\dimen@%
|
||||
\penalty 9999%
|
||||
\vskip -\dimen@%
|
||||
\vskip\z@skip% hide the previous |\vskip| from |\addvspace|
|
||||
\endgroup%
|
||||
}
|
||||
|
||||
\newcommand{\DoxyHorRuler}[1]{%
|
||||
\setlength{\parskip}{0ex plus 0ex minus 0ex}%
|
||||
\ifthenelse{#1=0}%
|
||||
{%
|
||||
\hrule%
|
||||
}%
|
||||
{%
|
||||
\hrulefilll%
|
||||
}%
|
||||
}
|
||||
\newcommand{\DoxyLabelFont}{}
|
||||
\newcommand{\entrylabel}[1]{%
|
||||
{%
|
||||
\parbox[b]{\labelwidth-4pt}{%
|
||||
\makebox[0pt][l]{\DoxyLabelFont#1}%
|
||||
\vspace{1.5\baselineskip}%
|
||||
}%
|
||||
}%
|
||||
}
|
||||
|
||||
\newenvironment{DoxyDesc}[1]{%
|
||||
\ensurespace{4\baselineskip}%
|
||||
\begin{list}{}{%
|
||||
\settowidth{\labelwidth}{20pt}%
|
||||
%\setlength{\parsep}{0pt}%
|
||||
\setlength{\itemsep}{0pt}%
|
||||
\setlength{\leftmargin}{\labelwidth+\labelsep}%
|
||||
\renewcommand{\makelabel}{\entrylabel}%
|
||||
}%
|
||||
\item[#1]%
|
||||
}{%
|
||||
\end{list}%
|
||||
}
|
||||
|
||||
\newsavebox{\xrefbox}
|
||||
\newlength{\xreflength}
|
||||
\newcommand{\xreflabel}[1]{%
|
||||
\sbox{\xrefbox}{#1}%
|
||||
\setlength{\xreflength}{\wd\xrefbox}%
|
||||
\ifthenelse{\xreflength>\labelwidth}{%
|
||||
\begin{minipage}{\textwidth}%
|
||||
\setlength{\parindent}{0pt}%
|
||||
\hangindent=15pt\bfseries #1\vspace{1.2\itemsep}%
|
||||
\end{minipage}%
|
||||
}{%
|
||||
\parbox[b]{\labelwidth}{\makebox[0pt][l]{\textbf{#1}}}%
|
||||
}%
|
||||
}
|
||||
|
||||
%---------- Commands used by doxygen LaTeX output generator ----------
|
||||
|
||||
% Used by <pre> ... </pre>
|
||||
\newenvironment{DoxyPre}{%
|
||||
\small%
|
||||
\begin{alltt}%
|
||||
}{%
|
||||
\end{alltt}%
|
||||
\normalsize%
|
||||
}
|
||||
% Necessary for redefining not defined characters, i.e. "Replacement Character" in tex output.
|
||||
\newlength{\CodeWidthChar}
|
||||
\newlength{\CodeHeightChar}
|
||||
\settowidth{\CodeWidthChar}{?}
|
||||
\settoheight{\CodeHeightChar}{?}
|
||||
% Necessary for hanging indent
|
||||
\newlength{\DoxyCodeWidth}
|
||||
|
||||
\newcommand\DoxyCodeLine[1]{
|
||||
\ifthenelse{\equal{\detokenize{#1}}{}}
|
||||
{
|
||||
\vspace*{\baselineskip}
|
||||
}
|
||||
{
|
||||
\hangpara{\DoxyCodeWidth}{1}{#1}\par
|
||||
}
|
||||
}
|
||||
|
||||
\newcommand\NiceSpace{%
|
||||
\discretionary{}{\kern\fontdimen2\font}{\kern\fontdimen2\font}%
|
||||
}
|
||||
|
||||
% Used by @code ... @endcode
|
||||
\newenvironment{DoxyCode}[1]{%
|
||||
\par%
|
||||
\scriptsize%
|
||||
\normalfont\ttfamily%
|
||||
\rightskip0pt plus 1fil%
|
||||
\settowidth{\DoxyCodeWidth}{000000}%
|
||||
\settowidth{\CodeWidthChar}{?}%
|
||||
\settoheight{\CodeHeightChar}{?}%
|
||||
\setlength{\parskip}{0ex plus 0ex minus 0ex}%
|
||||
\ifthenelse{\equal{#1}{0}}
|
||||
{
|
||||
{\lccode`~32 \lowercase{\global\let~}\NiceSpace}\obeyspaces%
|
||||
}
|
||||
{
|
||||
{\lccode`~32 \lowercase{\global\let~}}\obeyspaces%
|
||||
}
|
||||
|
||||
}{%
|
||||
\normalfont%
|
||||
\normalsize%
|
||||
\settowidth{\CodeWidthChar}{?}%
|
||||
\settoheight{\CodeHeightChar}{?}%
|
||||
}
|
||||
|
||||
% Redefining not defined characters, i.e. "Replacement Character" in tex output.
|
||||
\def\ucr{\adjustbox{width=\CodeWidthChar,height=\CodeHeightChar}{\stackinset{c}{}{c}{-.2pt}{%
|
||||
\textcolor{white}{\sffamily\bfseries\small ?}}{%
|
||||
\rotatebox{45}{$\blacksquare$}}}}
|
||||
|
||||
% Used by @example, @include, @includelineno and @dontinclude
|
||||
\newenvironment{DoxyCodeInclude}[1]{%
|
||||
\DoxyCode{#1}%
|
||||
}{%
|
||||
\endDoxyCode%
|
||||
}
|
||||
|
||||
% Used by @verbatim ... @endverbatim
|
||||
\newenvironment{DoxyVerb}{%
|
||||
\par%
|
||||
\footnotesize%
|
||||
\verbatim%
|
||||
}{%
|
||||
\endverbatim%
|
||||
\normalsize%
|
||||
}
|
||||
|
||||
% Used by @verbinclude
|
||||
\newenvironment{DoxyVerbInclude}{%
|
||||
\DoxyVerb%
|
||||
}{%
|
||||
\endDoxyVerb%
|
||||
}
|
||||
|
||||
% Used by numbered lists (using '-#' or <ol> ... </ol>)
|
||||
\setlistdepth{12}
|
||||
\newlist{DoxyEnumerate}{enumerate}{12}
|
||||
\setlist[DoxyEnumerate,1]{label=\arabic*.}
|
||||
\setlist[DoxyEnumerate,2]{label=(\enumalphalphcnt*)}
|
||||
\setlist[DoxyEnumerate,3]{label=\roman*.}
|
||||
\setlist[DoxyEnumerate,4]{label=\enumAlphAlphcnt*.}
|
||||
\setlist[DoxyEnumerate,5]{label=\arabic*.}
|
||||
\setlist[DoxyEnumerate,6]{label=(\enumalphalphcnt*)}
|
||||
\setlist[DoxyEnumerate,7]{label=\roman*.}
|
||||
\setlist[DoxyEnumerate,8]{label=\enumAlphAlphcnt*.}
|
||||
\setlist[DoxyEnumerate,9]{label=\arabic*.}
|
||||
\setlist[DoxyEnumerate,10]{label=(\enumalphalphcnt*)}
|
||||
\setlist[DoxyEnumerate,11]{label=\roman*.}
|
||||
\setlist[DoxyEnumerate,12]{label=\enumAlphAlphcnt*.}
|
||||
|
||||
% Used by bullet lists (using '-', @li, @arg, or <ul> ... </ul>)
|
||||
\setlistdepth{12}
|
||||
\newlist{DoxyItemize}{itemize}{12}
|
||||
\setlist[DoxyItemize]{label=\textperiodcentered}
|
||||
|
||||
\setlist[DoxyItemize,1]{label=\textbullet}
|
||||
\setlist[DoxyItemize,2]{label=\normalfont\bfseries \textendash}
|
||||
\setlist[DoxyItemize,3]{label=\textasteriskcentered}
|
||||
\setlist[DoxyItemize,4]{label=\textperiodcentered}
|
||||
|
||||
% Used by description lists (using <dl> ... </dl>)
|
||||
\newenvironment{DoxyDescription}{%
|
||||
\description%
|
||||
}{%
|
||||
\enddescription%
|
||||
}
|
||||
|
||||
% Used by @image, @dotfile, @dot ... @enddot, and @msc ... @endmsc
|
||||
% (only if caption is specified)
|
||||
\newenvironment{DoxyImage}{%
|
||||
\begin{figure}[H]%
|
||||
\centering%
|
||||
}{%
|
||||
\end{figure}%
|
||||
}
|
||||
|
||||
% Used by @image, @dotfile, @dot ... @enddot, and @msc ... @endmsc
|
||||
% (only if no caption is specified)
|
||||
\newenvironment{DoxyImageNoCaption}{%
|
||||
\begin{center}%
|
||||
}{%
|
||||
\end{center}%
|
||||
}
|
||||
|
||||
% Used by @image
|
||||
% (only if inline is specified)
|
||||
\newenvironment{DoxyInlineImage}{%
|
||||
}{%
|
||||
}
|
||||
|
||||
% Used by @attention
|
||||
\newenvironment{DoxyAttention}[1]{%
|
||||
\begin{DoxyDesc}{#1}%
|
||||
}{%
|
||||
\end{DoxyDesc}%
|
||||
}
|
||||
|
||||
% Used by @author and @authors
|
||||
\newenvironment{DoxyAuthor}[1]{%
|
||||
\begin{DoxyDesc}{#1}%
|
||||
}{%
|
||||
\end{DoxyDesc}%
|
||||
}
|
||||
|
||||
% Used by @date
|
||||
\newenvironment{DoxyDate}[1]{%
|
||||
\begin{DoxyDesc}{#1}%
|
||||
}{%
|
||||
\end{DoxyDesc}%
|
||||
}
|
||||
|
||||
% Used by @invariant
|
||||
\newenvironment{DoxyInvariant}[1]{%
|
||||
\begin{DoxyDesc}{#1}%
|
||||
}{%
|
||||
\end{DoxyDesc}%
|
||||
}
|
||||
|
||||
% Used by @note
|
||||
\newenvironment{DoxyNote}[1]{%
|
||||
\begin{DoxyDesc}{#1}%
|
||||
}{%
|
||||
\end{DoxyDesc}%
|
||||
}
|
||||
|
||||
% Used by @post
|
||||
\newenvironment{DoxyPostcond}[1]{%
|
||||
\begin{DoxyDesc}{#1}%
|
||||
}{%
|
||||
\end{DoxyDesc}%
|
||||
}
|
||||
|
||||
% Used by @pre
|
||||
\newenvironment{DoxyPrecond}[1]{%
|
||||
\begin{DoxyDesc}{#1}%
|
||||
}{%
|
||||
\end{DoxyDesc}%
|
||||
}
|
||||
|
||||
% Used by @copyright
|
||||
\newenvironment{DoxyCopyright}[1]{%
|
||||
\begin{DoxyDesc}{#1}%
|
||||
}{%
|
||||
\end{DoxyDesc}%
|
||||
}
|
||||
|
||||
% Used by @remark
|
||||
\newenvironment{DoxyRemark}[1]{%
|
||||
\begin{DoxyDesc}{#1}%
|
||||
}{%
|
||||
\end{DoxyDesc}%
|
||||
}
|
||||
|
||||
% Used by @return and @returns
|
||||
\newenvironment{DoxyReturn}[1]{%
|
||||
\begin{DoxyDesc}{#1}%
|
||||
}{%
|
||||
\end{DoxyDesc}%
|
||||
}
|
||||
|
||||
% Used by @since
|
||||
\newenvironment{DoxySince}[1]{%
|
||||
\begin{DoxyDesc}{#1}%
|
||||
}{%
|
||||
\end{DoxyDesc}%
|
||||
}
|
||||
|
||||
% Used by @see
|
||||
\newenvironment{DoxySeeAlso}[1]{%
|
||||
\begin{DoxyDesc}{#1}%
|
||||
}{%
|
||||
\end{DoxyDesc}%
|
||||
}
|
||||
|
||||
% Used by @version
|
||||
\newenvironment{DoxyVersion}[1]{%
|
||||
\begin{DoxyDesc}{#1}%
|
||||
}{%
|
||||
\end{DoxyDesc}%
|
||||
}
|
||||
|
||||
% Used by @warning
|
||||
\newenvironment{DoxyWarning}[1]{%
|
||||
\begin{DoxyDesc}{#1}%
|
||||
}{%
|
||||
\end{DoxyDesc}%
|
||||
}
|
||||
|
||||
% Used by @par and @paragraph
|
||||
\newenvironment{DoxyParagraph}[1]{%
|
||||
\begin{DoxyDesc}{#1}%
|
||||
}{%
|
||||
\end{DoxyDesc}%
|
||||
}
|
||||
|
||||
% Used by parameter lists
|
||||
\newenvironment{DoxyParams}[2][]{%
|
||||
\tabulinesep=1mm%
|
||||
\par%
|
||||
\ifthenelse{\equal{#1}{}}%
|
||||
{\begin{longtabu*}spread 0pt [l]{|X[-1,l]|X[-1,l]|}}% name + description
|
||||
{\ifthenelse{\equal{#1}{1}}%
|
||||
{\begin{longtabu*}spread 0pt [l]{|X[-1,l]|X[-1,l]|X[-1,l]|}}% in/out + name + desc
|
||||
{\begin{longtabu*}spread 0pt [l]{|X[-1,l]|X[-1,l]|X[-1,l]|X[-1,l]|}}% in/out + type + name + desc
|
||||
}
|
||||
\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]%
|
||||
\hline%
|
||||
\endfirsthead%
|
||||
\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]%
|
||||
\hline%
|
||||
\endhead%
|
||||
}{%
|
||||
\end{longtabu*}%
|
||||
\vspace{6pt}%
|
||||
}
|
||||
|
||||
% Used for fields of simple structs
|
||||
\newenvironment{DoxyFields}[1]{%
|
||||
\tabulinesep=1mm%
|
||||
\par%
|
||||
\begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|X[-1,l]|}%
|
||||
\multicolumn{3}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
|
||||
\hline%
|
||||
\endfirsthead%
|
||||
\multicolumn{3}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
|
||||
\hline%
|
||||
\endhead%
|
||||
}{%
|
||||
\end{longtabu*}%
|
||||
\vspace{6pt}%
|
||||
}
|
||||
|
||||
% Used for fields simple class style enums
|
||||
\newenvironment{DoxyEnumFields}[1]{%
|
||||
\tabulinesep=1mm%
|
||||
\par%
|
||||
\begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}%
|
||||
\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
|
||||
\hline%
|
||||
\endfirsthead%
|
||||
\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
|
||||
\hline%
|
||||
\endhead%
|
||||
}{%
|
||||
\end{longtabu*}%
|
||||
\vspace{6pt}%
|
||||
}
|
||||
|
||||
% Used for parameters within a detailed function description
|
||||
\newenvironment{DoxyParamCaption}{%
|
||||
\renewcommand{\item}[2][]{\\ \hspace*{2.0cm} ##1 {\em ##2}}%
|
||||
}{%
|
||||
}
|
||||
|
||||
% Used by return value lists
|
||||
\newenvironment{DoxyRetVals}[1]{%
|
||||
\tabulinesep=1mm%
|
||||
\par%
|
||||
\begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}%
|
||||
\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
|
||||
\hline%
|
||||
\endfirsthead%
|
||||
\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
|
||||
\hline%
|
||||
\endhead%
|
||||
}{%
|
||||
\end{longtabu*}%
|
||||
\vspace{6pt}%
|
||||
}
|
||||
|
||||
% Used by exception lists
|
||||
\newenvironment{DoxyExceptions}[1]{%
|
||||
\tabulinesep=1mm%
|
||||
\par%
|
||||
\begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}%
|
||||
\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
|
||||
\hline%
|
||||
\endfirsthead%
|
||||
\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
|
||||
\hline%
|
||||
\endhead%
|
||||
}{%
|
||||
\end{longtabu*}%
|
||||
\vspace{6pt}%
|
||||
}
|
||||
|
||||
% Used by template parameter lists
|
||||
\newenvironment{DoxyTemplParams}[1]{%
|
||||
\tabulinesep=1mm%
|
||||
\par%
|
||||
\begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}%
|
||||
\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
|
||||
\hline%
|
||||
\endfirsthead%
|
||||
\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
|
||||
\hline%
|
||||
\endhead%
|
||||
}{%
|
||||
\end{longtabu*}%
|
||||
\vspace{6pt}%
|
||||
}
|
||||
|
||||
% Used for member lists
|
||||
\newenvironment{DoxyCompactItemize}{%
|
||||
\begin{itemize}%
|
||||
\setlength{\itemsep}{-3pt}%
|
||||
\setlength{\parsep}{0pt}%
|
||||
\setlength{\topsep}{0pt}%
|
||||
\setlength{\partopsep}{0pt}%
|
||||
}{%
|
||||
\end{itemize}%
|
||||
}
|
||||
|
||||
% Used for member descriptions
|
||||
\newenvironment{DoxyCompactList}{%
|
||||
\begin{list}{}{%
|
||||
\setlength{\leftmargin}{0.5cm}%
|
||||
\setlength{\itemsep}{0pt}%
|
||||
\setlength{\parsep}{0pt}%
|
||||
\setlength{\topsep}{0pt}%
|
||||
\renewcommand{\makelabel}{\hfill}%
|
||||
}%
|
||||
}{%
|
||||
\end{list}%
|
||||
}
|
||||
|
||||
% Used for reference lists (@bug, @deprecated, @todo, etc.)
|
||||
\newenvironment{DoxyRefList}{%
|
||||
\begin{list}{}{%
|
||||
\setlength{\labelwidth}{10pt}%
|
||||
\setlength{\leftmargin}{\labelwidth}%
|
||||
\addtolength{\leftmargin}{\labelsep}%
|
||||
\renewcommand{\makelabel}{\xreflabel}%
|
||||
}%
|
||||
}{%
|
||||
\end{list}%
|
||||
}
|
||||
|
||||
% Used by @bug, @deprecated, @todo, etc.
|
||||
\newenvironment{DoxyRefDesc}[1]{%
|
||||
\begin{list}{}{%
|
||||
\renewcommand\makelabel[1]{\textbf{##1}}%
|
||||
\settowidth\labelwidth{\makelabel{#1}}%
|
||||
\setlength\leftmargin{\labelwidth+\labelsep}%
|
||||
}%
|
||||
}{%
|
||||
\end{list}%
|
||||
}
|
||||
|
||||
% Used by parameter lists and simple sections
|
||||
\newenvironment{Desc}
|
||||
{\begin{list}{}{%
|
||||
\settowidth{\labelwidth}{20pt}%
|
||||
\setlength{\parsep}{0pt}%
|
||||
\setlength{\itemsep}{0pt}%
|
||||
\setlength{\leftmargin}{\labelwidth+\labelsep}%
|
||||
\renewcommand{\makelabel}{\entrylabel}%
|
||||
}
|
||||
}{%
|
||||
\end{list}%
|
||||
}
|
||||
|
||||
% Used by tables
|
||||
\newcommand{\PBS}[1]{\let\temp=\\#1\let\\=\temp}%
|
||||
\newenvironment{TabularC}[1]%
|
||||
{\tabulinesep=1mm
|
||||
\begin{longtabu*}spread 0pt [c]{*#1{|X[-1]}|}}%
|
||||
{\end{longtabu*}\par}%
|
||||
|
||||
\newenvironment{TabularNC}[1]%
|
||||
{\begin{tabu}spread 0pt [l]{*#1{|X[-1]}|}}%
|
||||
{\end{tabu}\par}%
|
||||
|
||||
% Used for member group headers
|
||||
\newenvironment{Indent}{%
|
||||
\begin{list}{}{%
|
||||
\setlength{\leftmargin}{0.5cm}%
|
||||
}%
|
||||
\item[]\ignorespaces%
|
||||
}{%
|
||||
\unskip%
|
||||
\end{list}%
|
||||
}
|
||||
|
||||
% Used when hyperlinks are turned on
|
||||
\newcommand{\doxylink}[2]{%
|
||||
\mbox{\hyperlink{#1}{#2}}%
|
||||
}
|
||||
|
||||
% Used when hyperlinks are turned on
|
||||
% Third argument is the SectionType, see the doxygen internal
|
||||
% documentation for the values (relevant: Page ... Subsubsection).
|
||||
\newcommand{\doxysectlink}[3]{%
|
||||
\mbox{\hyperlink{#1}{#2}}%
|
||||
}
|
||||
% Used when hyperlinks are turned off
|
||||
\newcommand{\doxyref}[3]{%
|
||||
\textbf{#1} (\textnormal{#2}\,\pageref{#3})%
|
||||
}
|
||||
|
||||
% Used when hyperlinks are turned off
|
||||
% Fourth argument is the SectionType, see the doxygen internal
|
||||
% documentation for the values (relevant: Page ... Subsubsection).
|
||||
\newcommand{\doxysectref}[4]{%
|
||||
\textbf{#1} (\textnormal{#2}\,\pageref{#3})%
|
||||
}
|
||||
|
||||
% Used to link to a table when hyperlinks are turned on
|
||||
\newcommand{\doxytablelink}[2]{%
|
||||
\ref{#1}%
|
||||
}
|
||||
|
||||
% Used to link to a table when hyperlinks are turned off
|
||||
\newcommand{\doxytableref}[3]{%
|
||||
\ref{#3}%
|
||||
}
|
||||
|
||||
% Used by @addindex
|
||||
\newcommand{\lcurly}{\{}
|
||||
\newcommand{\rcurly}{\}}
|
||||
|
||||
% Colors used for syntax highlighting
|
||||
\definecolor{comment}{rgb}{0.5,0.0,0.0}
|
||||
\definecolor{keyword}{rgb}{0.0,0.5,0.0}
|
||||
\definecolor{keywordtype}{rgb}{0.38,0.25,0.125}
|
||||
\definecolor{keywordflow}{rgb}{0.88,0.5,0.0}
|
||||
\definecolor{preprocessor}{rgb}{0.5,0.38,0.125}
|
||||
\definecolor{stringliteral}{rgb}{0.0,0.125,0.25}
|
||||
\definecolor{charliteral}{rgb}{0.0,0.5,0.5}
|
||||
\definecolor{xmlcdata}{rgb}{0.0,0.0,0.0}
|
||||
\definecolor{vhdldigit}{rgb}{1.0,0.0,1.0}
|
||||
\definecolor{vhdlkeyword}{rgb}{0.43,0.0,0.43}
|
||||
\definecolor{vhdllogic}{rgb}{1.0,0.0,0.0}
|
||||
\definecolor{vhdlchar}{rgb}{0.0,0.0,0.0}
|
||||
|
||||
% Color used for table heading
|
||||
\newcommand{\tableheadbgcolor}{lightgray}%
|
||||
|
||||
% Version of hypertarget with correct landing location
|
||||
\newcommand{\Hypertarget}[1]{\Hy@raisedlink{\hypertarget{#1}{}}}
|
||||
|
||||
% possibility to have sections etc. be within the margins
|
||||
% unfortunately had to copy part of book.cls and add \raggedright
|
||||
\makeatletter
|
||||
\newcounter{subsubsubsection}[subsubsection]
|
||||
\newcounter{subsubsubsubsection}[subsubsubsection]
|
||||
\newcounter{subsubsubsubsubsection}[subsubsubsubsection]
|
||||
\newcounter{subsubsubsubsubsubsection}[subsubsubsubsubsection]
|
||||
\renewcommand{\thesubsubsubsection}{\thesubsubsection.\arabic{subsubsubsection}}
|
||||
\renewcommand{\thesubsubsubsubsection}{\thesubsubsubsection.\arabic{subsubsubsubsection}}
|
||||
\renewcommand{\thesubsubsubsubsubsection}{\thesubsubsubsubsection.\arabic{subsubsubsubsubsection}}
|
||||
\renewcommand{\thesubsubsubsubsubsubsection}{\thesubsubsubsubsubsection.\arabic{subsubsubsubsubsubsection}}
|
||||
\newcommand{\subsubsubsectionmark}[1]{}
|
||||
\newcommand{\subsubsubsubsectionmark}[1]{}
|
||||
\newcommand{\subsubsubsubsubsectionmark}[1]{}
|
||||
\newcommand{\subsubsubsubsubsubsectionmark}[1]{}
|
||||
\def\toclevel@subsubsubsection{4}
|
||||
\def\toclevel@subsubsubsubsection{5}
|
||||
\def\toclevel@subsubsubsubsubsection{6}
|
||||
\def\toclevel@subsubsubsubsubsubsection{7}
|
||||
\def\toclevel@paragraph{8}
|
||||
\def\toclevel@subparagraph{9}
|
||||
|
||||
\newcommand\doxysection{\@startsection {section}{1}{\z@}%
|
||||
{-3.5ex \@plus -1ex \@minus -.2ex}%
|
||||
{2.3ex \@plus.2ex}%
|
||||
{\raggedright\normalfont\Large\bfseries}}
|
||||
\newcommand\doxysubsection{\@startsection{subsection}{2}{\z@}%
|
||||
{-3.25ex\@plus -1ex \@minus -.2ex}%
|
||||
{1.5ex \@plus .2ex}%
|
||||
{\raggedright\normalfont\large\bfseries}}
|
||||
\newcommand\doxysubsubsection{\@startsection{subsubsection}{3}{\z@}%
|
||||
{-3.25ex\@plus -1ex \@minus -.2ex}%
|
||||
{1.5ex \@plus .2ex}%
|
||||
{\raggedright\normalfont\normalsize\bfseries}}
|
||||
\newcommand\doxysubsubsubsection{\@startsection{subsubsubsection}{4}{\z@}%
|
||||
{-3.25ex\@plus -1ex \@minus -.2ex}%
|
||||
{1.5ex \@plus .2ex}%
|
||||
{\raggedright\normalfont\normalsize\bfseries}}
|
||||
\newcommand\doxysubsubsubsubsection{\@startsection{subsubsubsubsection}{5}{\z@}%
|
||||
{-3.25ex\@plus -1ex \@minus -.2ex}%
|
||||
{1.5ex \@plus .2ex}%
|
||||
{\raggedright\normalfont\normalsize\bfseries}}
|
||||
\newcommand\doxysubsubsubsubsubsection{\@startsection{subsubsubsubsubsection}{6}{\z@}%
|
||||
{-3.25ex\@plus -1ex \@minus -.2ex}%
|
||||
{1.5ex \@plus .2ex}%
|
||||
{\raggedright\normalfont\normalsize\bfseries}}
|
||||
\newcommand\doxysubsubsubsubsubsubsection{\@startsection{subsubsubsubsubsubsection}{7}{\z@}%
|
||||
{-3.25ex\@plus -1ex \@minus -.2ex}%
|
||||
{1.5ex \@plus .2ex}%
|
||||
{\raggedright\normalfont\normalsize\bfseries}}
|
||||
\newcommand\doxyparagraph{\@startsection{paragraph}{8}{\z@}%
|
||||
{-3.25ex\@plus -1ex \@minus -.2ex}%
|
||||
{1.5ex \@plus .2ex}%
|
||||
{\raggedright\normalfont\normalsize\bfseries}}
|
||||
\newcommand\doxysubparagraph{\@startsection{subparagraph}{9}{\parindent}%
|
||||
{-3.25ex\@plus -1ex \@minus -.2ex}%
|
||||
{1.5ex \@plus .2ex}%
|
||||
{\raggedright\normalfont\normalsize\bfseries}}
|
||||
|
||||
\newcommand\l@subsubsubsection{\@dottedtocline{4}{6.1em}{7.8em}}
|
||||
\newcommand\l@subsubsubsubsection{\@dottedtocline{5}{6.1em}{9.4em}}
|
||||
\newcommand\l@subsubsubsubsubsection{\@dottedtocline{6}{6.1em}{11em}}
|
||||
\newcommand\l@subsubsubsubsubsubsection{\@dottedtocline{7}{6.1em}{12.6em}}
|
||||
\renewcommand\l@paragraph{\@dottedtocline{8}{6.1em}{14.2em}}
|
||||
\renewcommand\l@subparagraph{\@dottedtocline{9}{6.1em}{15.8em}}
|
||||
\makeatother
|
||||
% the sectsty doesn't look to be maintained but gives, in our case, some warning like:
|
||||
% LaTeX Warning: Command \underline has changed.
|
||||
% Check if current package is valid.
|
||||
% unfortunately had to copy the relevant part
|
||||
\newcommand*{\doxypartfont} [1]
|
||||
{\gdef\SS@partnumberfont{\SS@sectid{0}\SS@nopart\SS@makeulinepartchap#1}
|
||||
\gdef\SS@parttitlefont{\SS@sectid{0}\SS@titlepart\SS@makeulinepartchap#1}}
|
||||
\newcommand*{\doxychapterfont} [1]
|
||||
{\gdef\SS@chapnumfont{\SS@sectid{1}\SS@nopart\SS@makeulinepartchap#1}
|
||||
\gdef\SS@chaptitlefont{\SS@sectid{1}\SS@titlepart\SS@makeulinepartchap#1}}
|
||||
\newcommand*{\doxysectionfont} [1]
|
||||
{\gdef\SS@sectfont{\SS@sectid{2}\SS@rr\SS@makeulinesect#1}}
|
||||
\newcommand*{\doxysubsectionfont} [1]
|
||||
{\gdef\SS@subsectfont{\SS@sectid{3}\SS@rr\SS@makeulinesect#1}}
|
||||
\newcommand*{\doxysubsubsectionfont} [1]
|
||||
{\gdef\SS@subsubsectfont{\SS@sectid{4}\SS@rr\SS@makeulinesect#1}}
|
||||
\newcommand*{\doxyparagraphfont} [1]
|
||||
{\gdef\SS@parafont{\SS@sectid{5}\SS@rr\SS@makeulinesect#1}}
|
||||
\newcommand*{\doxysubparagraphfont} [1]
|
||||
{\gdef\SS@subparafont{\SS@sectid{6}\SS@rr\SS@makeulinesect#1}}
|
||||
\newcommand*{\doxyminisecfont} [1]
|
||||
{\gdef\SS@minisecfont{\SS@sectid{7}\SS@rr\SS@makeulinepartchap#1}}
|
||||
\newcommand*{\doxyallsectionsfont} [1] {\doxypartfont{#1}%
|
||||
\doxychapterfont{#1}%
|
||||
\doxysectionfont{#1}%
|
||||
\doxysubsectionfont{#1}%
|
||||
\doxysubsubsectionfont{#1}%
|
||||
\doxyparagraphfont{#1}%
|
||||
\doxysubparagraphfont{#1}%
|
||||
\doxyminisecfont{#1}}%
|
||||
% Define caption that is also suitable in a table
|
||||
\makeatletter
|
||||
\def\doxyfigcaption{%
|
||||
\H@refstepcounter{figure}%
|
||||
\@dblarg{\@caption{figure}}}
|
||||
\makeatother
|
||||
|
||||
% Define alpha enumarative names for counters > 26
|
||||
\makeatletter
|
||||
\def\enumalphalphcnt#1{\expandafter\@enumalphalphcnt\csname c@#1\endcsname}
|
||||
\def\@enumalphalphcnt#1{\alphalph{#1}}
|
||||
\def\enumAlphAlphcnt#1{\expandafter\@enumAlphAlphcnt\csname c@#1\endcsname}
|
||||
\def\@enumAlphAlphcnt#1{\AlphAlph{#1}}
|
||||
\makeatother
|
||||
\AddEnumerateCounter{\enumalphalphcnt}{\@enumalphalphcnt}{aa}
|
||||
\AddEnumerateCounter{\enumAlphAlphcnt}{\@enumAlphAlphcnt}{AA}
|
||||
File diff suppressed because it is too large
Load Diff
+300
@@ -0,0 +1,300 @@
|
||||
\chapter{My Project}
|
||||
\hypertarget{index}{}\label{index}\index{My Project@{My Project}}
|
||||
\hypertarget{index_autotoc_md21}{}\doxysection{\texorpdfstring{Neur\+OX\+: Крестики‑нолики с ИИ или войти в IT}{NeurOX: Крестики‑нолики с ИИ или войти в IT}}\label{index_autotoc_md21}
|
||||
\hypertarget{index_autotoc_md22}{}\doxysubsection{\texorpdfstring{Цель проекта}{Цель проекта}}\label{index_autotoc_md22}
|
||||
Разработка экосистемы многопользовательской игры крестики-\/нолики в классическом исполнении с полным стеком технологий от С до Android и Web.\hypertarget{index_autotoc_md23}{}\doxysubsection{\texorpdfstring{Для кого этот проект}{Для кого этот проект}}\label{index_autotoc_md23}
|
||||
|
||||
\begin{DoxyItemize}
|
||||
\item {\bfseries{Для своих детей}} — наследие, объяснение основных парадигм и принципов программирования.
|
||||
\item {\bfseries{Для себя}} — восстановление навыков.
|
||||
\item {\bfseries{Для остальных}} — подойдёт для изучения новичкам.
|
||||
\end{DoxyItemize}\hypertarget{index_autotoc_md24}{}\doxysubsection{\texorpdfstring{Парадигмы}{Парадигмы}}\label{index_autotoc_md24}
|
||||
|
||||
\begin{DoxyItemize}
|
||||
\item {\bfseries{KISS}} — должен оставаться донельзя простым для понимания.
|
||||
\item {\bfseries{YAGNI}} — время и ресурсы дороже излишеств.
|
||||
\end{DoxyItemize}\hypertarget{index_autotoc_md25}{}\doxysubsection{\texorpdfstring{Технологии}{Технологии}}\label{index_autotoc_md25}
|
||||
\hypertarget{index_autotoc_md26}{}\doxysubsubsection{\texorpdfstring{Сервер}{Сервер}}\label{index_autotoc_md26}
|
||||
{\bfseries{Back-\/end Core (C)}}
|
||||
\begin{DoxyItemize}
|
||||
\item {\bfseries{Игровой движок}} — базовая логика игры\+: проверка ходов, определение победы/ничьей, управление состоянием доски 3×3.
|
||||
\item {\bfseries{Нейросеть 9-\/18-\/9}} — ИИ‑противник\+: полносвязная сеть (9 входных нейронов — состояние доски, 18 скрытых, 9 выходных — оценка ходов). Обучается на партиях.
|
||||
\item {\bfseries{TCP/\+IP со сквозным шифрованием}} — защищённая передача данных между клиентом и сервером (RSA + XOR).
|
||||
\item {\bfseries{Аллокатор}} — кастомное управление памятью для повышения производительности и контроля утечек.
|
||||
\item {\bfseries{Очереди}} — буферизация и синхронизация входящих/исходящих сообщений между потоками.
|
||||
\end{DoxyItemize}
|
||||
|
||||
{\bfseries{Back-\/end Web (PHP + Code\+Igniter)}}
|
||||
\begin{DoxyItemize}
|
||||
\item {\bfseries{NGINX}} — веб‑сервер для статического фронтенда (HTML/\+CSS/\+JS) и проксирования.
|
||||
\item {\bfseries{PHP + Code\+Igniter}} — бэкенд веб‑интерфейса и «мост» между веб‑клиентом (JS) и C‑ядром. Обрабатывает AJAX‑запросы, передаёт команды в ядро через Unix‑сокеты/пайпы, возвращает ответы в формате JSON.
|
||||
\item {\bfseries{My\+SQL}} — хранение данных пользователей, статистики игр, логов. Используется веб‑сервером для отображения информации.
|
||||
\end{DoxyItemize}
|
||||
|
||||
{\bfseries{Front-\/end (Web)}}
|
||||
\begin{DoxyItemize}
|
||||
\item {\bfseries{HTML/\+CSS}} — структура и визуальное оформление веб‑версии игры\+: доска, кнопки, индикаторы.
|
||||
\item {\bfseries{Java\+Script}} — интерактивность веб‑интерфейса\+: обработка кликов, обновление доски, анимация ходов, связь с сервером через AJAX/\+Web\+Socket.
|
||||
\end{DoxyItemize}\hypertarget{index_autotoc_md27}{}\doxysubsubsection{\texorpdfstring{Клиент}{Клиент}}\label{index_autotoc_md27}
|
||||
|
||||
\begin{DoxyItemize}
|
||||
\item {\bfseries{Core (С-\/ядро)\+:}}
|
||||
\begin{DoxyItemize}
|
||||
\item {\bfseries{XOGame}} — оффлайн игровая логика (проверка ходов, определение победы);
|
||||
\item {\bfseries{Neur\+OXNet}} — нейросеть (обучается на игре против пользователя);
|
||||
\item {\bfseries{epoll}} — сетевая коммуникация (TCP/\+IP, Linux/\+Android);
|
||||
\item {\bfseries{WSAPoll+\+IOCP}} — сетевая коммуникация (TCP/\+IP, Windows);
|
||||
\item {\bfseries{SQLite}} — хранилище локальных настроек интерфейса, весов нейросети.
|
||||
\end{DoxyItemize}
|
||||
\item {\bfseries{GUI\+:}}
|
||||
\begin{DoxyItemize}
|
||||
\item {\bfseries{PC‑\+Desktop}} — нативное приложение с графическим интерфейсом на базе SFML (Simple Fast Media Library);
|
||||
\item {\bfseries{Android — Kotlin + Jetpack}} — мобильная версия игры с реактивным UI на базе Jetpack Compose\+:
|
||||
\begin{DoxyItemize}
|
||||
\item {\bfseries{View\+Model}} — управление состоянием UI и бизнес‑логикой;
|
||||
\item {\bfseries{Репозиторий}} — абстракция доступа к данным (локальные данные + сетевые запросы);
|
||||
\item {\bfseries{Data Binding}} — синхронизация данных между UI и View\+Model.
|
||||
\end{DoxyItemize}
|
||||
\end{DoxyItemize}
|
||||
\end{DoxyItemize}\hypertarget{index_autotoc_md28}{}\doxysubsubsection{\texorpdfstring{Инфраструктура}{Инфраструктура}}\label{index_autotoc_md28}
|
||||
|
||||
\begin{DoxyItemize}
|
||||
\item {\bfseries{Postfix}} — почтовый сервер для отправки уведомлений (подтверждение регистрации, напоминания о ходе игры).
|
||||
\end{DoxyItemize}\hypertarget{index_autotoc_md29}{}\doxysubsection{\texorpdfstring{Оборудование}{Оборудование}}\label{index_autotoc_md29}
|
||||
|
||||
\begin{DoxyItemize}
|
||||
\item {\bfseries{Сервер\+:}}
|
||||
\begin{DoxyItemize}
|
||||
\item OS\+: Ubuntu Server 24.\+04;
|
||||
\item CPU\+: Intel Core i5‑3470, 4 @ 3.\+2 GHz;
|
||||
\item RAM\+: 8 GB;
|
||||
\item ROM\+: noname 256 GB SSD;
|
||||
\item Wi\+Fi\+: 2.\+4 GHz, прямая видимость до 6 м (\texorpdfstring{$\sim$}{\string~}32 Mbit/s).
|
||||
\end{DoxyItemize}
|
||||
\item {\bfseries{Рабочая станция (ПК)\+:}}
|
||||
\begin{DoxyItemize}
|
||||
\item OS\+: Windows 10;
|
||||
\item CPU\+: Intel Core i5‑3470, 4 @ 3.\+2 GHz;
|
||||
\item RAM\+: 16 GB;
|
||||
\item ROM\+: noname 256 GB SSD.
|
||||
\item Wi\+Fi\+: 2.\+4 GHz, прямая видимость до 6 м (\texorpdfstring{$\sim$}{\string~}32 Mbit/s).
|
||||
\end{DoxyItemize}
|
||||
\item {\bfseries{Ноутбук\+:}}
|
||||
\begin{DoxyItemize}
|
||||
\item OS\+: Dual boot (Windows 10 / Ubuntu 24.\+04);
|
||||
\item CPU\+: noname AMD‑\+Like, 4 @ 1.\+6 GHz;
|
||||
\item RAM\+: noname 16 GB;
|
||||
\item ROM\+: noname 1 TB SSD.
|
||||
\end{DoxyItemize}
|
||||
\item {\bfseries{Смартфон\+:}}
|
||||
\begin{DoxyItemize}
|
||||
\item Модель\+: Xiaomi Redmi Note 14 Pro;
|
||||
\item OS\+: Hyper\+OS 3.\+0.\+5.\+0 (Android 14);
|
||||
\item CPU\+: Media\+Tek Helio G100, 8 @ 2.\+2 GHz;
|
||||
\item RAM\+: 12 GB;
|
||||
\item ROM\+: 512 GB SSD.
|
||||
\end{DoxyItemize}
|
||||
\end{DoxyItemize}\hypertarget{index_autotoc_md30}{}\doxysubsubsection{\texorpdfstring{Стандарты и спецификации}{Стандарты и спецификации}}\label{index_autotoc_md30}
|
||||
|
||||
\begin{DoxyItemize}
|
||||
\item {\bfseries{C11}} (ISO/\+IEC 9899\+:2011) — для C‑ядра и десктоп‑клиента.
|
||||
\item {\bfseries{C++11}} (ISO/\+IEC 14882\+:2011) — для десктоп‑клиента (SFML).
|
||||
\item {\bfseries{POSIX}} — поддержка Unix‑подобных систем (Linux/\+Android)\+:
|
||||
\begin{DoxyItemize}
|
||||
\item {\ttfamily epoll} — асинхронный ввод‑вывод для масштабирования сервера;
|
||||
\item {\ttfamily pthreads} (POSIX \+Threads) — управление потоками.
|
||||
\end{DoxyItemize}
|
||||
\item {\bfseries{Win\+API}} (Windows \+Vista+) — поддержка Windows‑платформы\+:
|
||||
\begin{DoxyItemize}
|
||||
\item {\bfseries{WSAPoll}} — асинхронный ввод‑вывод (аналог POSIX {\ttfamily poll()}, доступен с Windows \+Vista);
|
||||
\item {\bfseries{Windows \+Threads}} — управление потоками в Windows.
|
||||
\end{DoxyItemize}
|
||||
\item {\bfseries{Компиляторы\+:}}
|
||||
\begin{DoxyItemize}
|
||||
\item {\bfseries{GCC 9+}} (Linux) — компиляция C‑ядра и десктоп‑клиента;
|
||||
\item {\bfseries{Clang 11+}} (Android \+NDK) — компиляция C‑библиотеки для Android;
|
||||
\item {\bfseries{MSVC 2019+}} (Visual \+Studio) — компиляция Windows‑версии клиента и сервера.
|
||||
\end{DoxyItemize}
|
||||
\item {\bfseries{CMake\+:}}
|
||||
\begin{DoxyItemize}
|
||||
\item {\bfseries{3.\+16+}} (Linux/\+Windows) — единая система сборки для десктоп‑платформ;
|
||||
\item {\bfseries{3.\+11+}} (Android) — сборка C‑ядра через Android \+NDK (официальная поддержка NDK, Clang, ABI).
|
||||
\end{DoxyItemize}
|
||||
\end{DoxyItemize}\hypertarget{index_autotoc_md31}{}\doxysubsection{\texorpdfstring{Инструменты}{Инструменты}}\label{index_autotoc_md31}
|
||||
|
||||
\begin{DoxyItemize}
|
||||
\item {\bfseries{IDE\+:}}
|
||||
\begin{DoxyItemize}
|
||||
\item {\bfseries{Visual Studio Code}} — Linux, PHP, HTML/\+CSS, Java\+Script, SQL;
|
||||
\item {\bfseries{Visual Studio}} — Windows;
|
||||
\item {\bfseries{Android Studio}} — Android.
|
||||
\end{DoxyItemize}
|
||||
\item {\bfseries{Системы сборки\+:}} CMake, Make.
|
||||
\item {\bfseries{Препрофилирование\+:}} Yandex\+GPT 5.1 \+Pro (Алиса \+AI).
|
||||
\item {\bfseries{Code review\+:}} Yandex\+GPT 5.1 \+Pro (Алиса \+AI).
|
||||
\item {\bfseries{Техническая документация\+:}} Doxygen, JSDoc, PHPDoc.
|
||||
\item {\bfseries{Контроль версий\+:}} Git.
|
||||
\end{DoxyItemize}\hypertarget{index_autotoc_md32}{}\doxysubsection{\texorpdfstring{Прогресс}{Прогресс}}\label{index_autotoc_md32}
|
||||
\tabulinesep=1mm
|
||||
\begin{longtabu}spread 0pt [c]{*{4}{|X[-1]}|}
|
||||
\hline
|
||||
\PBS\centering \cellcolor{\tableheadbgcolor}\textbf{ Статус }&\cellcolor{\tableheadbgcolor}\textbf{ Задача }&\cellcolor{\tableheadbgcolor}\textbf{ Описание }&\PBS\centering \cellcolor{\tableheadbgcolor}\textbf{ Дата }\\\cline{1-4}
|
||||
\endfirsthead
|
||||
\hline
|
||||
\endfoot
|
||||
\hline
|
||||
\PBS\centering \cellcolor{\tableheadbgcolor}\textbf{ Статус }&\cellcolor{\tableheadbgcolor}\textbf{ Задача }&\cellcolor{\tableheadbgcolor}\textbf{ Описание }&\PBS\centering \cellcolor{\tableheadbgcolor}\textbf{ Дата }\\\cline{1-4}
|
||||
\endhead
|
||||
\PBS\centering ➤ &{\bfseries{Документация}} &Оптимизация Doxygen &\PBS\centering \\\cline{1-4}
|
||||
\PBS\centering ✅ &{\bfseries{Документация}} &Обновлены контакты в {\bfseries{README.\+md}}. &\PBS\centering 11.\+05.\+2026 \\\cline{1-4}
|
||||
\PBS\centering ✅ &{\bfseries{Документация}} &Создан логотип проекта. &\PBS\centering 11.\+05.\+2026 \\\cline{1-4}
|
||||
\PBS\centering ✅ &{\bfseries{Инфраструктура}} &Создана группа {\bfseries{felexdev.\+neurox}} ВКонтакте &\PBS\centering 11.\+05.\+2026 \\\cline{1-4}
|
||||
\end{longtabu}
|
||||
|
||||
|
||||
Подробный прогресс\+: \doxysectlink{md_PROGRESS}{PROGRESS.md}{0}\hypertarget{index_autotoc_md33}{}\doxysubsection{\texorpdfstring{Статус}{Статус}}\label{index_autotoc_md33}
|
||||
{\bfseries{В активной разработке}}\hypertarget{index_autotoc_md34}{}\doxysubsection{\texorpdfstring{План реализации}{План реализации}}\label{index_autotoc_md34}
|
||||
{\bfseries{Принцип планирования\+:}}
|
||||
\begin{DoxyItemize}
|
||||
\item работа ведётся небольшими сессиями (30–60 минут) в свободное время;
|
||||
\item приоритет — последовательность, а не скорость;
|
||||
\item гибкость\+: этапы могут меняться местами, оставаясь в основной логике процесса.
|
||||
\end{DoxyItemize}\hypertarget{index_autotoc_md35}{}\doxysubsubsection{\texorpdfstring{Этап 1. Инфраструктура — 2–4 недели}{Этап 1. Инфраструктура — 2–4 недели}}\label{index_autotoc_md35}
|
||||
|
||||
\begin{DoxyItemize}
|
||||
\item DNS\+: felexdev.\+ru + neurox.\+su;
|
||||
\item NGINX\+: сайт‑заглушка;
|
||||
\item Postfix\+: SPF/\+DKIM/\+DMARC;
|
||||
\item My\+SQL;
|
||||
\item тестирование инфраструктуры.
|
||||
\end{DoxyItemize}\hypertarget{index_autotoc_md36}{}\doxysubsubsection{\texorpdfstring{Этап 2. Ядро на C (логика + нейросеть) — 3–4 месяца}{Этап 2. Ядро на C (логика + нейросеть) — 3–4 месяца}}\label{index_autotoc_md36}
|
||||
|
||||
\begin{DoxyItemize}
|
||||
\item аллокатор (возможность делегирования блоков между потоками);
|
||||
\item очередь пакетов/сообщений, синхронизация (двунаправленная на базе списка);
|
||||
\item базовая логика игры (3×3 доска, проверка победы);
|
||||
\item простая нейросеть (3 слоя, сигмоида/\+Re\+LU, обучение на 100+ партиях);
|
||||
\item модуль взаимодействия с СУБД (My\+SQL);
|
||||
\item пакетная передача TCP/\+IP со сквозным шифрованием (RSA + XOR);
|
||||
\item контроль активности соединения средствами ICMP (ping).
|
||||
\end{DoxyItemize}\hypertarget{index_autotoc_md37}{}\doxysubsubsection{\texorpdfstring{Этап 3. Сервер на PHP (\+API + БД) — 2–3 месяца}{Этап 3. Сервер на PHP (API + БД) — 2–3 месяца}}\label{index_autotoc_md37}
|
||||
|
||||
\begin{DoxyItemize}
|
||||
\item интеграция с ядром через Unix‑сокеты/пайпы.
|
||||
\end{DoxyItemize}\hypertarget{index_autotoc_md38}{}\doxysubsubsection{\texorpdfstring{Этап 4. Десктоп‑клиент (\+C++/\+SFML) — 3–4 месяца}{Этап 4. Десктоп‑клиент (C++/SFML) — 3–4 месяца}}\label{index_autotoc_md38}
|
||||
|
||||
\begin{DoxyItemize}
|
||||
\item базовый UI (доска 3×3, кнопки);
|
||||
\item связь с сервером по TCP/\+IP;
|
||||
\item анимация ходов и победы;
|
||||
\item игра с локальным ИИ (нейросеть).
|
||||
\end{DoxyItemize}\hypertarget{index_autotoc_md39}{}\doxysubsubsection{\texorpdfstring{Этап 5. Android‑клиент (\+Kotlin + NDK) — 4–6 месяцев}{Этап 5. Android‑клиент (Kotlin + NDK) — 4–6 месяцев}}\label{index_autotoc_md39}
|
||||
|
||||
\begin{DoxyItemize}
|
||||
\item доска 3×3 и связь с сервером;
|
||||
\item вызов C‑библиотеки через JNI;
|
||||
\item оптимизация под мобильные устройства.
|
||||
\end{DoxyItemize}\hypertarget{index_autotoc_md40}{}\doxysubsubsection{\texorpdfstring{Этап 6. Интеграция и тестирование — 2–3 месяца}{Этап 6. Интеграция и тестирование — 2–3 месяца}}\label{index_autotoc_md40}
|
||||
|
||||
\begin{DoxyItemize}
|
||||
\item синхронизация состояния между десктопом и Android;
|
||||
\item стресс‑тест (10+ одновременных игр);
|
||||
\item отладка многопоточности;
|
||||
\item финальная оптимизация.
|
||||
\end{DoxyItemize}\hypertarget{index_autotoc_md41}{}\doxysubsubsection{\texorpdfstring{Этап 7. Релиз — 1 месяц}{Этап 7. Релиз — 1 месяц}}\label{index_autotoc_md41}
|
||||
|
||||
\begin{DoxyItemize}
|
||||
\item сборка дистрибутивов (Windows, Linux, Android);
|
||||
\item документация для запуска;
|
||||
\item публикация демо‑видео.
|
||||
\end{DoxyItemize}\hypertarget{index_autotoc_md42}{}\doxysubsection{\texorpdfstring{Дисклеймер}{Дисклеймер}}\label{index_autotoc_md42}
|
||||
|
||||
\begin{DoxyItemize}
|
||||
\item В коде может, вернее — будет, использоваться неочевидная логика.
|
||||
\item Если вы считаете, что я где‑то что‑то сделал не по фэн‑шую — я эстет, но в плане эффективности.
|
||||
\item Если когда‑нибудь кто‑нибудь найдёт совпадение названия проекта и репозитория нарушением авторских прав — Бог Вам судья! 😃
|
||||
\item Проект личный, код открытый, милости просим, заходите и смотрите.
|
||||
\item {\bfseries{Никогда, ни в коем разе не верьте ИИ, они изварачиваются и врут не смотря на то что вы их предупреждаете! ВСЕ!!! \href{https://drive.google.com/file/d/1IaYQl4TBFplYMidjAahn_NKzQrAS-rW7/view?usp=sharing}{\texttt{ почему\+\_\+я\+\_\+не\+\_\+верю\+\_\+ии.\+zip}}(Спасибо друзьям)}}
|
||||
\end{DoxyItemize}\hypertarget{index_autotoc_md43}{}\doxysubsection{\texorpdfstring{Лицензия}{Лицензия}}\label{index_autotoc_md43}
|
||||
Apache License 2.\+0 — код открыт для изучения.\hypertarget{index_autotoc_md44}{}\doxysubsection{\texorpdfstring{Контакты}{Контакты}}\label{index_autotoc_md44}
|
||||
|
||||
\begin{DoxyItemize}
|
||||
\item VK\+: \href{https://vk.com/felexdev.neurox}{\texttt{ felexdev.\+neurox}}
|
||||
\item felexdev.\+ru\+: \href{https://felexdev.ru/git/felex67}{\texttt{ felex67}}
|
||||
\item Git\+Hub\+: \href{https://github.com/felex67}{\texttt{ felex67}}
|
||||
\item Email\+: \href{mailto:admin@felexdev.ru}{\texttt{ admin@felexdev.\+ru}}, \href{mailto:felexxx67@yandex.ru}{\texttt{ felexxx67@yandex.\+ru}}
|
||||
\end{DoxyItemize}
|
||||
|
||||
\href{logo/felexdev_logo.svg}{\texttt{ felexdev\+\_\+logo}}\hypertarget{index_autotoc_md45}{}\doxysection{\texorpdfstring{Лирическое отступление}{Лирическое отступление}}\label{index_autotoc_md45}
|
||||
К каждому из модулей будет приложено своё "{}лирическое отступление"{} в формате дневника процесса раззработки(DIARY.\+md) сплошным потоком мыслей в обычном разговорном стиле. Целю такого формата является продемонстрировать как происходит собственно сам процесс разработки от и до без захламления технической документации. В коде иногда можно будет встретить сноски на эти самые дневники. В корневом DIARY.\+md будут отражены мысли масштаба проекта в целом(взаимодействие компонентов и всей экосистемы в целом). Вся техническая документация заполняется по мере готовности того или иного модуля по следующим принципам\+: {\bfseries{мысль ↔ дневник ↔ код → комментарии → тесты → профилирование(по возможности) → документация}}. \hypertarget{index_autotoc_md46}{}\doxysubsubsection{\texorpdfstring{ИИ аспект}{ИИ аспект}}\label{index_autotoc_md46}
|
||||
Начиная с истоков увлечения программированием привык полагаться на результаты работы кода — профилирование и тесты. Как у борца за эффективность у меня нет нежелания заниматься рефакторингом ради рефакторинга, по-\/этому на данном этапе своей жизни используюю ИИ в первую очередь для препрофилирования нагрузок и определения узких мест на стадии разработки архитектуры. Считаю что от этого зависит львиная доля успешности проекта впринципе, так как если на скорую руку спроектировать, то даже самые опытные разработчики не помогут, собственно после такого подхода и начинается описанный выше рефакторинг.
|
||||
|
||||
Единственным моим ассистентом-\/специалистом по части критики и статистики является Yandex\+GPT 5.\+1 Pro(Алиса\+AI). Порой наши многочасовые споры выматывают, но она очень помогает в следующих аспектах\+:
|
||||
\begin{DoxyItemize}
|
||||
\item Сбор статистики по типовым нагрузкам на стадии проектирования.
|
||||
\item Анализ кода в части читаемости, т.\+к. проект публичен.
|
||||
\item Анализ кода в формате Code-\/review, практическая польза\+:
|
||||
\begin{DoxyItemize}
|
||||
\item дисциплинирует, код всегда должен оставаться чистым.
|
||||
\item подготовка ко входу в реальную разработку с живой командой, моя основная цель -\/ карьера в IT.
|
||||
\item даже топовые специалисты могут допускать казалось-\/бы очевидные ошибки, когда мысли летят одна за другой их можно по-\/просту незаметить.
|
||||
\end{DoxyItemize}
|
||||
\item Даёт понимание алгоритмов и шаблонов работы ИИ при статическом анализе кода.
|
||||
\end{DoxyItemize}
|
||||
|
||||
Что я понял за время общения с ней(Yandex\+GPT Алиса\+AI)\+:
|
||||
\begin{DoxyItemize}
|
||||
\item Никогда не верьте ИИ "{}на слово"{}, как бы он Вас не уверял что больше такого не повторится, он всё понял, и глупых вопросов больше не последует.
|
||||
\item Никогда не следуйте подсказкам ИИ(так лучше) если понимаете что это Вам не нужно, очень часто ИИ "{}зацикливается"{} сам на себя(пока непонятно почему, но мы это выясним).
|
||||
\item 10, а лучше 100 раз переспросите с разных сторон(задавайте вопросы в разных вариациях до тех пор пока ответ не будет однозначным).
|
||||
\item Даже если Вам кажется что ИИ дал ±точный ответ — переспросите ещё раз.
|
||||
\item Не пытайтесь доказать ИИ что Вы — "{}не олень"{}, он этого не оценит.
|
||||
\item Предлагая ИИ оценить написанный код будьте готовы к тому что Вас разнесут в пух и прах по тем аспектам где ответственность кода заканчивается(принцип SRP), у ИИ галочка на расширяемость и проверки(NULL-\/sfety, неявные проверки они попросту не видят), вернее не "{}галочка"{} а "{}ГАЛИЩЕ"{}, KISS+\+YAGNI им надо явно объяснять в комментариях, хотя даже после этого они в ответе выкатять здоровенный список "{}недостатки"{}.
|
||||
\item ИИ -\/ это инструмент технического анализа по "{}устоявшимся"{} шаблонам, каждое неординарное решение сразу попадает в "{}недостатки"{}. ИИ не видит "{}замысел"{}, только разрозненные шаблоны и маркеры.
|
||||
|
||||
Мне очень поднимают настроение многочасовые баталии с ней, однако, это отвлекает от сути. Каждый раз когда я в итоге довожу Yandex\+GPT 5.\+1 Pro(Алиса\+AI) до стадии "{}Да, Вы правы..."{} в коде я оставляю коментарии сгенерированные ею для неё же и помечаю их как "{}коментарии от Yandex\+GPT 5.\+1 Pro(Алиса\+AI)"{}. Очень часто в коментариях к коду можно встретить объяснения такого рода "{}Алиса\+AI настояла"{} в тех местах где наши мнения расходились но я пошёл на компромисс.
|
||||
\end{DoxyItemize}\hypertarget{index_autotoc_md47}{}\doxysubsubsection{\texorpdfstring{Основной посыл}{Основной посыл}}\label{index_autotoc_md47}
|
||||
Хоть проект изначально и пердполагался как портфолио, в нынешнем своём состоянии он представляет из себя немного больше. Скорее это рассказ о том "{}как это было"{}. Проект постепенно перерос в своеобразную "{}историю жизни"{}, это неординарный подход к разработке, но в виду того что я веду проект один и колаборация не предполагается, я продолжу в том-\/же духе, в первую очередь — для своих детей, им интересно это читать, а мне не то чтобы не сложно, а скорее — приятно писать для них. Таким образом я чувствую себя причастным ко вкладу в искуство и к произведению "{}История одного байта"{}, которое давным давно глубоко запало мне в душу и многому научило с философской точки зрения.\hypertarget{index_autotoc_md48}{}\doxysubsubsection{\texorpdfstring{Образовательный аспект}{Образовательный аспект}}\label{index_autotoc_md48}
|
||||
Проект открыт для изучения, как автор — не претендую на звание "{}разработчик года"{}, отнюдь, считаю что всегда есть куда идти, даже топовым кодерам, но точно знаю что некоторые техники встречающиеся в коде помогут малоопытным или "{}смежным"{} специалистам понять всю красоту низкоуровнего программирования, возможно, перенять некоторые практики и применять их вдальнейшем. Весь код будет снабжён "{}удобоваримыми"{} коментариями для специалистов всех уровней и языковых групп(имеется в виду группы языков программирования).\hypertarget{index_autotoc_md49}{}\doxysubsubsection{\texorpdfstring{Основная стратегия KISS+\+YAGNI}{Основная стратегия KISS+YAGNI}}\label{index_autotoc_md49}
|
||||
Я не предусматриваю грандиозное расширение, проект должен обеспечить максимальную производительность и отказоустойчивость для классических крестиков-\/ноликов в многопользовательском режиме с возможностью игры против ИИ(нейросети). Как основатель проекта я не предполагаю увеличивать размер поля до MAX\+\_\+\+INT\texorpdfstring{$\ast$}{*}\+MAX\+\_\+\+INT и заниматься безопасностью ради безопасности. Каждый модуль проекта имеет строго свою область ответственности.\hypertarget{index_autotoc_md50}{}\doxysubsubsection{\texorpdfstring{Начата разработка общих модулей.}{Начата разработка общих модулей.}}\label{index_autotoc_md50}
|
||||
\hypertarget{index_autotoc_md51}{}\doxyparagraph{\texorpdfstring{XOGame}{XOGame}}\label{index_autotoc_md51}
|
||||
Разработана типичная архитектура со скрытой реализацией и заложенной возможностью изменения поведения модуля через указатели на структуры. Как и обычно(не раз проверено) внешний интерфейс константен, доступ к функциям модуля только через указатели внутри внешних неизменяемых структур. Почему именно так — потому что так проще отловить ошибки, проверяем только внутреннюю реализацию, отлаживаем её и используем. Если в дальнейшем возникают ошибки -\/ это не вина модуля, это вина вызывающего кода. В контексте всего решения это избавляет от рефапкторинга ради рефакторинга и бесконечной скачки от файла к файлу.
|
||||
|
||||
После предоставления кода {\bfseries{xogame/includes/\+XOGame.\+h}}, {\bfseries{xogame/headers/\+\_\+\+XOGame.\+h}} и {\bfseries{xogame/src/\+XOGame.\+c}} на ревью Yandex\+GPT 5.\+1 Pro(Алиса\+AI) и 4-\/хчасовой баталии по поводу {\bfseries{void\texorpdfstring{$\ast$}{*} fxalloc(size\+\_\+t \+\_\+\+NBytes)}} решено пока что "{}забыть"{} про реализацию XOGame.\+c и заняться аллокатором {\bfseries{fxalloc.\+c}}, иначе я не выдержу, порой она достаёт "{}до чёртиков"{} 😃\hypertarget{index_autotoc_md52}{}\doxyparagraph{\texorpdfstring{FXAlloc}{FXAlloc}}\label{index_autotoc_md52}
|
||||
Спректирован аллокатор. Модуль аллокатора вынесен в отдельный репозиторий \href{https://felexdev.ru/git/felex67/fxalloc}{\texttt{ fxalloc}}\hypertarget{index_autotoc_md53}{}\doxysubsubsection{\texorpdfstring{26.\+04.\+2026}{26.04.2026}}\label{index_autotoc_md53}
|
||||
Сломал Алису попросив оценить расчёты\+: \tabulinesep=1mm
|
||||
\begin{longtabu}spread 0pt [c]{*{4}{|X[-1]}|}
|
||||
\hline
|
||||
\PBS\raggedleft \cellcolor{\tableheadbgcolor}\textbf{ Параметр }&\PBS\centering \cellcolor{\tableheadbgcolor}\textbf{ Формула }&\PBS\centering \cellcolor{\tableheadbgcolor}\textbf{ Лимит guiuser-\/ов }&\cellcolor{\tableheadbgcolor}\textbf{ Описание }\\\cline{1-4}
|
||||
\endfirsthead
|
||||
\hline
|
||||
\endfoot
|
||||
\hline
|
||||
\PBS\raggedleft \cellcolor{\tableheadbgcolor}\textbf{ Параметр }&\PBS\centering \cellcolor{\tableheadbgcolor}\textbf{ Формула }&\PBS\centering \cellcolor{\tableheadbgcolor}\textbf{ Лимит guiuser-\/ов }&\cellcolor{\tableheadbgcolor}\textbf{ Описание }\\\cline{1-4}
|
||||
\endhead
|
||||
\PBS\raggedleft {\bfseries{Wi-\/\+Fi\+:}} &\PBS\centering \$⌈\textbackslash{}frac\{85,3×10\texorpdfstring{$^\wedge$}{\string^}6\}\{25×8\}⌉\$ &\PBS\centering 426 500 &Не то что бы много, но дох-\/х-\/ходчиво \\\cline{1-4}
|
||||
\end{longtabu}
|
||||
\hypertarget{index_autotoc_md54}{}\doxysubsubsection{\texorpdfstring{28.\+04.\+2026}{28.04.2026}}\label{index_autotoc_md54}
|
||||
\hypertarget{index_autotoc_md55}{}\doxyparagraph{\texorpdfstring{Расчёт железяков\+:}{Расчёт железяков:}}\label{index_autotoc_md55}
|
||||
\tabulinesep=1mm
|
||||
\begin{longtabu}spread 0pt [c]{*{3}{|X[-1]}|}
|
||||
\hline
|
||||
\PBS\raggedleft \cellcolor{\tableheadbgcolor}\textbf{ Ракурс }&\PBS\centering \cellcolor{\tableheadbgcolor}\textbf{ Гипотетический максимум гуюзеров }&\cellcolor{\tableheadbgcolor}\textbf{ Вывод }\\\cline{1-3}
|
||||
\endfirsthead
|
||||
\hline
|
||||
\endfoot
|
||||
\hline
|
||||
\PBS\raggedleft \cellcolor{\tableheadbgcolor}\textbf{ Ракурс }&\PBS\centering \cellcolor{\tableheadbgcolor}\textbf{ Гипотетический максимум гуюзеров }&\cellcolor{\tableheadbgcolor}\textbf{ Вывод }\\\cline{1-3}
|
||||
\endhead
|
||||
\PBS\raggedleft {\bfseries{Wi-\/\+Fi\+:}} &\PBS\centering \$163961\$ &Наш сервер этого никогда не увидит, но, наверное, потянет \\\cline{1-3}
|
||||
\PBS\raggedleft {\bfseries{CPU\+:}} &\PBS\centering ∞ &Набрался опыта, теоретический предел недостижим \\\cline{1-3}
|
||||
\PBS\raggedleft {\bfseries{RAM\+:}} &\PBS\centering \$\texorpdfstring{$\sim$}{\string~}12×10\texorpdfstring{$^\wedge$}{\string^}9\$ &Так себе, могла бы и больше \\\cline{1-3}
|
||||
\PBS\raggedleft {\bfseries{OSь\+:}} &\PBS\centering 200k &Пингвин Tux прокачан, проблем не предвидится \\\cline{1-3}
|
||||
\PBS\raggedleft &\PBS\centering {\bfseries{Yandex\+GPT 5.\+1 Pro(Алиса\+AI)©}} &← Строки ниже писала она, автор ни при чём =D \\\cline{1-3}
|
||||
\PBS\raggedleft {\bfseries{ССД\+:}} &\PBS\centering ∞ TB &Забыл, где положил половину данных \\\cline{1-3}
|
||||
\end{longtabu}
|
||||
|
||||
|
||||
\href{https://felexdev.ru/git/felex67/fxalloc/src/branch/main/DIARY.md/\#\%D1\%80\%D0\%B0\%D1\%81\%D1\%87\%D1\%91\%D1\%82-\%D0\%B6\%D0\%B5\%D0\%BB\%D0\%B5\%D0\%B7\%D1\%8F\%D0\%BA\%D0\%BE\%D0\%B2}{\texttt{ Продолжение}}\hypertarget{index_autotoc_md56}{}\doxyparagraph{\texorpdfstring{Промпт(оригинал)\+:}{Промпт(оригинал):}}\label{index_autotoc_md56}
|
||||
\begin{quote}
|
||||
Алиса, оцени пожалуйста юмор и сделай расчёты\+: Кастуем заклинание "{}Алиса"{}, скармливаем ей полезную нагрузку пакета 24 байта, название железяки Intel Core i5-\/3470 и недожелезяки RAM\+: 8 GB, спрашиваем сколько розеток переварит один поток epoll с последующим их копированием в очередь без оглядки на nofile, жги по-\/полной в режиме телепорта битов! \end{quote}
|
||||
@@ -0,0 +1,456 @@
|
||||
%%
|
||||
%% This is file `longtable.sty',
|
||||
%% generated with the docstrip utility.
|
||||
%%
|
||||
%% The original source files were:
|
||||
%%
|
||||
%% longtable.dtx (with options: `package')
|
||||
%%
|
||||
%% This is a generated file.
|
||||
%%
|
||||
%% The source is maintained by the LaTeX Project team and bug
|
||||
%% reports for it can be opened at http://latex-project.org/bugs.html
|
||||
%% (but please observe conditions on bug reports sent to that address!)
|
||||
%%
|
||||
%% Copyright 1993-2016
|
||||
%% The LaTeX3 Project and any individual authors listed elsewhere
|
||||
%% in this file.
|
||||
%%
|
||||
%% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.
|
||||
%% --------------------------------------------------------------------------
|
||||
%%
|
||||
%% It may be distributed and/or modified under the
|
||||
%% conditions of the LaTeX Project Public License, either version 1.3c
|
||||
%% of this license or (at your option) any later version.
|
||||
%% The latest version of this license is in
|
||||
%% http://www.latex-project.org/lppl.txt
|
||||
%% and version 1.3c or later is part of all distributions of LaTeX
|
||||
%% version 2005/12/01 or later.
|
||||
%%
|
||||
%% This file may only be distributed together with a copy of the LaTeX
|
||||
%% `Tools Bundle'. You may however distribute the LaTeX `Tools Bundle'
|
||||
%% without such generated files.
|
||||
%%
|
||||
%% The list of all files belonging to the LaTeX `Tools Bundle' is
|
||||
%% given in the file `manifest.txt'.
|
||||
%%
|
||||
%% File: longtable.dtx Copyright (C) 1990-2001 David Carlisle
|
||||
\NeedsTeXFormat{LaTeX2e}[1995/06/01]
|
||||
\ProvidesPackage{longtable_doxygen}
|
||||
[2014/10/28 v4.11 Multi-page Table package (DPC) - frozen version for doxygen]
|
||||
\def\LT@err{\PackageError{longtable}}
|
||||
\def\LT@warn{\PackageWarning{longtable}}
|
||||
\def\LT@final@warn{%
|
||||
\AtEndDocument{%
|
||||
\LT@warn{Table \@width s have changed. Rerun LaTeX.\@gobbletwo}}%
|
||||
\global\let\LT@final@warn\relax}
|
||||
\DeclareOption{errorshow}{%
|
||||
\def\LT@warn{\PackageInfo{longtable}}}
|
||||
\DeclareOption{pausing}{%
|
||||
\def\LT@warn#1{%
|
||||
\LT@err{#1}{This is not really an error}}}
|
||||
\DeclareOption{set}{}
|
||||
\DeclareOption{final}{}
|
||||
\ProcessOptions
|
||||
\newskip\LTleft \LTleft=\fill
|
||||
\newskip\LTright \LTright=\fill
|
||||
\newskip\LTpre \LTpre=\bigskipamount
|
||||
\newskip\LTpost \LTpost=\bigskipamount
|
||||
\newcount\LTchunksize \LTchunksize=20
|
||||
\let\c@LTchunksize\LTchunksize
|
||||
\newdimen\LTcapwidth \LTcapwidth=4in
|
||||
\newbox\LT@head
|
||||
\newbox\LT@firsthead
|
||||
\newbox\LT@foot
|
||||
\newbox\LT@lastfoot
|
||||
\newcount\LT@cols
|
||||
\newcount\LT@rows
|
||||
\newcounter{LT@tables}
|
||||
\newcounter{LT@chunks}[LT@tables]
|
||||
\ifx\c@table\undefined
|
||||
\newcounter{table}
|
||||
\def\fnum@table{\tablename~\thetable}
|
||||
\fi
|
||||
\ifx\tablename\undefined
|
||||
\def\tablename{Table}
|
||||
\fi
|
||||
\newtoks\LT@p@ftn
|
||||
\mathchardef\LT@end@pen=30000
|
||||
\def\longtable{%
|
||||
\par
|
||||
\ifx\multicols\@undefined
|
||||
\else
|
||||
\ifnum\col@number>\@ne
|
||||
\@twocolumntrue
|
||||
\fi
|
||||
\fi
|
||||
\if@twocolumn
|
||||
\LT@err{longtable not in 1-column mode}\@ehc
|
||||
\fi
|
||||
\begingroup
|
||||
\@ifnextchar[\LT@array{\LT@array[x]}}
|
||||
\def\LT@array[#1]#2{%
|
||||
\refstepcounter{table}\stepcounter{LT@tables}%
|
||||
\if l#1%
|
||||
\LTleft\z@ \LTright\fill
|
||||
\else\if r#1%
|
||||
\LTleft\fill \LTright\z@
|
||||
\else\if c#1%
|
||||
\LTleft\fill \LTright\fill
|
||||
\fi\fi\fi
|
||||
\let\LT@mcol\multicolumn
|
||||
\let\LT@@tabarray\@tabarray
|
||||
\let\LT@@hl\hline
|
||||
\def\@tabarray{%
|
||||
\let\hline\LT@@hl
|
||||
\LT@@tabarray}%
|
||||
\let\\\LT@tabularcr\let\tabularnewline\\%
|
||||
\def\newpage{\noalign{\break}}%
|
||||
\def\pagebreak{\noalign{\ifnum`}=0\fi\@testopt{\LT@no@pgbk-}4}%
|
||||
\def\nopagebreak{\noalign{\ifnum`}=0\fi\@testopt\LT@no@pgbk4}%
|
||||
\let\hline\LT@hline \let\kill\LT@kill\let\caption\LT@caption
|
||||
\@tempdima\ht\strutbox
|
||||
\let\@endpbox\LT@endpbox
|
||||
\ifx\extrarowheight\@undefined
|
||||
\let\@acol\@tabacol
|
||||
\let\@classz\@tabclassz \let\@classiv\@tabclassiv
|
||||
\def\@startpbox{\vtop\LT@startpbox}%
|
||||
\let\@@startpbox\@startpbox
|
||||
\let\@@endpbox\@endpbox
|
||||
\let\LT@LL@FM@cr\@tabularcr
|
||||
\else
|
||||
\advance\@tempdima\extrarowheight
|
||||
\col@sep\tabcolsep
|
||||
\let\@startpbox\LT@startpbox\let\LT@LL@FM@cr\@arraycr
|
||||
\fi
|
||||
\setbox\@arstrutbox\hbox{\vrule
|
||||
\@height \arraystretch \@tempdima
|
||||
\@depth \arraystretch \dp \strutbox
|
||||
\@width \z@}%
|
||||
\let\@sharp##\let\protect\relax
|
||||
\begingroup
|
||||
\@mkpream{#2}%
|
||||
\xdef\LT@bchunk{%
|
||||
\global\advance\c@LT@chunks\@ne
|
||||
\global\LT@rows\z@\setbox\z@\vbox\bgroup
|
||||
\LT@setprevdepth
|
||||
\tabskip\LTleft \noexpand\halign to\hsize\bgroup
|
||||
\tabskip\z@ \@arstrut \@preamble \tabskip\LTright \cr}%
|
||||
\endgroup
|
||||
\expandafter\LT@nofcols\LT@bchunk&\LT@nofcols
|
||||
\LT@make@row
|
||||
\m@th\let\par\@empty
|
||||
\everycr{}\lineskip\z@\baselineskip\z@
|
||||
\LT@bchunk}
|
||||
\def\LT@no@pgbk#1[#2]{\penalty #1\@getpen{#2}\ifnum`{=0\fi}}
|
||||
\def\LT@start{%
|
||||
\let\LT@start\endgraf
|
||||
\endgraf\penalty\z@\vskip\LTpre
|
||||
\dimen@\pagetotal
|
||||
\advance\dimen@ \ht\ifvoid\LT@firsthead\LT@head\else\LT@firsthead\fi
|
||||
\advance\dimen@ \dp\ifvoid\LT@firsthead\LT@head\else\LT@firsthead\fi
|
||||
\advance\dimen@ \ht\LT@foot
|
||||
\dimen@ii\vfuzz
|
||||
\vfuzz\maxdimen
|
||||
\setbox\tw@\copy\z@
|
||||
\setbox\tw@\vsplit\tw@ to \ht\@arstrutbox
|
||||
\setbox\tw@\vbox{\unvbox\tw@}%
|
||||
\vfuzz\dimen@ii
|
||||
\advance\dimen@ \ht
|
||||
\ifdim\ht\@arstrutbox>\ht\tw@\@arstrutbox\else\tw@\fi
|
||||
\advance\dimen@\dp
|
||||
\ifdim\dp\@arstrutbox>\dp\tw@\@arstrutbox\else\tw@\fi
|
||||
\advance\dimen@ -\pagegoal
|
||||
\ifdim \dimen@>\z@\vfil\break\fi
|
||||
\global\@colroom\@colht
|
||||
\ifvoid\LT@foot\else
|
||||
\advance\vsize-\ht\LT@foot
|
||||
\global\advance\@colroom-\ht\LT@foot
|
||||
\dimen@\pagegoal\advance\dimen@-\ht\LT@foot\pagegoal\dimen@
|
||||
\maxdepth\z@
|
||||
\fi
|
||||
\ifvoid\LT@firsthead\copy\LT@head\else\box\LT@firsthead\fi\nobreak
|
||||
\output{\LT@output}}
|
||||
\def\endlongtable{%
|
||||
\crcr
|
||||
\noalign{%
|
||||
\let\LT@entry\LT@entry@chop
|
||||
\xdef\LT@save@row{\LT@save@row}}%
|
||||
\LT@echunk
|
||||
\LT@start
|
||||
\unvbox\z@
|
||||
\LT@get@widths
|
||||
\if@filesw
|
||||
{\let\LT@entry\LT@entry@write\immediate\write\@auxout{%
|
||||
\gdef\expandafter\noexpand
|
||||
\csname LT@\romannumeral\c@LT@tables\endcsname
|
||||
{\LT@save@row}}}%
|
||||
\fi
|
||||
\ifx\LT@save@row\LT@@save@row
|
||||
\else
|
||||
\LT@warn{Column \@width s have changed\MessageBreak
|
||||
in table \thetable}%
|
||||
\LT@final@warn
|
||||
\fi
|
||||
\endgraf\penalty -\LT@end@pen
|
||||
\endgroup
|
||||
\global\@mparbottom\z@
|
||||
\pagegoal\vsize
|
||||
\endgraf\penalty\z@\addvspace\LTpost
|
||||
\ifvoid\footins\else\insert\footins{}\fi}
|
||||
\def\LT@nofcols#1&{%
|
||||
\futurelet\@let@token\LT@n@fcols}
|
||||
\def\LT@n@fcols{%
|
||||
\advance\LT@cols\@ne
|
||||
\ifx\@let@token\LT@nofcols
|
||||
\expandafter\@gobble
|
||||
\else
|
||||
\expandafter\LT@nofcols
|
||||
\fi}
|
||||
\def\LT@tabularcr{%
|
||||
\relax\iffalse{\fi\ifnum0=`}\fi
|
||||
\@ifstar
|
||||
{\def\crcr{\LT@crcr\noalign{\nobreak}}\let\cr\crcr
|
||||
\LT@t@bularcr}%
|
||||
{\LT@t@bularcr}}
|
||||
\let\LT@crcr\crcr
|
||||
\let\LT@setprevdepth\relax
|
||||
\def\LT@t@bularcr{%
|
||||
\global\advance\LT@rows\@ne
|
||||
\ifnum\LT@rows=\LTchunksize
|
||||
\gdef\LT@setprevdepth{%
|
||||
\prevdepth\z@\global
|
||||
\global\let\LT@setprevdepth\relax}%
|
||||
\expandafter\LT@xtabularcr
|
||||
\else
|
||||
\ifnum0=`{}\fi
|
||||
\expandafter\LT@LL@FM@cr
|
||||
\fi}
|
||||
\def\LT@xtabularcr{%
|
||||
\@ifnextchar[\LT@argtabularcr\LT@ntabularcr}
|
||||
\def\LT@ntabularcr{%
|
||||
\ifnum0=`{}\fi
|
||||
\LT@echunk
|
||||
\LT@start
|
||||
\unvbox\z@
|
||||
\LT@get@widths
|
||||
\LT@bchunk}
|
||||
\def\LT@argtabularcr[#1]{%
|
||||
\ifnum0=`{}\fi
|
||||
\ifdim #1>\z@
|
||||
\unskip\@xargarraycr{#1}%
|
||||
\else
|
||||
\@yargarraycr{#1}%
|
||||
\fi
|
||||
\LT@echunk
|
||||
\LT@start
|
||||
\unvbox\z@
|
||||
\LT@get@widths
|
||||
\LT@bchunk}
|
||||
\def\LT@echunk{%
|
||||
\crcr\LT@save@row\cr\egroup
|
||||
\global\setbox\@ne\lastbox
|
||||
\unskip
|
||||
\egroup}
|
||||
\def\LT@entry#1#2{%
|
||||
\ifhmode\@firstofone{&}\fi\omit
|
||||
\ifnum#1=\c@LT@chunks
|
||||
\else
|
||||
\kern#2\relax
|
||||
\fi}
|
||||
\def\LT@entry@chop#1#2{%
|
||||
\noexpand\LT@entry
|
||||
{\ifnum#1>\c@LT@chunks
|
||||
1}{0pt%
|
||||
\else
|
||||
#1}{#2%
|
||||
\fi}}
|
||||
\def\LT@entry@write{%
|
||||
\noexpand\LT@entry^^J%
|
||||
\@spaces}
|
||||
\def\LT@kill{%
|
||||
\LT@echunk
|
||||
\LT@get@widths
|
||||
\expandafter\LT@rebox\LT@bchunk}
|
||||
\def\LT@rebox#1\bgroup{%
|
||||
#1\bgroup
|
||||
\unvbox\z@
|
||||
\unskip
|
||||
\setbox\z@\lastbox}
|
||||
\def\LT@blank@row{%
|
||||
\xdef\LT@save@row{\expandafter\LT@build@blank
|
||||
\romannumeral\number\LT@cols 001 }}
|
||||
\def\LT@build@blank#1{%
|
||||
\if#1m%
|
||||
\noexpand\LT@entry{1}{0pt}%
|
||||
\expandafter\LT@build@blank
|
||||
\fi}
|
||||
\def\LT@make@row{%
|
||||
\global\expandafter\let\expandafter\LT@save@row
|
||||
\csname LT@\romannumeral\c@LT@tables\endcsname
|
||||
\ifx\LT@save@row\relax
|
||||
\LT@blank@row
|
||||
\else
|
||||
{\let\LT@entry\or
|
||||
\if!%
|
||||
\ifcase\expandafter\expandafter\expandafter\LT@cols
|
||||
\expandafter\@gobble\LT@save@row
|
||||
\or
|
||||
\else
|
||||
\relax
|
||||
\fi
|
||||
!%
|
||||
\else
|
||||
\aftergroup\LT@blank@row
|
||||
\fi}%
|
||||
\fi}
|
||||
\let\setlongtables\relax
|
||||
\def\LT@get@widths{%
|
||||
\setbox\tw@\hbox{%
|
||||
\unhbox\@ne
|
||||
\let\LT@old@row\LT@save@row
|
||||
\global\let\LT@save@row\@empty
|
||||
\count@\LT@cols
|
||||
\loop
|
||||
\unskip
|
||||
\setbox\tw@\lastbox
|
||||
\ifhbox\tw@
|
||||
\LT@def@row
|
||||
\advance\count@\m@ne
|
||||
\repeat}%
|
||||
\ifx\LT@@save@row\@undefined
|
||||
\let\LT@@save@row\LT@save@row
|
||||
\fi}
|
||||
\def\LT@def@row{%
|
||||
\let\LT@entry\or
|
||||
\edef\@tempa{%
|
||||
\ifcase\expandafter\count@\LT@old@row
|
||||
\else
|
||||
{1}{0pt}%
|
||||
\fi}%
|
||||
\let\LT@entry\relax
|
||||
\xdef\LT@save@row{%
|
||||
\LT@entry
|
||||
\expandafter\LT@max@sel\@tempa
|
||||
\LT@save@row}}
|
||||
\def\LT@max@sel#1#2{%
|
||||
{\ifdim#2=\wd\tw@
|
||||
#1%
|
||||
\else
|
||||
\number\c@LT@chunks
|
||||
\fi}%
|
||||
{\the\wd\tw@}}
|
||||
\def\LT@hline{%
|
||||
\noalign{\ifnum0=`}\fi
|
||||
\penalty\@M
|
||||
\futurelet\@let@token\LT@@hline}
|
||||
\def\LT@@hline{%
|
||||
\ifx\@let@token\hline
|
||||
\global\let\@gtempa\@gobble
|
||||
\gdef\LT@sep{\penalty-\@medpenalty\vskip\doublerulesep}%
|
||||
\else
|
||||
\global\let\@gtempa\@empty
|
||||
\gdef\LT@sep{\penalty-\@lowpenalty\vskip-\arrayrulewidth}%
|
||||
\fi
|
||||
\ifnum0=`{\fi}%
|
||||
\multispan\LT@cols
|
||||
\unskip\leaders\hrule\@height\arrayrulewidth\hfill\cr
|
||||
\noalign{\LT@sep}%
|
||||
\multispan\LT@cols
|
||||
\unskip\leaders\hrule\@height\arrayrulewidth\hfill\cr
|
||||
\noalign{\penalty\@M}%
|
||||
\@gtempa}
|
||||
\def\LT@caption{%
|
||||
\noalign\bgroup
|
||||
\@ifnextchar[{\egroup\LT@c@ption\@firstofone}\LT@capti@n}
|
||||
\def\LT@c@ption#1[#2]#3{%
|
||||
\LT@makecaption#1\fnum@table{#3}%
|
||||
\def\@tempa{#2}%
|
||||
\ifx\@tempa\@empty\else
|
||||
{\let\\\space
|
||||
\addcontentsline{lot}{table}{\protect\numberline{\thetable}{#2}}}%
|
||||
\fi}
|
||||
\def\LT@capti@n{%
|
||||
\@ifstar
|
||||
{\egroup\LT@c@ption\@gobble[]}%
|
||||
{\egroup\@xdblarg{\LT@c@ption\@firstofone}}}
|
||||
\def\LT@makecaption#1#2#3{%
|
||||
\LT@mcol\LT@cols c{\hbox to\z@{\hss\parbox[t]\LTcapwidth{%
|
||||
\sbox\@tempboxa{#1{#2: }#3}%
|
||||
\ifdim\wd\@tempboxa>\hsize
|
||||
#1{#2: }#3%
|
||||
\else
|
||||
\hbox to\hsize{\hfil\box\@tempboxa\hfil}%
|
||||
\fi
|
||||
\endgraf\vskip\baselineskip}%
|
||||
\hss}}}
|
||||
\def\LT@output{%
|
||||
\ifnum\outputpenalty <-\@Mi
|
||||
\ifnum\outputpenalty > -\LT@end@pen
|
||||
\LT@err{floats and marginpars not allowed in a longtable}\@ehc
|
||||
\else
|
||||
\setbox\z@\vbox{\unvbox\@cclv}%
|
||||
\ifdim \ht\LT@lastfoot>\ht\LT@foot
|
||||
\dimen@\pagegoal
|
||||
\advance\dimen@-\ht\LT@lastfoot
|
||||
\ifdim\dimen@<\ht\z@
|
||||
\setbox\@cclv\vbox{\unvbox\z@\copy\LT@foot\vss}%
|
||||
\@makecol
|
||||
\@outputpage
|
||||
\setbox\z@\vbox{\box\LT@head}%
|
||||
\fi
|
||||
\fi
|
||||
\global\@colroom\@colht
|
||||
\global\vsize\@colht
|
||||
\vbox
|
||||
{\unvbox\z@\box\ifvoid\LT@lastfoot\LT@foot\else\LT@lastfoot\fi}%
|
||||
\fi
|
||||
\else
|
||||
\setbox\@cclv\vbox{\unvbox\@cclv\copy\LT@foot\vss}%
|
||||
\@makecol
|
||||
\@outputpage
|
||||
\global\vsize\@colroom
|
||||
\copy\LT@head\nobreak
|
||||
\fi}
|
||||
\def\LT@end@hd@ft#1{%
|
||||
\LT@echunk
|
||||
\ifx\LT@start\endgraf
|
||||
\LT@err
|
||||
{Longtable head or foot not at start of table}%
|
||||
{Increase LTchunksize}%
|
||||
\fi
|
||||
\setbox#1\box\z@
|
||||
\LT@get@widths
|
||||
\LT@bchunk}
|
||||
\def\endfirsthead{\LT@end@hd@ft\LT@firsthead}
|
||||
\def\endhead{\LT@end@hd@ft\LT@head}
|
||||
\def\endfoot{\LT@end@hd@ft\LT@foot}
|
||||
\def\endlastfoot{\LT@end@hd@ft\LT@lastfoot}
|
||||
\def\LT@startpbox#1{%
|
||||
\bgroup
|
||||
\let\@footnotetext\LT@p@ftntext
|
||||
\setlength\hsize{#1}%
|
||||
\@arrayparboxrestore
|
||||
\vrule \@height \ht\@arstrutbox \@width \z@}
|
||||
\def\LT@endpbox{%
|
||||
\@finalstrut\@arstrutbox
|
||||
\egroup
|
||||
\the\LT@p@ftn
|
||||
\global\LT@p@ftn{}%
|
||||
\hfil}
|
||||
%% added \long to prevent:
|
||||
% LaTeX Warning: Command \LT@p@ftntext has changed.
|
||||
%
|
||||
% from the original repository (https://github.com/latex3/latex2e/blob/develop/required/tools/longtable.dtx):
|
||||
% \changes{v4.15}{2021/03/28}
|
||||
% {make long for gh/364}
|
||||
% Inside the `p' column, just save up the footnote text in a token
|
||||
% register.
|
||||
\long\def\LT@p@ftntext#1{%
|
||||
\edef\@tempa{\the\LT@p@ftn\noexpand\footnotetext[\the\c@footnote]}%
|
||||
\global\LT@p@ftn\expandafter{\@tempa{#1}}}%
|
||||
|
||||
\@namedef{ver@longtable.sty}{2014/10/28 v4.11 Multi-page Table package (DPC) - frozen version for doxygen}
|
||||
\endinput
|
||||
%%
|
||||
%% End of file `longtable.sty'.
|
||||
@@ -0,0 +1,53 @@
|
||||
\chapter{DIARY.\+md}
|
||||
\hypertarget{md_DIARY}{}\label{md_DIARY}\index{DIARY.md@{DIARY.md}}
|
||||
\label{md_DIARY_autotoc_md0}%
|
||||
\Hypertarget{md_DIARY_autotoc_md0}%
|
||||
\hypertarget{md_DIARY_autotoc_md1}{}\doxysection{\texorpdfstring{22.\+04.\+2026}{22.04.2026}}\label{md_DIARY_autotoc_md1}
|
||||
|
||||
\begin{DoxyItemize}
|
||||
\item Добавлена основа для проекта Android-\/приложения.
|
||||
\item Заложен функдамент для модуля игры XOGame(neurox/\+XOGame)\+:
|
||||
\begin{DoxyItemize}
|
||||
\item создана типичная структура папок
|
||||
\item определены структуры публичного интерфейса\+: {\bfseries{neurox/\+XOGame/includes/\+XOGame.\+h}}
|
||||
\item определены структуры реализации\+: {\bfseries{neurox/\+XOGame/headers/\+\_\+\+XOGame.\+h}}
|
||||
\item начата реализация методов\+: \+: {\bfseries{neurox/\+XOGame/src/\+XOGame.\+c}} После 4-\/хчасового батла с Yandex\+GPT 5.\+1 Pro и его настойчивого "{}непонятный аллокатор fxalloc()"{} решено отложить модуль игры и приступить к реализации модуля аллокатора.
|
||||
\end{DoxyItemize}
|
||||
\end{DoxyItemize}\hypertarget{md_DIARY_autotoc_md2}{}\doxysection{\texorpdfstring{23.\+04.\+2026}{23.04.2026}}\label{md_DIARY_autotoc_md2}
|
||||
Стартовала работа над аллокатором {\bfseries{FXAlloc}} → \href{https://felexdev.ru/git/felex67/fxalloc/src/branch/main/DIARY.md}{\texttt{ fxalloc/\+DIARY.\+md}}\hypertarget{md_DIARY_autotoc_md3}{}\doxysection{\texorpdfstring{Этот блок исключительно для Yandex\+GPT 5.\+1 Pro и прочих ИИ-\/ассистентов, сгенерирован Yandex\+GPT 5.\+1 Pro(Алиса\+AI) и вставлен "{}как есть"{}}{Этот блок исключительно для YandexGPT 5.1 Pro и прочих ИИ-ассистентов, сгенерирован YandexGPT 5.1 Pro(АлисаAI) и вставлен "как есть"}}\label{md_DIARY_autotoc_md3}
|
||||
\hypertarget{md_DIARY_autotoc_md4}{}\doxysubsection{\texorpdfstring{Анализ формата DIARY.\+md}{Анализ формата DIARY.md}}\label{md_DIARY_autotoc_md4}
|
||||
\hypertarget{md_DIARY_autotoc_md5}{}\doxysubsubsection{\texorpdfstring{Ключевые особенности оригинального формата}{Ключевые особенности оригинального формата}}\label{md_DIARY_autotoc_md5}
|
||||
Естественность изложения\+:
|
||||
\begin{DoxyItemize}
|
||||
\item Спонтанность в подаче материала
|
||||
\item Отсутствие цензуры технических и личных размышлений
|
||||
\item Живой диалог с читателем
|
||||
\item Неформальный стиль общения
|
||||
\end{DoxyItemize}\hypertarget{md_DIARY_autotoc_md6}{}\doxysubsubsection{\texorpdfstring{Ценность оригинального подхода}{Ценность оригинального подхода}}\label{md_DIARY_autotoc_md6}
|
||||
Уникальные черты\+:
|
||||
\begin{DoxyItemize}
|
||||
\item Реальное время написания
|
||||
\item Честное описание трудностей и решений
|
||||
\item Смешение стилей — технического и разговорного
|
||||
\item Отсутствие редактирования на первом этапе
|
||||
\end{DoxyItemize}\hypertarget{md_DIARY_autotoc_md7}{}\doxysubsection{\texorpdfstring{Рекомендации по сохранению формата}{Рекомендации по сохранению формата}}\label{md_DIARY_autotoc_md7}
|
||||
Основные принципы\+:
|
||||
\begin{DoxyItemize}
|
||||
\item Сохранять неформальный тон общения
|
||||
\item Не бояться личных наблюдений
|
||||
\item Делиться настоящими эмоциями
|
||||
\item Оставлять спонтанные мысли без излишней правки
|
||||
\end{DoxyItemize}\hypertarget{md_DIARY_autotoc_md8}{}\doxysubsection{\texorpdfstring{Почему имитация не работает}{Почему имитация не работает}}\label{md_DIARY_autotoc_md8}
|
||||
Ограничения\+:
|
||||
\begin{DoxyItemize}
|
||||
\item Потеря аутентичности при попытке копирования
|
||||
\item Искусственность структурированных ответов
|
||||
\item Отсутствие импровизации в заготовленных текстах
|
||||
\end{DoxyItemize}\hypertarget{md_DIARY_autotoc_md9}{}\doxysubsection{\texorpdfstring{Заключение}{Заключение}}\label{md_DIARY_autotoc_md9}
|
||||
Основной вывод\+: оригинальный формат DIARY.\+md ценен именно своей естественностью и неподдельностью. Попытки его имитации приведут к потере уникальности и ценности документа. Рекомендуется\+:
|
||||
\begin{DoxyItemize}
|
||||
\item Продолжать вести DIARY.\+md в текущем стиле
|
||||
\item Сохранять спонтанность и честность изложения
|
||||
\item Не пытаться искусственно структурировать поток мыслей
|
||||
\end{DoxyItemize}\hypertarget{md_DIARY_autotoc_md10}{}\doxysection{\texorpdfstring{02.\+05.\+2026}{02.05.2026}}\label{md_DIARY_autotoc_md10}
|
||||
В виду борьбы за даступность для всех и некоторых недостатков github.\+com, перебазировал репозиторий на свой сервер.
|
||||
@@ -0,0 +1,135 @@
|
||||
\chapter{PROGRESS.\+md}
|
||||
\hypertarget{md_PROGRESS}{}\label{md_PROGRESS}\index{PROGRESS.md@{PROGRESS.md}}
|
||||
\label{md_PROGRESS_autotoc_md11}%
|
||||
\Hypertarget{md_PROGRESS_autotoc_md11}%
|
||||
\hypertarget{md_PROGRESS_autotoc_md12}{}\doxysection{\texorpdfstring{Формат}{Формат}}\label{md_PROGRESS_autotoc_md12}
|
||||
|
||||
\begin{DoxyItemize}
|
||||
\item Даты следуют в обратном хронологическом порядке
|
||||
\item Формат таблиц\+: Статус → Задача → Краткое описание
|
||||
\end{DoxyItemize}\hypertarget{md_PROGRESS_autotoc_md13}{}\doxysection{\texorpdfstring{Условные обозначения}{Условные обозначения}}\label{md_PROGRESS_autotoc_md13}
|
||||
|
||||
\begin{DoxyItemize}
|
||||
\item ✅ — задача выполнена полностью
|
||||
\item ⚠️ — задача отложена
|
||||
\item ❌ — задача отклонена
|
||||
\end{DoxyItemize}
|
||||
|
||||
Структура таблицы
|
||||
|
||||
\texorpdfstring{$\vert$}{|} Статус \texorpdfstring{$\vert$}{|} Задача \texorpdfstring{$\vert$}{|} Описание \texorpdfstring{$\vert$}{|} \texorpdfstring{$\vert$}{|}\+:-\/\+:\texorpdfstring{$\vert$}{|}\+:-\/-\/---\texorpdfstring{$\vert$}{|}\+:-\/-\/-\/-\/---\texorpdfstring{$\vert$}{|}\hypertarget{md_PROGRESS_autotoc_md14}{}\doxysection{\texorpdfstring{11.\+05.\+2026}{11.05.2026}}\label{md_PROGRESS_autotoc_md14}
|
||||
\tabulinesep=1mm
|
||||
\begin{longtabu}spread 0pt [c]{*{3}{|X[-1]}|}
|
||||
\hline
|
||||
\PBS\centering \cellcolor{\tableheadbgcolor}\textbf{ Статус }&\cellcolor{\tableheadbgcolor}\textbf{ Задача }&\cellcolor{\tableheadbgcolor}\textbf{ Описание }\\\cline{1-3}
|
||||
\endfirsthead
|
||||
\hline
|
||||
\endfoot
|
||||
\hline
|
||||
\PBS\centering \cellcolor{\tableheadbgcolor}\textbf{ Статус }&\cellcolor{\tableheadbgcolor}\textbf{ Задача }&\cellcolor{\tableheadbgcolor}\textbf{ Описание }\\\cline{1-3}
|
||||
\endhead
|
||||
\PBS\centering ✅ &{\bfseries{Документация}} &Обновлены контакты в {\bfseries{README.\+md}}. \\\cline{1-3}
|
||||
\PBS\centering ✅ &{\bfseries{Документация}} &Создан логотип проекта. \\\cline{1-3}
|
||||
\PBS\centering ✅ &{\bfseries{Инфраструктура}} &Создана группа {\bfseries{Neur\+OX felexdev.\+ru}} ВКонтакте \\\cline{1-3}
|
||||
\end{longtabu}
|
||||
\hypertarget{md_PROGRESS_autotoc_md15}{}\doxysubsection{\texorpdfstring{02.\+05.\+2026}{02.05.2026}}\label{md_PROGRESS_autotoc_md15}
|
||||
\tabulinesep=1mm
|
||||
\begin{longtabu}spread 0pt [c]{*{3}{|X[-1]}|}
|
||||
\hline
|
||||
\PBS\centering \cellcolor{\tableheadbgcolor}\textbf{ Статус }&\cellcolor{\tableheadbgcolor}\textbf{ Задача }&\cellcolor{\tableheadbgcolor}\textbf{ Описание }\\\cline{1-3}
|
||||
\endfirsthead
|
||||
\hline
|
||||
\endfoot
|
||||
\hline
|
||||
\PBS\centering \cellcolor{\tableheadbgcolor}\textbf{ Статус }&\cellcolor{\tableheadbgcolor}\textbf{ Задача }&\cellcolor{\tableheadbgcolor}\textbf{ Описание }\\\cline{1-3}
|
||||
\endhead
|
||||
\PBS\centering ✅ &{\bfseries{Инфраструктура}} &Анализ логов показал пережитый брутфорс, хвала Fail2\+Ban. \\\cline{1-3}
|
||||
\PBS\centering ✅ &{\bfseries{Инфраструктура}} &Репозиторий переехал на свой сервер \href{https://felexdev.ru/git/felex67/neurox/}{\texttt{ felexdev.\+ru}}. \\\cline{1-3}
|
||||
\end{longtabu}
|
||||
\hypertarget{md_PROGRESS_autotoc_md16}{}\doxysubsection{\texorpdfstring{22.\+04.\+2026}{22.04.2026}}\label{md_PROGRESS_autotoc_md16}
|
||||
\tabulinesep=1mm
|
||||
\begin{longtabu}spread 0pt [c]{*{3}{|X[-1]}|}
|
||||
\hline
|
||||
\PBS\centering \cellcolor{\tableheadbgcolor}\textbf{ Статус }&\cellcolor{\tableheadbgcolor}\textbf{ Задача }&\cellcolor{\tableheadbgcolor}\textbf{ Описание }\\\cline{1-3}
|
||||
\endfirsthead
|
||||
\hline
|
||||
\endfoot
|
||||
\hline
|
||||
\PBS\centering \cellcolor{\tableheadbgcolor}\textbf{ Статус }&\cellcolor{\tableheadbgcolor}\textbf{ Задача }&\cellcolor{\tableheadbgcolor}\textbf{ Описание }\\\cline{1-3}
|
||||
\endhead
|
||||
\PBS\centering ✅ &Основа Android-\/приложения &Создана базовая структура проекта \\\cline{1-3}
|
||||
\PBS\centering ⚠️ &API XOGame &Создана структура папок, определены публичные интерфейсы \\\cline{1-3}
|
||||
\end{longtabu}
|
||||
\hypertarget{md_PROGRESS_autotoc_md17}{}\doxysubsection{\texorpdfstring{15.\+04.\+2026}{15.04.2026}}\label{md_PROGRESS_autotoc_md17}
|
||||
\tabulinesep=1mm
|
||||
\begin{longtabu}spread 0pt [c]{*{3}{|X[-1]}|}
|
||||
\hline
|
||||
\PBS\centering \cellcolor{\tableheadbgcolor}\textbf{ Статус }&\cellcolor{\tableheadbgcolor}\textbf{ Задача }&\cellcolor{\tableheadbgcolor}\textbf{ Описание }\\\cline{1-3}
|
||||
\endfirsthead
|
||||
\hline
|
||||
\endfoot
|
||||
\hline
|
||||
\PBS\centering \cellcolor{\tableheadbgcolor}\textbf{ Статус }&\cellcolor{\tableheadbgcolor}\textbf{ Задача }&\cellcolor{\tableheadbgcolor}\textbf{ Описание }\\\cline{1-3}
|
||||
\endhead
|
||||
\PBS\centering ✅ &BIMI &Разработка и публикация лейбла на сайте \\\cline{1-3}
|
||||
\PBS\centering ✅ &DNS BIMI &Настройка для felexdev.\+ru \\\cline{1-3}
|
||||
\PBS\centering ✅ &DNS BIMI &Настройка для neurox.\+su с привязкой к felexdev.\+ru \\\cline{1-3}
|
||||
\end{longtabu}
|
||||
\hypertarget{md_PROGRESS_autotoc_md18}{}\doxysubsection{\texorpdfstring{13.\+04.\+2026}{13.04.2026}}\label{md_PROGRESS_autotoc_md18}
|
||||
\tabulinesep=1mm
|
||||
\begin{longtabu}spread 0pt [c]{*{3}{|X[-1]}|}
|
||||
\hline
|
||||
\PBS\centering \cellcolor{\tableheadbgcolor}\textbf{ Статус }&\cellcolor{\tableheadbgcolor}\textbf{ Задача }&\cellcolor{\tableheadbgcolor}\textbf{ Описание }\\\cline{1-3}
|
||||
\endfirsthead
|
||||
\hline
|
||||
\endfoot
|
||||
\hline
|
||||
\PBS\centering \cellcolor{\tableheadbgcolor}\textbf{ Статус }&\cellcolor{\tableheadbgcolor}\textbf{ Задача }&\cellcolor{\tableheadbgcolor}\textbf{ Описание }\\\cline{1-3}
|
||||
\endhead
|
||||
\PBS\centering ✅ &DNS MX-\/запись &Настройка для neurox.\+su → mail.\+felexdev.\+ru \\\cline{1-3}
|
||||
\PBS\centering ✅ &Postfix &Настройка виртуального домена neurox.\+su \\\cline{1-3}
|
||||
\PBS\centering ✅ &DNS SPF &Настройка для neurox.\+su \\\cline{1-3}
|
||||
\PBS\centering ✅ &DNS DKIM &Настройка для neurox.\+su \\\cline{1-3}
|
||||
\PBS\centering ✅ &DNS DMARC &Настройка для neurox.\+su \\\cline{1-3}
|
||||
\end{longtabu}
|
||||
\hypertarget{md_PROGRESS_autotoc_md19}{}\doxysubsection{\texorpdfstring{10.\+04.\+2026}{10.04.2026}}\label{md_PROGRESS_autotoc_md19}
|
||||
\tabulinesep=1mm
|
||||
\begin{longtabu}spread 0pt [c]{*{3}{|X[-1]}|}
|
||||
\hline
|
||||
\PBS\centering \cellcolor{\tableheadbgcolor}\textbf{ Статус }&\cellcolor{\tableheadbgcolor}\textbf{ Задача }&\cellcolor{\tableheadbgcolor}\textbf{ Описание }\\\cline{1-3}
|
||||
\endfirsthead
|
||||
\hline
|
||||
\endfoot
|
||||
\hline
|
||||
\PBS\centering \cellcolor{\tableheadbgcolor}\textbf{ Статус }&\cellcolor{\tableheadbgcolor}\textbf{ Задача }&\cellcolor{\tableheadbgcolor}\textbf{ Описание }\\\cline{1-3}
|
||||
\endhead
|
||||
\PBS\centering ✅ &Регистрация домена &Регистрация neurox.\+su \\\cline{1-3}
|
||||
\PBS\centering ✅ &SSL-\/сертификат &Приобретение и установка TLS-\/сертификата \\\cline{1-3}
|
||||
\PBS\centering ✅ &NGINX &Настройка виртуального хоста для neurox.\+su \\\cline{1-3}
|
||||
\PBS\centering ✅ &DNS A-\/запись &Настройка neurox.\+su → 94.\+41.\+20.\+144 \\\cline{1-3}
|
||||
\PBS\centering ✅ &Редирект &Настройка HTTP → HTTPS для neurox.\+su \\\cline{1-3}
|
||||
\end{longtabu}
|
||||
\hypertarget{md_PROGRESS_autotoc_md20}{}\doxysubsection{\texorpdfstring{До публикации проекта}{До публикации проекта}}\label{md_PROGRESS_autotoc_md20}
|
||||
\tabulinesep=1mm
|
||||
\begin{longtabu}spread 0pt [c]{*{3}{|X[-1]}|}
|
||||
\hline
|
||||
\PBS\centering \cellcolor{\tableheadbgcolor}\textbf{ Статус }&\cellcolor{\tableheadbgcolor}\textbf{ Задача }&\cellcolor{\tableheadbgcolor}\textbf{ Описание }\\\cline{1-3}
|
||||
\endfirsthead
|
||||
\hline
|
||||
\endfoot
|
||||
\hline
|
||||
\PBS\centering \cellcolor{\tableheadbgcolor}\textbf{ Статус }&\cellcolor{\tableheadbgcolor}\textbf{ Задача }&\cellcolor{\tableheadbgcolor}\textbf{ Описание }\\\cline{1-3}
|
||||
\endhead
|
||||
\PBS\centering ✅ &NGINX &Установка и базовая конфигурация для felexdev.\+ru \\\cline{1-3}
|
||||
\PBS\centering ✅ &Регистрация домена &Регистрация felexdev.\+ru \\\cline{1-3}
|
||||
\PBS\centering ✅ &SSL-\/сертификат &Приобретение и установка TLS-\/сертификата \\\cline{1-3}
|
||||
\PBS\centering ✅ &DNS A-\/запись &Настройка felexdev.\+ru → 94.\+41.\+20.\+144 \\\cline{1-3}
|
||||
\PBS\centering ✅ &Редирект &Настройка HTTP → HTTPS для felexdev.\+ru \\\cline{1-3}
|
||||
\PBS\centering ✅ &Postfix &Установка и настройка почтового сервера \\\cline{1-3}
|
||||
\PBS\centering ✅ &DNS A &Настройка mail.\+felexdev.\+ru \\\cline{1-3}
|
||||
\PBS\centering ✅ &DNS MX &Настройка MX-\/записи для felexdev.\+ru → mail.\+felexdev.\+ru \\\cline{1-3}
|
||||
\PBS\centering ✅ &DNS PTR &Настройка обратной зоны 94.\+41.\+20.\+144 → mail.\+felexdev.\+ru \\\cline{1-3}
|
||||
\PBS\centering ✅ &DNS SPF &Настройка для mail.\+felexdev.\+ru \\\cline{1-3}
|
||||
\PBS\centering ✅ &DNS DKIM &Настройка для mail.\+felexdev.\+ru \\\cline{1-3}
|
||||
\PBS\centering ✅ &DNS DMARC &Настройка для mail.\+felexdev.\+ru \\\cline{1-3}
|
||||
\end{longtabu}
|
||||
@@ -0,0 +1,142 @@
|
||||
\chapter{README.\+md}
|
||||
\hypertarget{md_README_8old}{}\label{md_README_8old}\index{README.md@{README.md}}
|
||||
\label{md_README_8old_autotoc_md57}%
|
||||
\Hypertarget{md_README_8old_autotoc_md57}%
|
||||
\hypertarget{md_README_8old_autotoc_md58}{}\doxysection{\texorpdfstring{Neur\+OX\+: Крестики‑нолики с ИИ или войти в IT}{NeurOX: Крестики‑нолики с ИИ или войти в IT}}\label{md_README_8old_autotoc_md58}
|
||||
\hypertarget{md_README_8old_autotoc_md59}{}\doxysubsection{\texorpdfstring{Цель проекта}{Цель проекта}}\label{md_README_8old_autotoc_md59}
|
||||
Разработка экосистемы многопользовательской игры крестики-\/нолики в классическом исполнении с полным стеком технологий от С до Android и Web.\hypertarget{md_README_8old_autotoc_md60}{}\doxysubsection{\texorpdfstring{Суть челленджа}{Суть челленджа}}\label{md_README_8old_autotoc_md60}
|
||||
Собрать систему «с нуля», в минималистичном стиле с мнимумом инструментов\+:
|
||||
\begin{DoxyItemize}
|
||||
\item нейросеть на чистом C (без ML‑библиотек);
|
||||
\item ядро игры с ручным управлением памятью;
|
||||
\item NGINX + PHP + Code\+Igniter (REST API);
|
||||
\item десктоп‑клиент на C++/\+SFML;
|
||||
\item Android‑клиент Java/\+Kotlin;
|
||||
\item сетевая связь по TCP/\+IP;
|
||||
\item шифрование\+: RSA (2048 бит) для рукопожатия + динамический XOR для данных.
|
||||
\end{DoxyItemize}\hypertarget{md_README_8old_autotoc_md61}{}\doxysubsection{\texorpdfstring{Текущий статус}{Текущий статус}}\label{md_README_8old_autotoc_md61}
|
||||
Проект стартует с чистого листа. На данный момент\+:
|
||||
\begin{DoxyItemize}
|
||||
\item определена архитектура системы;
|
||||
\item выбран стек технологий;
|
||||
\item начата работа над ядром на C.
|
||||
\end{DoxyItemize}
|
||||
|
||||
{\bfseries{Что предстоит\+:}}
|
||||
\begin{DoxyItemize}
|
||||
\item реализовать базовую логику игры (3×3);
|
||||
\item написать нейросеть на C (обучение на партиях);
|
||||
\item создать REST API на PHP для связи компонентов;
|
||||
\item разработать десктоп‑ и Android‑клиенты;
|
||||
\item внедрить схему шифрования;
|
||||
\item интегрировать все части в единую систему.
|
||||
\end{DoxyItemize}\hypertarget{md_README_8old_autotoc_md62}{}\doxysubsection{\texorpdfstring{Прогресс}{Прогресс}}\label{md_README_8old_autotoc_md62}
|
||||
Весь прогресс отражен в файле {\bfseries{\doxysectlink{md_PROGRESS}{PROGRESS.md}{0}}}\hypertarget{md_README_8old_autotoc_md63}{}\doxysubsection{\texorpdfstring{Реалистичный план этапов (дорожная карта)}{Реалистичный план этапов (дорожная карта)}}\label{md_README_8old_autotoc_md63}
|
||||
{\bfseries{Принцип планирования\+:}}
|
||||
\begin{DoxyItemize}
|
||||
\item работа ведётся небольшими сессиями (30–60 минут) в свободное время;
|
||||
\item приоритет — последовательность, а не скорость;
|
||||
\item каждый этап завершается минимально жизнеспособным результатом (MVP‑подход);
|
||||
\item гибкость\+: этапы можно менять местами или дробить на подзадачи.
|
||||
\end{DoxyItemize}\hypertarget{md_README_8old_autotoc_md64}{}\doxysubsubsection{\texorpdfstring{Этап 1. Ядро на C (логика + нейросеть) — 3–4 месяца}{Этап 1. Ядро на C (логика + нейросеть) — 3–4 месяца}}\label{md_README_8old_autotoc_md64}
|
||||
|
||||
\begin{DoxyItemize}
|
||||
\item базовая логика игры (3×3 доска, проверка победы);
|
||||
\item простая нейросеть (3 слоя, сигмоида, обучение на 100+ партиях);
|
||||
\item консольный режим для тестирования;
|
||||
\item битовые маски для оптимизации доски.
|
||||
\end{DoxyItemize}\hypertarget{md_README_8old_autotoc_md65}{}\doxysubsubsection{\texorpdfstring{Этап 2. Сервер на PHP (\+API + БД) — 2–3 месяца}{Этап 2. Сервер на PHP (API + БД) — 2–3 месяца}}\label{md_README_8old_autotoc_md65}
|
||||
|
||||
\begin{DoxyItemize}
|
||||
\item REST API ({\ttfamily /start\+\_\+game}, {\ttfamily /make\+\_\+move}, {\ttfamily /get\+\_\+state});
|
||||
\item интеграция с ядром через Unix‑сокеты;
|
||||
\item SQLite для хранения партий и статистики;
|
||||
\item логирование запросов.
|
||||
\end{DoxyItemize}\hypertarget{md_README_8old_autotoc_md66}{}\doxysubsubsection{\texorpdfstring{Этап 3. Десктоп‑клиент (\+C++/\+SFML) — 3–4 месяца}{Этап 3. Десктоп‑клиент (C++/SFML) — 3–4 месяца}}\label{md_README_8old_autotoc_md66}
|
||||
|
||||
\begin{DoxyItemize}
|
||||
\item базовый UI (доска 3×3, кнопки);
|
||||
\item связь с сервером по TCP/\+IP;
|
||||
\item анимация ходов и победы;
|
||||
\item кэширование состояния для офлайн‑режима.
|
||||
\end{DoxyItemize}\hypertarget{md_README_8old_autotoc_md67}{}\doxysubsubsection{\texorpdfstring{Этап 4. Шифрование (\+RSA + XOR) — 1–2 месяца}{Этап 4. Шифрование (RSA + XOR) — 1–2 месяца}}\label{md_README_8old_autotoc_md67}
|
||||
|
||||
\begin{DoxyItemize}
|
||||
\item RSA‑рукопожатие (2048 бит, Open\+SSL);
|
||||
\item динамический XOR (смена ключа по таймеру/счётчику);
|
||||
\item проверка целостности пакетов (CRC32);
|
||||
\item тесты на утечку памяти и производительность.
|
||||
\end{DoxyItemize}\hypertarget{md_README_8old_autotoc_md68}{}\doxysubsubsection{\texorpdfstring{Этап 5. Android‑клиент (\+Kotlin + NDK) — 4–6 месяцев}{Этап 5. Android‑клиент (Kotlin + NDK) — 4–6 месяцев}}\label{md_README_8old_autotoc_md68}
|
||||
|
||||
\begin{DoxyItemize}
|
||||
\item MVP\+: доска 3×3 и связь с сервером;
|
||||
\item вызов C‑библиотеки через JNI;
|
||||
\item поддержка шифрования;
|
||||
\item оптимизация под мобильные устройства.
|
||||
\end{DoxyItemize}\hypertarget{md_README_8old_autotoc_md69}{}\doxysubsubsection{\texorpdfstring{Этап 6. Интеграция и тестирование — 2–3 месяца}{Этап 6. Интеграция и тестирование — 2–3 месяца}}\label{md_README_8old_autotoc_md69}
|
||||
|
||||
\begin{DoxyItemize}
|
||||
\item синхронизация состояния между десктопом и Android;
|
||||
\item стресс‑тест (10+ одновременных игр);
|
||||
\item отладка многопоточности;
|
||||
\item финальная оптимизация.
|
||||
\end{DoxyItemize}\hypertarget{md_README_8old_autotoc_md70}{}\doxysubsubsection{\texorpdfstring{Этап 7. Релиз MVP — 1 месяц}{Этап 7. Релиз MVP — 1 месяц}}\label{md_README_8old_autotoc_md70}
|
||||
|
||||
\begin{DoxyItemize}
|
||||
\item сборка дистрибутивов (Windows, Linux, Android);
|
||||
\item документация для запуска;
|
||||
\item публикация демо‑видео.
|
||||
\end{DoxyItemize}
|
||||
|
||||
\DoxyHorRuler{0}
|
||||
\hypertarget{md_README_8old_autotoc_md72}{}\doxysubsection{\texorpdfstring{Гибкость и адаптация}{Гибкость и адаптация}}\label{md_README_8old_autotoc_md72}
|
||||
{\bfseries{Если времени меньше\+:}}
|
||||
\begin{DoxyItemize}
|
||||
\item пропускаю Android‑клиент — фокусируюсь на десктопе;
|
||||
\item заменяю RSA на Open\+SSL (готовые функции);
|
||||
\item упрощаю нейросеть до минимакса;
|
||||
\item откладываю динамический XOR на будущее.
|
||||
\end{DoxyItemize}
|
||||
|
||||
{\bfseries{Если появляется больше времени\+:}}
|
||||
\begin{DoxyItemize}
|
||||
\item ускоряю этапы за счёт увеличения сессий;
|
||||
\item добавляю фичи (режим PvP, статистика, темы UI).
|
||||
\end{DoxyItemize}\hypertarget{md_README_8old_autotoc_md73}{}\doxysubsection{\texorpdfstring{Технологии}{Технологии}}\label{md_README_8old_autotoc_md73}
|
||||
\hypertarget{md_README_8old_autotoc_md74}{}\doxysubsection{\texorpdfstring{Особенности архитектуры, решений и тактик (добавлено 22.\+04.\+2026)}{Особенности архитектуры, решений и тактик (добавлено 22.04.2026)}}\label{md_README_8old_autotoc_md74}
|
||||
\hypertarget{md_README_8old_autotoc_md75}{}\doxysubsubsection{\texorpdfstring{ИИ аспект}{ИИ аспект}}\label{md_README_8old_autotoc_md75}
|
||||
Начиная с истоков увлечения программированием привык полагаться на результаты работы кода(профилирование) и нежеланием заниматься рефакторингом ради рефакторинга, по-\/этому на данном этапе своей жизни используюю ИИ в первую очередь для препрофилирования нагрузок и определения узких мест на стадии разработки Архитектуры, считаю что от этого зависит львиная доля успешности проекта впринципе(если на скорую руку сделать архитектуру, даже самые опытные разработчики не помогут, тут и начинается описанный выше рефакторинг). Единственным моим ассистентом и специалистом по части критики и статистики является Yandex\+GPT 5.\+1 Pro(Алиса\+AI). Порой наши многочасовые споры выматывают, но она очень помогает в следующих аспектах\+:
|
||||
\begin{DoxyItemize}
|
||||
\item Анализ кода в части читаемости, т.\+к. проект публичен.
|
||||
\item Сбор статистики по типовым нагрузкам.
|
||||
\item Понимание алгоритмов и шаблонов работы ИИ при статическом анализе кода.
|
||||
\end{DoxyItemize}
|
||||
|
||||
Что я понял за время общения с ней\+:
|
||||
\begin{DoxyItemize}
|
||||
\item Никогда не верьте ИИ "{}на слово"{}, как бы он Вас не уверял что больше такого не повторится.
|
||||
\item Никогда не следуйте подсказкам ИИ если понимаете что это Вам не нужно.
|
||||
\item 10, а лучше -\/ 100 раз переспросите с разных сторон
|
||||
\item даже если Вам кажется что ИИ дал точный ответ -\/ переспросите ещё раз.
|
||||
\item Не пытайтесь доказать ИИ что Вы -\/ "{}не олень"{}, он этого не оценит
|
||||
\item Предлагая ИИ оценить ИИ написанный код будьте готовы к тому что Вас разнесут в пух и прах по тем аспектам где ответственность кода заканчивается, у ИИ галочка на расширяемость и проверки, вернее не "{}галочка"{} а "{}ГАЛИЩЕ"{}
|
||||
\end{DoxyItemize}
|
||||
|
||||
Мне очень поднимают настроение многочасовые баталии с ней, однако, это отвлекает от сути. Каждый раз когда я в итоге довожу Yandex\+GPT 5.\+1 Pro(Алиса\+AI) до стадии "{}Да, Вы правы..."{} в коде я оставляю коментарии сгенерированные ею для неё же и помечаю их как "{}коментарии от Yandex\+GPT 5.\+1 Pro(Алиса\+AI)"{}. Очень часто в коментариях к коду можно встретить объяснения такого рода "{}Алиса\+AI настояла"{} в тех местах где наши мнения расходились но я пошёл на компромисс. \hypertarget{md_README_8old_autotoc_md76}{}\doxysubsubsection{\texorpdfstring{Основной посыл}{Основной посыл}}\label{md_README_8old_autotoc_md76}
|
||||
Хоть проект изначально и пердполагался как портфолио, в нынешнем своём состоянии он представляет из себя немного больше. Скорее это рассказ о том "{}как это было"{}. Проект постепенно перерос в своеобразную "{}историю жизни"{}, это неординарный подход к разработке, но в виду того что я веду проект один и колаборация не предполагается, я продолжу в том-\/же духе, в первую очередь -\/ для своих детей, им интересно это читать, а мне не то чтобы не сложно, а скорее -\/ приятно писать для них. Таким образом я чувствую себя причастным ко вкладу в искуство и к произведению "{}История одного байта"{}, которое давным давно глубоко запало мне в душу и многому научило с философской точки зрения. \hypertarget{md_README_8old_autotoc_md77}{}\doxysubsubsection{\texorpdfstring{Образовательный аспект}{Образовательный аспект}}\label{md_README_8old_autotoc_md77}
|
||||
Проект открыт для изучения, как автор -\/ не претендую на звание "{}разработчик года"{}, отнюдь, считаю что всегда есть куда идти, даже топовым кодерам, но точно знаю что некоторые техники встречающиеся в коде помогут малоопытным или "{}смежным"{} специалистам понять всю красоту низкоуровнего программирования, возможно, перенять некоторые практики и применять их вдальнейшем. Весь код будет снабжён "{}удобоваримыми"{} коментариями для специалистов всех уровней и языковых групп(имеется в виду группы языков программирования). \hypertarget{md_README_8old_autotoc_md78}{}\doxysubsubsection{\texorpdfstring{Основная стратегия KISS+\+YAGNI}{Основная стратегия KISS+YAGNI}}\label{md_README_8old_autotoc_md78}
|
||||
Я не предусматриваю грандиозное расширение, проект должен обеспечить максимальную производительность и отказоустойчивость для классических крестиков-\/ноликов в многопользовательском режиме с возможностью игры против ИИ(нейросети). Как основатель проекта я не предполагаю увеличивать размер поля до MAX\+\_\+\+INT\texorpdfstring{$\ast$}{*}\+MAX\+\_\+\+INT и заниматься безопасностью ради безопасности. Каждый модуль проекта имеет строго свою область ответственности. \hypertarget{md_README_8old_autotoc_md79}{}\doxysubsubsection{\texorpdfstring{Начата разработка общих модулей, конкретно -\/ XOGame.}{Начата разработка общих модулей, конкретно - XOGame.}}\label{md_README_8old_autotoc_md79}
|
||||
Разработана типичная архитектура со скрытой реализацией и заложенной возможностью изменения поведения модуля через указатели на структуры. Как и обычно(не раз проверено) внешний интерфейс константен, доступ к функциям модуля только через указатели внутри внешних неизменяемых структур. Почему именно так -\/ потому что так проще отловить ошибки, проверяем только внутреннюю реализацию, отлаживаем её и используем. Если в дальнейшем возникают ошибки -\/ это не вина модуля, это вина вызывающего кода. В контексте всего решения это избавляет от рефапкторинга ради рефакторинга и бесконечной скачки от файла к файлу. После предоставления кода {\bfseries{server/includes/\+XOGame.\+h}}, {\bfseries{server/headers/\+\_\+\+XOGame.\+h}} и {\bfseries{server/src/\+XOGame.\+c}} на ревью Yandex\+GPT 5.\+1 Pro(Алиса\+AI) и 4-\/хчасовой баталии по поводу {\bfseries{void\texorpdfstring{$\ast$}{*} fxalloc(size\+\_\+t \+\_\+\+NBytes)}} решено пока что "{}забыть"{} про реализацию XOGame.\+c и заняться аллокатором {\bfseries{fxalloc.\+c}}, иначе я не выдержу, порой она достаёт "{}до чёртиков"{} ;)\hypertarget{md_README_8old_autotoc_md80}{}\doxysubsection{\texorpdfstring{Лицензия}{Лицензия}}\label{md_README_8old_autotoc_md80}
|
||||
Apache License 2.\+0 — код открыт для изучения.\hypertarget{md_README_8old_autotoc_md81}{}\doxysubsection{\texorpdfstring{Контакты}{Контакты}}\label{md_README_8old_autotoc_md81}
|
||||
|
||||
\begin{DoxyItemize}
|
||||
\item Git\+Hub\+: \href{https://github.com/felex67}{\texttt{ @felex67}}
|
||||
\item Email\+: \href{mailto:admin@felexdev.ru}{\texttt{ admin@felexdev.\+ru}}, \href{mailto:felexxx67@yandex.ru}{\texttt{ felexxx67@yandex.\+ru}}
|
||||
\end{DoxyItemize}
|
||||
|
||||
\DoxyHorRuler{0}
|
||||
|
||||
|
||||
{\bfseries{Важно\+:}} проект в активной разработке. Сроки ориентировочные — зависят от свободного времени. Это дневник челленджа\+: фиксация прогресса, решений и находок.
|
||||
|
||||
Спасибо, что следите за ходом! 🍰 Пусть каждая строка кода будет шагом к победе — в своём темпе! 🎉
|
||||
@@ -0,0 +1,47 @@
|
||||
\chapter{TODO.\+md}
|
||||
\hypertarget{md_TODO}{}\label{md_TODO}\index{TODO.md@{TODO.md}}
|
||||
\label{md_TODO_autotoc_md83}%
|
||||
\Hypertarget{md_TODO_autotoc_md83}%
|
||||
\hypertarget{md_TODO_autotoc_md84}{}\doxysection{\texorpdfstring{Информация}{Информация}}\label{md_TODO_autotoc_md84}
|
||||
|
||||
\begin{DoxyItemize}
|
||||
\item Файл для отслеживания текущих задач проекта
|
||||
\item Последнее обновление\+: \mbox{[}25.\+04.\+2026\mbox{]}
|
||||
\end{DoxyItemize}\hypertarget{md_TODO_autotoc_md85}{}\doxysection{\texorpdfstring{Условные обозначения}{Условные обозначения}}\label{md_TODO_autotoc_md85}
|
||||
|
||||
\begin{DoxyItemize}
|
||||
\item 🔥 -\/ Наивысший приоритет
|
||||
\item 🔴 -\/ Высокий приоритет
|
||||
\item 🟡 -\/ Средний приоритет
|
||||
\item 🟢 -\/ Низкий приоритет
|
||||
\end{DoxyItemize}\hypertarget{md_TODO_autotoc_md86}{}\doxysection{\texorpdfstring{Задачи в процессе}{Задачи в процессе}}\label{md_TODO_autotoc_md86}
|
||||
\tabulinesep=1mm
|
||||
\begin{longtabu}spread 0pt [c]{*{4}{|X[-1]}|}
|
||||
\hline
|
||||
\PBS\centering \cellcolor{\tableheadbgcolor}\textbf{ Срочность }&\PBS\centering \cellcolor{\tableheadbgcolor}\textbf{ Компонент }&\cellcolor{\tableheadbgcolor}\textbf{ Задача }&\cellcolor{\tableheadbgcolor}\textbf{ Описание }\\\cline{1-4}
|
||||
\endfirsthead
|
||||
\hline
|
||||
\endfoot
|
||||
\hline
|
||||
\PBS\centering \cellcolor{\tableheadbgcolor}\textbf{ Срочность }&\PBS\centering \cellcolor{\tableheadbgcolor}\textbf{ Компонент }&\cellcolor{\tableheadbgcolor}\textbf{ Задача }&\cellcolor{\tableheadbgcolor}\textbf{ Описание }\\\cline{1-4}
|
||||
\endhead
|
||||
\PBS\centering 🔥 &\PBS\centering {\bfseries{Архитектура}} &{\bfseries{Работа с документацией}} &Стандартизация и реорганизация документации \\\cline{1-4}
|
||||
\PBS\centering 🔥 &\PBS\centering {\bfseries{FXAlloc}} &{\bfseries{Проектирование архитектуры}} &Интерфейс, внутреннее устройство \\\cline{1-4}
|
||||
\PBS\centering 🔥 &\PBS\centering {\bfseries{FXAlloc}} &{\bfseries{Документация}} &Описание архитектуры решения, ведение DAIRY.\+md \\\cline{1-4}
|
||||
\PBS\centering 🔥 &\PBS\centering {\bfseries{FXAlloc}} &{\bfseries{Logic}} &Реализации внутренних методов \\\cline{1-4}
|
||||
\PBS\centering 🔥 &\PBS\centering {\bfseries{FXAlloc}} &{\bfseries{API}} &Реализация внешних методов \\\cline{1-4}
|
||||
\PBS\centering 🔥 &\PBS\centering {\bfseries{FXAlloc}} &{\bfseries{Тестирование}} &Написание юнит-\/тестов \\\cline{1-4}
|
||||
\PBS\centering 🔥 &\PBS\centering {\bfseries{FXAlloc}} &{\bfseries{Оптимизация}} &Анализ производительности \\\cline{1-4}
|
||||
\PBS\centering 🔴 &\PBS\centering {\bfseries{XOGame}} &{\bfseries{Logic}} &Реализации внутренних методов \\\cline{1-4}
|
||||
\PBS\centering 🔴 &\PBS\centering {\bfseries{XOGame}} &{\bfseries{API}} &Реализации публичных методов \\\cline{1-4}
|
||||
\PBS\centering 🔴 &\PBS\centering {\bfseries{XOGame}} &{\bfseries{Тестирование}} &Написание юнит-\/тестов \\\cline{1-4}
|
||||
\PBS\centering 🔴 &\PBS\centering {\bfseries{XOGame}} &{\bfseries{Оптимизация}} &Анализ производительности \\\cline{1-4}
|
||||
\PBS\centering 🟡 &\PBS\centering {\bfseries{AINeurox}} &{\bfseries{Проектирование архитектуры}} &Интерфейс, внутреннее устройство \\\cline{1-4}
|
||||
\PBS\centering 🟡 &\PBS\centering {\bfseries{AINeurox}} &{\bfseries{Документация}} &Описание архитектуры решения, ведение DAIRY.\+md \\\cline{1-4}
|
||||
\PBS\centering 🟡 &\PBS\centering {\bfseries{AINeurox}} &{\bfseries{Logic}} &Реализации внутренних методов \\\cline{1-4}
|
||||
\PBS\centering 🟡 &\PBS\centering {\bfseries{AINeurox}} &{\bfseries{API}} &Реализация внешних методов \\\cline{1-4}
|
||||
\PBS\centering 🟡 &\PBS\centering {\bfseries{AINeurox}} &{\bfseries{Тестирование}} &Написание юнит-\/тестов \\\cline{1-4}
|
||||
\PBS\centering 🟡 &\PBS\centering {\bfseries{AINeurox}} &{\bfseries{Оптимизация}} &Анализ производительности \\\cline{1-4}
|
||||
\PBS\centering 🟢 &\PBS\centering {\bfseries{Android}} &Интеграция &Подключение XOGame к проекту \\\cline{1-4}
|
||||
\PBS\centering 🟢 &\PBS\centering {\bfseries{Android}} &Тестирование &Проверка корректности работы \\\cline{1-4}
|
||||
\end{longtabu}
|
||||
@@ -0,0 +1,11 @@
|
||||
\chapter{Полезные ссылки}
|
||||
\hypertarget{md_USEFULL__LINKS}{}\label{md_USEFULL__LINKS}\index{Полезные ссылки@{Полезные ссылки}}
|
||||
\label{md_USEFULL__LINKS_autotoc_md87}%
|
||||
\Hypertarget{md_USEFULL__LINKS_autotoc_md87}%
|
||||
|
||||
\begin{DoxyItemize}
|
||||
\item {\bfseries{Проверка SSL для felexdev.\+ru\+:}} \href{https://www.ssllabs.com/ssltest/analyze.html?d=felexdev.ru}{\texttt{ https\+://www.\+ssllabs.\+com/ssltest/analyze.\+html?d=felexdev.\+ru}}
|
||||
\item {\bfseries{Проверка SSL для neurox.\+su\+:}} \href{https://www.ssllabs.com/ssltest/analyze.html?d=neurox.su}{\texttt{ https\+://www.\+ssllabs.\+com/ssltest/analyze.\+html?d=neurox.\+su}}
|
||||
\item {\bfseries{Проверка DNS‑записей (MX, SPF, DKIM, DMARC)\+:}} \href{https://mxtoolbox.com/}{\texttt{ https\+://mxtoolbox.\+com/}}
|
||||
\item {\bfseries{Тестирование доставки почты (проверка настроек Postfix)\+:}} \href{https://www.mail-tester.com/}{\texttt{ https\+://www.\+mail-\/tester.\+com/}} \href{https://dkimvalidator.com/}{\texttt{ https\+://dkimvalidator.\+com/}}
|
||||
\end{DoxyItemize}
|
||||
@@ -0,0 +1,224 @@
|
||||
% Handle batch mode
|
||||
% to overcome problems with too many open files
|
||||
\let\mypdfximage\pdfximage\def\pdfximage{\immediate\mypdfximage}
|
||||
\pdfminorversion=7
|
||||
% Set document class depending on configuration
|
||||
\documentclass[twoside]{book}
|
||||
%% moved from doxygen.sty due to workaround for LaTex 2019 version and unmaintained tabu package
|
||||
\usepackage{ifthen}
|
||||
\ifx\requestedLaTeXdate\undefined
|
||||
\usepackage{array}
|
||||
\else
|
||||
\usepackage{array}[=2016-10-06]
|
||||
\fi
|
||||
%%
|
||||
% Packages required by doxygen
|
||||
\makeatletter
|
||||
\providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion}
|
||||
% suppress package identification of infwarerr as it contains the word "warning"
|
||||
\let\@@protected@wlog\protected@wlog
|
||||
\def\protected@wlog#1{\wlog{package info suppressed}}
|
||||
\RequirePackage{infwarerr}
|
||||
\let\protected@wlog\@@protected@wlog
|
||||
\makeatother
|
||||
\IfFormatAtLeastTF{2016/01/01}{}{\usepackage{fixltx2e}} % for \textsubscript
|
||||
\IfFormatAtLeastTF{2015/01/01}{\pdfsuppresswarningpagegroup=1}{}
|
||||
\usepackage{doxygen}
|
||||
\usepackage{graphicx}
|
||||
\usepackage[utf8]{inputenc}
|
||||
\usepackage{makeidx}
|
||||
\PassOptionsToPackage{warn}{textcomp}
|
||||
\usepackage{textcomp}
|
||||
\usepackage[nointegrals]{wasysym}
|
||||
\usepackage{ifxetex}
|
||||
% NLS support packages
|
||||
% Define default fonts
|
||||
% Font selection
|
||||
\usepackage[T1]{fontenc}
|
||||
% set main and monospaced font
|
||||
\usepackage[scaled=.90]{helvet}
|
||||
\usepackage{courier}
|
||||
\renewcommand{\familydefault}{\sfdefault}
|
||||
\doxyallsectionsfont{%
|
||||
\fontseries{bc}\selectfont%
|
||||
\color{darkgray}%
|
||||
}
|
||||
\renewcommand{\DoxyLabelFont}{%
|
||||
\fontseries{bc}\selectfont%
|
||||
\color{darkgray}%
|
||||
}
|
||||
\newcommand{\+}{\discretionary{\mbox{\scriptsize$\hookleftarrow$}}{}{}}
|
||||
% Arguments of doxygenemoji:
|
||||
% 1) ':<text>:' form of the emoji, already LaTeX-escaped
|
||||
% 2) file with the name of the emoji without the .png extension
|
||||
% in case image exist use this otherwise use the ':<text>:' form
|
||||
\newcommand{\doxygenemoji}[2]{%
|
||||
\IfFileExists{./#2.png}{\raisebox{-0.1em}{\includegraphics[height=0.9em]{./#2.png}}}{#1}%
|
||||
}
|
||||
% Page & text layout
|
||||
\usepackage{geometry}
|
||||
\geometry{%
|
||||
a4paper,%
|
||||
top=2.5cm,%
|
||||
bottom=2.5cm,%
|
||||
left=2.5cm,%
|
||||
right=2.5cm%
|
||||
}
|
||||
\usepackage{changepage}
|
||||
% Allow a bit of overflow to go unnoticed by other means
|
||||
\tolerance=750
|
||||
\hfuzz=15pt
|
||||
\hbadness=750
|
||||
\setlength{\emergencystretch}{15pt}
|
||||
\setlength{\parindent}{0cm}
|
||||
\newcommand{\doxynormalparskip}{\setlength{\parskip}{3ex plus 2ex minus 2ex}}
|
||||
\newcommand{\doxytocparskip}{\setlength{\parskip}{1ex plus 0ex minus 0ex}}
|
||||
\doxynormalparskip
|
||||
% Redefine paragraph/subparagraph environments, using sectsty fonts
|
||||
\makeatletter
|
||||
\renewcommand{\paragraph}{%
|
||||
\@startsection{paragraph}{4}{0ex}{-1.0ex}{1.0ex}{%
|
||||
\normalfont\normalsize\bfseries\SS@parafont%
|
||||
}%
|
||||
}
|
||||
\renewcommand{\subparagraph}{%
|
||||
\@startsection{subparagraph}{5}{0ex}{-1.0ex}{1.0ex}{%
|
||||
\normalfont\normalsize\bfseries\SS@subparafont%
|
||||
}%
|
||||
}
|
||||
\makeatother
|
||||
\makeatletter
|
||||
\newcommand\hrulefilll{\leavevmode\leaders\hrule\hskip 0pt plus 1filll\kern\z@}
|
||||
\makeatother
|
||||
% Headers & footers
|
||||
\usepackage{fancyhdr}
|
||||
\pagestyle{fancyplain}
|
||||
\renewcommand{\footrulewidth}{0.4pt}
|
||||
\fancypagestyle{fancyplain}{
|
||||
\fancyhf{}
|
||||
\fancyhead[LE, RO]{\bfseries\thepage}
|
||||
\fancyhead[LO]{\bfseries\rightmark}
|
||||
\fancyhead[RE]{\bfseries\leftmark}
|
||||
\fancyfoot[LO, RE]{\bfseries\scriptsize Generated by Doxygen }
|
||||
}
|
||||
\fancypagestyle{plain}{
|
||||
\fancyhf{}
|
||||
\fancyfoot[LO, RE]{\bfseries\scriptsize Generated by Doxygen }
|
||||
\renewcommand{\headrulewidth}{0pt}
|
||||
}
|
||||
\pagestyle{fancyplain}
|
||||
\renewcommand{\chaptermark}[1]{%
|
||||
\markboth{#1}{}%
|
||||
}
|
||||
\renewcommand{\sectionmark}[1]{%
|
||||
\markright{\thesection\ #1}%
|
||||
}
|
||||
% ToC, LoF, LoT, bibliography, and index
|
||||
% Indices & bibliography
|
||||
\usepackage{natbib}
|
||||
\usepackage[titles]{tocloft}
|
||||
\setcounter{tocdepth}{3}
|
||||
\setcounter{secnumdepth}{5}
|
||||
% creating indexes
|
||||
\makeindex
|
||||
\usepackage{newunicodechar}
|
||||
\makeatletter
|
||||
\def\doxynewunicodechar#1#2{%
|
||||
\@tempswafalse
|
||||
\edef\nuc@tempa{\detokenize{#1}}%
|
||||
\if\relax\nuc@tempa\relax
|
||||
\nuc@emptyargerr
|
||||
\else
|
||||
\edef\@tempb{\expandafter\@car\nuc@tempa\@nil}%
|
||||
\nuc@check
|
||||
\if@tempswa
|
||||
\@namedef{u8:\nuc@tempa}{#2}%
|
||||
\fi
|
||||
\fi
|
||||
}
|
||||
\makeatother
|
||||
\doxynewunicodechar{⁻}{${}^{-}$}% Superscript minus
|
||||
\doxynewunicodechar{²}{${}^{2}$}% Superscript two
|
||||
\doxynewunicodechar{³}{${}^{3}$}% Superscript three
|
||||
% Hyperlinks
|
||||
% Hyperlinks (required, but should be loaded last)
|
||||
\ifpdf
|
||||
\usepackage[pdftex,pagebackref=true]{hyperref}
|
||||
\else
|
||||
\ifxetex
|
||||
\usepackage[pagebackref=true]{hyperref}
|
||||
\else
|
||||
\usepackage[ps2pdf,pagebackref=true]{hyperref}
|
||||
\fi
|
||||
\fi
|
||||
\hypersetup{%
|
||||
colorlinks=true,%
|
||||
linkcolor=blue,%
|
||||
citecolor=blue,%
|
||||
unicode,%
|
||||
pdftitle={My Project},%
|
||||
pdfsubject={}%
|
||||
}
|
||||
% Custom commands used by the header
|
||||
% Custom commands
|
||||
\newcommand{\clearemptydoublepage}{%
|
||||
\newpage{\pagestyle{empty}\cleardoublepage}%
|
||||
}
|
||||
% caption style definition
|
||||
\usepackage{caption}
|
||||
\captionsetup{labelsep=space,justification=centering,font={bf},singlelinecheck=off,skip=4pt,position=top}
|
||||
% in page table of contents
|
||||
\IfFormatAtLeastTF{2023/05/01}{\usepackage[deeplevels]{etoc}}{\usepackage[deeplevels]{etoc_doxygen}}
|
||||
\etocsettocstyle{\doxytocparskip}{\doxynormalparskip}
|
||||
\etocsetlevel{subsubsubsection}{4}
|
||||
\etocsetlevel{subsubsubsubsection}{5}
|
||||
\etocsetlevel{subsubsubsubsubsection}{6}
|
||||
\etocsetlevel{subsubsubsubsubsubsection}{7}
|
||||
\etocsetlevel{paragraph}{8}
|
||||
\etocsetlevel{subparagraph}{9}
|
||||
% prevent numbers overlap the titles in toc
|
||||
\renewcommand{\numberline}[1]{#1~}
|
||||
% End of preamble, now comes the document contents
|
||||
%===== C O N T E N T S =====
|
||||
\begin{document}
|
||||
\raggedbottom
|
||||
% Titlepage & ToC
|
||||
% To avoid duplicate page anchors due to reuse of same numbers for
|
||||
% the index (be it as roman numbers)
|
||||
\hypersetup{pageanchor=false,
|
||||
bookmarksnumbered=true,
|
||||
pdfencoding=unicode
|
||||
}
|
||||
\pagenumbering{alph}
|
||||
\begin{titlepage}
|
||||
\vspace*{7cm}
|
||||
\begin{center}%
|
||||
{\Large My Project}\\
|
||||
\vspace*{1cm}
|
||||
{\large Generated by Doxygen 1.9.8}\\
|
||||
\end{center}
|
||||
\end{titlepage}
|
||||
\clearemptydoublepage
|
||||
\pagenumbering{roman}
|
||||
\tableofcontents
|
||||
\clearemptydoublepage
|
||||
\pagenumbering{arabic}
|
||||
% re-enable anchors again
|
||||
\hypersetup{pageanchor=true}
|
||||
%--- Begin generated contents ---
|
||||
\input{index}
|
||||
\input{md_DIARY}
|
||||
\input{md_PROGRESS}
|
||||
\input{md_README_8old}
|
||||
\input{md_TODO}
|
||||
\input{md_USEFULL__LINKS}
|
||||
%--- End generated contents ---
|
||||
% Index
|
||||
\backmatter
|
||||
\newpage
|
||||
\phantomsection
|
||||
\clearemptydoublepage
|
||||
\addcontentsline{toc}{chapter}{\indexname}
|
||||
\printindex
|
||||
% Required for some languages (in combination with latexdocumentpre from the header)
|
||||
\end{document}
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user